Official reference client implementation for Cumulocity SmartREST on u-blox C027.

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Vincent Wochnik

Files at this revision

API Documentation at this revision

Comitter:
vwochnik
Date:
Thu Oct 23 14:21:26 2014 +0000
Parent:
56:4d6e34f1589d
Child:
58:4cc0ae5a7058
Commit message:
Operation support skeleton

Changed in this revision

DeviceIntegration.cpp Show annotated file Show diff for this revision Revisions of this file
MbedAgent.cpp Show annotated file Show diff for this revision Revisions of this file
MbedAgent.h Show annotated file Show diff for this revision Revisions of this file
operation/OperationSupport.cpp Show annotated file Show diff for this revision Revisions of this file
operation/OperationSupport.h Show annotated file Show diff for this revision Revisions of this file
--- a/DeviceIntegration.cpp	Thu Oct 23 12:59:37 2014 +0000
+++ b/DeviceIntegration.cpp	Thu Oct 23 14:21:26 2014 +0000
@@ -30,7 +30,7 @@
 
     // Create device
     // Usage: 101,<SERIAL/NR>
-    if (!_tpl.add("10,101,POST,/inventory/managedObjects,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,STRING,\"{\"\"name\"\":\"\"Mbed Test Device\"\",\"\"type\"\":\"\"com_ublox_C027_REV-A\"\",\"\"c8y_Hardware\"\":{\"\"revision\"\":\"\"1\"\",\"\"model\"\":\"\"Ublox C027\"\",\"\"serialNumber\"\":\"\"%%\"\"},\"\"c8y_SupportedMeasurements\"\":[\"\"c8y_SignalStrength\"\",\"\"c8y_TemperatureMeasurement\"\",\"\"c8y_AnalogMeasurement\"\",\"\"c8y_MotionMeasurement\"\",\"\"c8y_AnalogMeasurement\"\"],\"\"c8y_RequiredAvailability\"\":{ \"\"responseInterval\"\":15},\"\"c8y_IsDevice\"\":{}}\"\r\n"))
+    if (!_tpl.add("10,101,POST,/inventory/managedObjects,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,STRING,\"{\"\"name\"\":\"\"Mbed Test Device\"\",\"\"type\"\":\"\"com_ublox_C027_REV-A\"\",\"\"c8y_Hardware\"\":{\"\"revision\"\":\"\"1\"\",\"\"model\"\":\"\"Ublox C027\"\",\"\"serialNumber\"\":\"\"%%\"\"},\"\"c8y_SupportedMeasurements\"\":[\"\"c8y_SignalStrength\"\",\"\"c8y_TemperatureMeasurement\"\",\"\"c8y_AnalogMeasurement\"\",\"\"c8y_MotionMeasurement\"\",\"\"c8y_AnalogMeasurement\"\"],\"\"c8y_RequiredAvailability\"\":{ \"\"responseInterval\"\":15},\"\"c8y_IsDevice\"\":{},\"\"com_cumulocity_model_Agent\"\":{}}\"\r\n"))
         return false;
 
     // Get device id
--- a/MbedAgent.cpp	Thu Oct 23 12:59:37 2014 +0000
+++ b/MbedAgent.cpp	Thu Oct 23 14:21:26 2014 +0000
@@ -13,6 +13,7 @@
     _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer()),
     _analogMeasurement(_client, _tpl, _deviceId, _io.analog1(), _io.analog2()),
     _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker()),
+    _operationSupport(_client, _tpl, _deviceId),
     _deviceId(0)
 {
 }
@@ -24,7 +25,8 @@
         (!_temperatureMeasurement.init()) ||
         (!_accelerationMeasurement.init()) ||
         (!_analogMeasurement.init()) ||
-        (!_locationUpdate.init())) {
+        (!_locationUpdate.init()) ||
+        (!_operationSupport.init())) {
         puts("Initialization failed.");
         return false;
     }
@@ -65,6 +67,7 @@
         _accelerationMeasurement.run();
         _analogMeasurement.run();
         _locationUpdate.run();
+        _operationSupport.run();
         
         while (timer.read() < MBED_AGENT_INTERVAL) {
             Thread::yield();
--- a/MbedAgent.h	Thu Oct 23 12:59:37 2014 +0000
+++ b/MbedAgent.h	Thu Oct 23 14:21:26 2014 +0000
@@ -14,10 +14,11 @@
 #include "AccelerationMeasurement.h"
 #include "AnalogMeasurement.h"
 #include "LocationUpdate.h"
+#include "OperationSupport.h"
 
 #define MBED_AGENT_HOST "developer.cumulocity.com"
 #define MBED_AGENT_PORT 80
-#define MBED_AGENT_DEVICE_IDENTIFIER "com_cumulocity_MbedAgent_1.0.5"
+#define MBED_AGENT_DEVICE_IDENTIFIER "com_cumulocity_MbedAgent_1.1.0"
 #define MBED_AGENT_INTERVAL 60.0
 
 class MbedAgent
@@ -44,6 +45,7 @@
     AccelerationMeasurement _accelerationMeasurement;
     AnalogMeasurement _analogMeasurement;
     LocationUpdate _locationUpdate;
+    OperationSupport _operationSupport;
     long _deviceId;
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/operation/OperationSupport.cpp	Thu Oct 23 14:21:26 2014 +0000
@@ -0,0 +1,45 @@
+#include "OperationSupport.h"
+#include "ComposedRecord.h"
+#include "CharValue.h"
+#include "IntegerValue.h"
+
+OperationSupport::OperationSupport(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId) :
+    _client(client),
+    _tpl(tpl),
+    _deviceId(deviceId)
+{
+    _init = false;
+}
+
+bool OperationSupport::init()
+{
+    if (_init)
+        return false;
+    
+    // Get pending operations
+    // USAGE: 110,<DEVICE/ID>
+    if (!_tpl.add("10,110,GET,/devicecontrol/operations?status=PENDING&deviceId=%%&pageSize=100,,application/vnd.com.nsn.cumulocity.operationCollection+json,%%,UNSIGNED,\r\n"))
+        return false;
+
+    // Set operation state
+    // USAGE: 110,<OPERATION/ID>,<STATE>
+    if (!_tpl.add("10,110,PUT,/devicecontrol/operations/%%,application/vnd.com.nsn.cumulocity.operation+json,application/vnd.com.nsn.cumulocity.operation+json,%%,UNSIGNED STRING,\"{\"\"status\"\":\"\"%%\"\"}\"\r\n"))
+        return false;
+
+    // Get operations
+    // Response: 210,<OPERATION/ID>,<STATUS>
+    if (!_tpl.add("11,210,\"$.operations\",,\"$.id\",\"$.status\"\r\n"))
+        return false;
+
+    // Get operation
+    // Response: 211,<OPERATION/ID>,<STATUS>
+    if (!_tpl.add("11,211,,\"$.deviceId\",\"$.id\",\"$.status\"\r\n"))
+        return false;
+
+    _init = true;
+    return true;
+}
+
+bool OperationSupport::run()
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/operation/OperationSupport.h	Thu Oct 23 14:21:26 2014 +0000
@@ -0,0 +1,22 @@
+#ifndef OPERATIONSUPPORT_H
+#define OPERATIONSUPPORT_H
+
+#include "AbstractSmartRest.h"
+#include "SmartRestTemplate.h"
+
+class OperationSupport
+{
+public:
+    OperationSupport(AbstractSmartRest&, SmartRestTemplate&, long&);
+    
+    bool init();
+    bool run();
+
+private:
+    bool _init;
+    long& _deviceId;
+    SmartRestTemplate& _tpl;
+    AbstractSmartRest& _client;
+};
+
+#endif
\ No newline at end of file