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:
xinlei
Date:
Thu May 07 13:56:19 2015 +0000
Parent:
99:e369fc75c000
Child:
101:dbcd3bc51758
Commit message:
prepare for v2.1rc3.

Changed in this revision

DeviceIntegration.cpp Show annotated file Show diff for this revision Revisions of this file
DeviceIntegration.h 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
config/ConfigSync.cpp Show annotated file Show diff for this revision Revisions of this file
config/ConfigSync.h Show annotated file Show diff for this revision Revisions of this file
measurement/AccelerationMeasurement.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/AccelerationMeasurement.h Show annotated file Show diff for this revision Revisions of this file
measurement/AnalogMeasurement.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/AnalogMeasurement.h Show annotated file Show diff for this revision Revisions of this file
measurement/LocationUpdate.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/LocationUpdate.h Show annotated file Show diff for this revision Revisions of this file
measurement/SignalQualityMeasurement.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/SignalQualityMeasurement.h Show annotated file Show diff for this revision Revisions of this file
measurement/TemperatureMeasurement.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/TemperatureMeasurement.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
--- a/DeviceIntegration.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/DeviceIntegration.cpp	Thu May 07 13:56:19 2015 +0000
@@ -6,8 +6,7 @@
 #include "logging.h"
 
 DeviceIntegration::DeviceIntegration(AbstractSmartRest& client, SmartRestTemplate& tpl,
-    long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _deviceInfo(deviceInfo)
@@ -51,13 +50,12 @@
         return false;
 
     _init = true;
-    _deviceId = 0;
     return true;
 }
 
 bool DeviceIntegration::integrate()
 {
-    if (_deviceId != 0)
+    if (deviceID != 0)
         return false;
 
     // template bootstrapping process
@@ -110,7 +108,7 @@
         aError("Unknown message ID: %d.\n", received.value(0).integerValue());
         return false;
     }
-    _deviceId = received.value(2).integerValue();
+    setDeviceID(received.value(2).integerValue());
     
     return true;
 }
@@ -149,7 +147,7 @@
         return false;
     }
 
-    _deviceId = received.value(2).integerValue();
+    setDeviceID(received.value(2).integerValue());
     return true;
 }
 
@@ -161,9 +159,9 @@
     aInfo("Add global identifier.\n");
 
     IntegerValue msgId(102);
-    IntegerValue deviceId(_deviceId);
+    IntegerValue devId(deviceID);
     CharValue imei(_deviceInfo.imei());
-    if ((!record.add(msgId)) || (!record.add(deviceId)) || (!record.add(imei)))
+    if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(imei)))
         return false;
 
     if (_client.send(record) != SMARTREST_SUCCESS) {
@@ -198,12 +196,12 @@
     ParsedRecord received;
 
     IntegerValue msgId(103);
-    IntegerValue deviceId(_deviceId);
+    IntegerValue devId(deviceID);
     CharValue imei(_deviceInfo.imei());
     CharValue cellId(_deviceInfo.cellId());
     CharValue iccid(_deviceInfo.iccid());
     aInfo("Update Device.\n");
-    if ((!record.add(msgId)) || (!record.add(deviceId)) || (!record.add(imei)) || (!record.add(cellId)) || (!record.add(iccid)))
+    if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(imei)) || (!record.add(cellId)) || (!record.add(iccid)))
         return false;
 
     if (_client.send(record) != SMARTREST_SUCCESS) {
--- a/DeviceIntegration.h	Thu May 07 09:57:55 2015 +0000
+++ b/DeviceIntegration.h	Thu May 07 13:56:19 2015 +0000
@@ -8,7 +8,7 @@
 class DeviceIntegration
 {
 public:
-    DeviceIntegration(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    DeviceIntegration(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
     
     bool init();
     bool integrate();
@@ -21,7 +21,6 @@
 
 private:
     bool _init;
-    long& _deviceId;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
     DeviceInfo& _deviceInfo;
--- a/MbedAgent.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/MbedAgent.cpp	Thu May 07 13:56:19 2015 +0000
@@ -4,19 +4,17 @@
 #include "watchdog.h"
 
 MbedAgent::MbedAgent(DeviceInfo& deviceInfo):
-    _deviceId(0),
-    _client(),
-    _bootstrap(_client, deviceInfo),
-    _integration(_client, _tpl, _deviceId, deviceInfo),
-    _configSync(_client, _tpl, _deviceId),
-    _signalQualityMeasurement(_client, _tpl, _deviceId, deviceInfo),
-    _temperatureMeasurement(_client, _tpl, _deviceId, deviceInfo),
-    _accelerationMeasurement(_client, _tpl, _deviceId, deviceInfo),
-    _analogMeasurement(_client, _tpl, _deviceId, deviceInfo),
-    _locationUpdate(_client, _tpl, _deviceId, deviceInfo),
-    pool(),
-    _operationSupport(_client, _tpl, _deviceId, pool)
+    _client(), tpl(), _bootstrap(_client, deviceInfo), 
+    _integration(_client, _tpl, deviceInfo), lcdThirdLineBlank(true), 
+    signal(), temp(), poti(), gps(), acc(), conf(), sock(),
+    pool(), _operationSupport(_client, _tpl, pool)
 {
+    reporters[0] = &signal;
+    reporters[1] = &temp;
+    reporters[2] = &poti;
+    reporters[3] = &gps;
+    reporters[4] = &acc;
+    reporters[5] = &conf;
 }
 
 bool MbedAgent::init()
@@ -26,30 +24,6 @@
         LCDDisplay::inst().setLines("Integrate init fail");
         flag = false;
     }
-    if (!_configSync.init()) {
-        LCDDisplay::inst().setLines("ConfigSync init fail");
-        flag = false;
-    }
-    if (!_signalQualityMeasurement.init()) {
-        LCDDisplay::inst().setLines("Signal init fail");
-        flag = false;
-    }
-    if (!_temperatureMeasurement.init()) {
-        LCDDisplay::inst().setLines("Temp init fail");
-        flag = false;
-    }
-    if (!_accelerationMeasurement.init()) {
-        LCDDisplay::inst().setLines("Acc init fail");
-        flag = false;
-    }
-    if (!_analogMeasurement.init()) {
-        LCDDisplay::inst().setLines("Analog init fail");
-        flag = false;
-    }
-    if (!_locationUpdate.init()) {
-        LCDDisplay::inst().setLines("Location init fail");
-        flag = false;
-    }
     if (!_operationSupport.init()) {
         LCDDisplay::inst().setLines("Operation init fail");
         flag = false;
--- a/MbedAgent.h	Thu May 07 09:57:55 2015 +0000
+++ b/MbedAgent.h	Thu May 07 13:56:19 2015 +0000
@@ -1,23 +1,26 @@
 #ifndef MBEDAGENT_H
 #define MBEDAGENT_H
 
-#include <stddef.h>
 #include "SmartRest.h"
 #include "SmartRestTemplate.h"
 #include "DeviceInfo.h"
 #include "DeviceBootstrap.h"
 #include "DeviceIntegration.h"
+
+#include "Signal.h"
+#include "Temperature.h"
+#include "Location.h"
+#include "Potentiometer.h"
+#include "Acceleration.h"
 #include "ConfigSync.h"
-#include "SignalQualityMeasurement.h"
-#include "TemperatureMeasurement.h"
-#include "AccelerationMeasurement.h"
-#include "AnalogMeasurement.h"
-#include "LocationUpdate.h"
+
 #include "OperationSupport.h"
 #include "SmartRestConf.h"
 #include "PollThread.h"
 #include "ReportThread.h"
 
+const size_t N = 6;
+
 class MbedAgent
 {
 public:
@@ -28,17 +31,21 @@
     void loop();
 
 private:
-    long _deviceId;
     SmartRest _client;
-    SmartRestTemplate _tpl;
+    SmartRestTemplate tpl;
     DeviceBootstrap _bootstrap;
     DeviceIntegration _integration;
-    ConfigSync _configSync;
-    SignalQualityMeasurement _signalQualityMeasurement;
-    TemperatureMeasurement _temperatureMeasurement;
-    AccelerationMeasurement _accelerationMeasurement;
-    AnalogMeasurement _analogMeasurement;
-    LocationUpdate _locationUpdate;
+    bool lcdThirdLineBlank;
+    Signal signal;
+    Temperature temp;
+    Potentiometer poti;
+    Location gps;
+    Acceleration acc;
+    ConfigSync conf;
+    char buf[SMARTREST_SIZE];
+    char line[DISPLAY_LEN];
+    AbstractReporter *reporters[N];
+    SmartRestSock sock;
     OperationPool pool;
     OperationSupport _operationSupport;
 };
--- a/config/ConfigSync.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/config/ConfigSync.cpp	Thu May 07 13:56:19 2015 +0000
@@ -7,13 +7,11 @@
 #include "logging.h"
 
 ConfigSync::ConfigSync(
-    AbstractSmartRest& client, SmartRestTemplate& tpl,
-    long& deviceId) :
+    AbstractSmartRest& client, SmartRestTemplate& tpl) :
     _init (false),
     _changed (false),
     _tpl(tpl),
     _client(client),
-    _deviceId(deviceId),
     _deviceConfiguration(),
     _configurationProperties(_deviceConfiguration)
 {
--- a/config/ConfigSync.h	Thu May 07 09:57:55 2015 +0000
+++ b/config/ConfigSync.h	Thu May 07 13:56:19 2015 +0000
@@ -8,7 +8,7 @@
 class ConfigSync
 {
 public:
-    ConfigSync(AbstractSmartRest&, SmartRestTemplate&, long&);
+    ConfigSync(AbstractSmartRest&, SmartRestTemplate&);
     
     bool init();
     bool integrate();
@@ -26,7 +26,6 @@
     bool _changed;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
-    long& _deviceId;
     DeviceConfiguration _deviceConfiguration;
     ConfigurationProperties _configurationProperties;
 };
--- a/measurement/AccelerationMeasurement.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/AccelerationMeasurement.cpp	Thu May 07 13:56:19 2015 +0000
@@ -12,8 +12,7 @@
 #define TIME_LIMIT_ACCE 900          
 
 AccelerationMeasurement::AccelerationMeasurement(AbstractSmartRest& client,
-    SmartRestTemplate& tpl, long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    SmartRestTemplate& tpl, DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _sensor(SDA,SCL),
@@ -31,7 +30,7 @@
     if (_init)
         return false;
     
-    // Insert measurement
+    // Insert measurement Acceleration
     // USAGE: 106,<DEVICE/ID>,<X>,<Y>,<Z>
     if (!_tpl.add("10,106,POST,/measurement/measurements,application/vnd.com.nsn.cumulocity.measurement+json,application/vnd.com.nsn.cumulocity.measurement+json,%%,NOW UNSIGNED NUMBER NUMBER NUMBER,\"{\"\"time\"\":\"\"%%\"\",\"\"source\"\":{\"\"id\"\":\"\"%%\"\"},\"\"type\"\":\"\"c8y_MotionMeasurement\"\",\"\"c8y_MotionMeasurement\"\":{\"\"x\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m/s^2\"\"},\"\"y\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m/s^2\"\"},\"\"z\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m/s^2\"\"}}}\"\r\n"))
         return false;
@@ -72,7 +71,7 @@
 
     ComposedRecord record;
     IntegerValue msgId(106);
-    IntegerValue devId(_deviceId);
+    IntegerValue devId(deviceID);
     FloatValue xValue(data[0], 2);
     FloatValue yValue(data[1], 2);
     FloatValue zValue(data[2], 2);
--- a/measurement/AccelerationMeasurement.h	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/AccelerationMeasurement.h	Thu May 07 13:56:19 2015 +0000
@@ -9,7 +9,7 @@
 class AccelerationMeasurement
 {
 public:
-    AccelerationMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    AccelerationMeasurement(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
     
     bool init();
     bool run();
--- a/measurement/AnalogMeasurement.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/AnalogMeasurement.cpp	Thu May 07 13:56:19 2015 +0000
@@ -14,8 +14,7 @@
 AnalogIn _analog2(A1);
 
 AnalogMeasurement::AnalogMeasurement(AbstractSmartRest& client,
-    SmartRestTemplate& tpl, long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    SmartRestTemplate& tpl, DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _deviceInfo(deviceInfo)
@@ -64,7 +63,7 @@
     LCDDisplay::inst().setThirdLine(status);
     ComposedRecord record;
     IntegerValue msgId(107);
-    IntegerValue devId(_deviceId);
+    IntegerValue devId(deviceID);
     FloatValue analog1(data[0], 1);
     FloatValue analog2(data[1], 1);
     if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(analog1)) || (!record.add(analog2)))
--- a/measurement/AnalogMeasurement.h	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/AnalogMeasurement.h	Thu May 07 13:56:19 2015 +0000
@@ -9,14 +9,13 @@
 class AnalogMeasurement
 {
 public:
-    AnalogMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    AnalogMeasurement(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
     
     bool init();
     bool run();
 
 private:
     bool _init;
-    long& _deviceId;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
     float oldValues[2];
--- a/measurement/LocationUpdate.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/LocationUpdate.cpp	Thu May 07 13:56:19 2015 +0000
@@ -9,11 +9,10 @@
 
 #define THRESHOLD_PERCENT_LOC 0.05       // Percentage cut-off for avoiding sending similar acceleration sensor data.
 // Time interval for forcing a sending even if analog sensor readings are constantly similar (in seconds).
-#define TIME_LIMIT_LOC 900               
+#define TIME_LIMIT_LOC 900
 
 LocationUpdate::LocationUpdate(AbstractSmartRest& client, SmartRestTemplate& tpl,
-    long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _gpsTracker(),
@@ -74,7 +73,7 @@
     ComposedRecord record1, record2;
     IntegerValue msgId1(108);
     IntegerValue msgId2(109);
-    IntegerValue devId(_deviceId);
+    IntegerValue devId(deviceID);
     FloatValue altitude(position.altitude, 2);
     FloatValue latitude(position.latitude, 6);
     FloatValue longitude(position.longitude, 6);
--- a/measurement/LocationUpdate.h	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/LocationUpdate.h	Thu May 07 13:56:19 2015 +0000
@@ -9,14 +9,13 @@
 class LocationUpdate
 {
 public:
-    LocationUpdate(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    LocationUpdate(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
     
     bool init();
     bool run();
 
 private:
     bool _init;
-    long& _deviceId;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
     GPSTracker _gpsTracker;
--- a/measurement/SignalQualityMeasurement.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/SignalQualityMeasurement.cpp	Thu May 07 13:56:19 2015 +0000
@@ -11,8 +11,7 @@
 #define TIME_LIMIT_SIG 900               
 
 SignalQualityMeasurement::SignalQualityMeasurement(AbstractSmartRest& client, 
-    SmartRestTemplate& tpl, long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    SmartRestTemplate& tpl, DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _deviceInfo(deviceInfo)
@@ -70,7 +69,7 @@
     LCDDisplay::inst().setThirdLine(status);
     ComposedRecord record;
     IntegerValue msgId(104);
-    IntegerValue devId(_deviceId);
+    IntegerValue devId(deviceID);
     IntegerValue rssi(signalQuality->rssi);
     IntegerValue ber(signalQuality->ber);
     if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(rssi)) || (!record.add(ber)))
--- a/measurement/SignalQualityMeasurement.h	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/SignalQualityMeasurement.h	Thu May 07 13:56:19 2015 +0000
@@ -8,14 +8,13 @@
 class SignalQualityMeasurement
 {
 public:
-    SignalQualityMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    SignalQualityMeasurement(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
     
     bool init();
     bool run();
 
 private:
     bool _init;
-    long& _deviceId;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
     DeviceInfo& _deviceInfo;
--- a/measurement/TemperatureMeasurement.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/TemperatureMeasurement.cpp	Thu May 07 13:56:19 2015 +0000
@@ -11,8 +11,7 @@
 #define TIME_LIMIT_TEMP 900               
 
 TemperatureMeasurement::TemperatureMeasurement(AbstractSmartRest& client,
-    SmartRestTemplate& tpl, long& deviceId, DeviceInfo& deviceInfo) :
-    _deviceId(deviceId),
+    SmartRestTemplate& tpl, DeviceInfo& deviceInfo) :
     _tpl(tpl),
     _client(client),
     _sensor(D14,D15),
@@ -62,7 +61,7 @@
     LCDDisplay::inst().setThirdLine(status);
     ComposedRecord record;
     IntegerValue msgId(105);
-    IntegerValue devId(_deviceId);
+    IntegerValue devId(deviceID);
     FloatValue temperature(data, 1);
     if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(temperature)))
         return false;
--- a/measurement/TemperatureMeasurement.h	Thu May 07 09:57:55 2015 +0000
+++ b/measurement/TemperatureMeasurement.h	Thu May 07 13:56:19 2015 +0000
@@ -9,14 +9,13 @@
 class TemperatureMeasurement
 {
 public:
-    TemperatureMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&);
+    TemperatureMeasurement(AbstractSmartRest&, SmartRestTemplate&, DeviceInfo&);
 
     bool init();
     bool run();
 
 private:
     bool _init, _open;
-    long& _deviceId;
     SmartRestTemplate& _tpl;
     AbstractSmartRest& _client;
     LM75B _sensor;
--- a/operation/OperationSupport.cpp	Thu May 07 09:57:55 2015 +0000
+++ b/operation/OperationSupport.cpp	Thu May 07 13:56:19 2015 +0000
@@ -96,10 +96,9 @@
 bool OperationSupport::requestPendingOperations()
 {
     IntegerValue msgId(110);
-    IntegerValue deviceId(_deviceId);
     ComposedRecord record;
 
-    if ((!record.add(msgId)) || (!record.add(deviceId)))
+    if (!record.add(msgId) || !record.add(IntegerValue(deviceID)))
         return false;
     else if (_client.send(record) != SMARTREST_SUCCESS) {
         _client.stop();