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:
Fri Mar 06 11:10:48 2015 +0000
Parent:
82:ca7430f50b2b
Child:
85:5dc5a50e4b06
Commit message:
DisplayInfo: added second line for storing signal quality.

Changed in this revision

DisplayInfo.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
measurement/AccelerationMeasurement.cpp 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/LocationUpdate.cpp 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/TemperatureMeasurement.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/DisplayInfo.h	Fri Mar 06 10:38:03 2015 +0000
+++ b/DisplayInfo.h	Fri Mar 06 11:10:48 2015 +0000
@@ -4,17 +4,26 @@
 class DisplayInfo
 {
 public:
-        DisplayInfo(): firstLine("") {}
+        DisplayInfo(): firstLine(""), secondLine("") {}
         void setFirstLine(const char* p) {
-                if (p) {
-                        strncpy(firstLine, p, sizeof(firstLine)-1);
-                        firstLine[sizeof(firstLine)-1] = '\0';
+                _setLine(firstLine, sizeof(firstLine), p);
+        }
+        const char *getFirstLine() const { return firstLine; }
+        void setSecondLine(const char* p) {
+                _setLine(secondLine, sizeof(secondLine), p);
+        }
+        const char *getSecondLine() const { return secondLine; }
+        virtual ~DisplayInfo() {}
+protected:
+        void _setLine(char *dest, size_t n, const char* src) {
+                if (src) {
+                        strncpy(dest, src, n-1);
+                        dest[n-1] = '\0';
                 }
         }
-        const char *getFirstLine() const { return firstLine; }
-        virtual ~DisplayInfo() {}
 private:
         char firstLine[25];
+        char secondLine[25];
 };
 
 #endif /* DISPLAYINFO_H */
--- a/MbedAgent.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/MbedAgent.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -3,6 +3,8 @@
 #include "logging.h"
 #include "watchdog.h"
 
+bool lastSensorReadingSent=true;
+
 MbedAgent::MbedAgent(DeviceIO& io, MDMSerial& mdm, DeviceInfo& deviceInfo, DeviceMemory& deviceMemory) :
     _io(io),
     _mdm(mdm),
@@ -97,6 +99,7 @@
 void MbedAgent::loop()
 {
     Watchdog wdt;
+    char signal[25] = {0};
     DigitalIn joystickUp(A2);
     DigitalIn joystickDown(A3);
 //    DigitalIn joystickLeft(A4);
@@ -113,6 +116,13 @@
             _mdm.setDebug(3);
             printf("***Enabled debug mode.***\r\n");
         }
+        DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
+        if (p && p->rssi)
+            snprintf(signal, sizeof(signal), "Network: %d dBm", p->rssi);
+        else
+            strncpy(signal, "Network: no coverage", sizeof(signal));
+        _displayInfo.setSecondLine(signal);
+
         _configurationSynchronization.run();
         _signalQualityMeasurement.run();
         _temperatureMeasurement.run();
--- a/measurement/AccelerationMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/measurement/AccelerationMeasurement.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -49,12 +49,6 @@
     
     float data[3] = { 0.0, 0.0, 0.0 };
     _sensor.readData(data);
-    DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
-    char signal[25] = {0};
-    if (p && p->rssi)
-        snprintf(signal, sizeof(signal), "Network: %d dBm", p->rssi);
-    else
-        strncpy(signal, "Network: no coverage", sizeof(signal));
 
 //    if (abs(oldValues[0]-data[0]) <= abs(oldValues[0])*THRESHOLD_PERCENT_ACCE &&
 //        abs(oldValues[1]-data[1]) <= abs(oldValues[1])*THRESHOLD_PERCENT_ACCE &&
@@ -62,7 +56,7 @@
     if (0.15 > abs(data[0]) &&
         0.1 > abs(data[1])) {
         if (sendingTimer.read() < TIME_LIMIT_ACCE) {
-            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine());
             aDebug("Similar acceleration readings found, no sending!\r\n");
             return true;
         } else {
@@ -71,7 +65,7 @@
     }
     char status[27] = {0};
     snprintf(status, 27, "Sending Acc %.1f,%.1f,%.1f", data[0], data[1], data[2]);
-    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine(), status);
 
     ComposedRecord record;
     IntegerValue msgId(106);
--- a/measurement/AnalogMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/measurement/AnalogMeasurement.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -45,17 +45,11 @@
     float data[2] = {0, 0};
     data[0] = _analog1.read()*100;
     data[1] = _analog2.read()*100;
-    DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
-    char signal[25] = {0};
-    if (p && p->rssi)
-        snprintf(signal, sizeof(signal), "Network: %d dBm", p->rssi);
-    else
-        strncpy(signal, "Network: no coverage", sizeof(signal));
         
     if (abs(oldValues[0]-data[0]) <= abs(oldValues[0])*THRESHOLD_PERCENT_ANA &&
         abs(oldValues[1]-data[1]) <= abs(oldValues[1])*THRESHOLD_PERCENT_ANA) {
         if (sendingTimer.read() < TIME_LIMIT_ANA) {
-            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine());
             aDebug("Similar analog readings found, no sending!\r\n");
             return true;
         } else {
@@ -65,7 +59,7 @@
     
     char status[25] = {0};
     snprintf(status, 25, "Sending Poti %.1f,%.1f", data[0], data[1]);
-    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine(), status);
     ComposedRecord record;
     IntegerValue msgId(107);
     IntegerValue devId(_deviceId);
--- a/measurement/LocationUpdate.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/measurement/LocationUpdate.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -57,18 +57,12 @@
     data[0] = position.altitude;
     data[1] = position.latitude;
     data[2] = position.longitude;
-    DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
-    char signal[25] = {0};
-    if (p && p->rssi)
-        snprintf(signal, sizeof(signal), "Network: %d dBm", p->rssi);
-    else
-        strncpy(signal, "Network: no coverage", sizeof(signal));
 
     if (abs(oldValues[0]-data[0]) <= abs(oldValues[0])*THRESHOLD_PERCENT_LOC &&
         abs(oldValues[1]-data[1]) <= abs(oldValues[1])*THRESHOLD_PERCENT_LOC &&
         abs(oldValues[2]-data[2]) <= abs(oldValues[2])*THRESHOLD_PERCENT_LOC) {
         if (sendingTimer.read() < TIME_LIMIT_LOC) {
-            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine());
             aDebug("Similar location readings found, no sending!\r\n");
             return true;
         } else {
@@ -77,7 +71,7 @@
     }
     char status[27] = {0};
     snprintf(status, 27, "Sending GPS %.1f,%.1f,%.1f", data[0], data[1], data[2]);
-    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine(), status);
         
     Aggregator aggregator;
     ComposedRecord record1, record2;
--- a/measurement/SignalQualityMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/measurement/SignalQualityMeasurement.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -45,15 +45,10 @@
         return false;
 
     int data[2] = {signalQuality->rssi, signalQuality->ber};
-    char signal[25] = {0};
-    if (signalQuality && signalQuality->rssi)
-        snprintf(signal, sizeof(signal), "Network: %d dBm", signalQuality->rssi);
-    else
-        strncpy(signal, "Network: no coverage", sizeof(signal));
     if (abs(oldValues[0]-data[0]) <= abs(oldValues[0])*THRESHOLD_PERCENT_SIG &&
         abs(oldValues[1]-data[1]) <= abs(oldValues[1])*THRESHOLD_PERCENT_SIG) {
         if (sendingTimer.read() < TIME_LIMIT_SIG) {
-            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine());
             aDebug("Similar signal readings found, no sending!\r\n");
             return true;
         } else {
@@ -63,7 +58,7 @@
 
     char status[25] = {0};
     snprintf(status, 25, "Sending dBm %d,%d", data[0], data[1]);
-    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine(), status);
     ComposedRecord record;
     IntegerValue msgId(104);
     IntegerValue devId(_deviceId);
--- a/measurement/TemperatureMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
+++ b/measurement/TemperatureMeasurement.cpp	Fri Mar 06 11:10:48 2015 +0000
@@ -46,16 +46,10 @@
 
     float data = 0;
     data = _sensor.temp();
-    DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
-    char signal[25] = {0};
-    if (p && p->rssi)
-        snprintf(signal, sizeof(signal), "Network: %d dBm", p->rssi);
-    else
-        strncpy(signal, "Network: no coverage", sizeof(signal));
 
     if (abs(oldValue-data) <= abs(oldValue)*THRESHOLD_PERCENT_TEMP) {
         if (sendingTimer.read() < TIME_LIMIT_TEMP) {
-            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine());
             aDebug("Similar temperature readings found, no sending!\r\n");
             return true;
         } else {
@@ -65,7 +59,7 @@
 
     char status[25] = {0};
     snprintf(status, 25, "Sending Temp %.2f", data);
-    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), _displayInfo.getSecondLine(), status);
     ComposedRecord record;
     IntegerValue msgId(105);
     IntegerValue devId(_deviceId);