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:
Mon Feb 15 09:49:35 2016 +0000
Parent:
136:94add01b668c
Child:
138:1e37ea2f2357
Commit message:
watchdog workaround for mobile connection lost after 24 hours.

Changed in this revision

C027_Support.lib 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
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/Acceleration.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/Acceleration.h Show annotated file Show diff for this revision Revisions of this file
measurement/Location.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/Location.h Show annotated file Show diff for this revision Revisions of this file
measurement/Potentiometer.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/Potentiometer.h Show annotated file Show diff for this revision Revisions of this file
measurement/Signal.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/Signal.h Show annotated file Show diff for this revision Revisions of this file
measurement/Temperature.cpp Show annotated file Show diff for this revision Revisions of this file
measurement/Temperature.h Show annotated file Show diff for this revision Revisions of this file
util/AbstractReporter.h Show annotated file Show diff for this revision Revisions of this file
--- a/C027_Support.lib	Mon Aug 10 14:20:40 2015 +0000
+++ b/C027_Support.lib	Mon Feb 15 09:49:35 2016 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/xinlei/code/C027_Support/#0c2bef7cca88
+http://developer.mbed.org/users/xinlei/code/C027_Support/#27043e7c9de3
--- a/MbedAgent.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/MbedAgent.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -99,21 +99,25 @@
     pollThread.setChannel(deviceID);
 
     Watchdog wdt;
-    wdt.kick(60.0);    // set a 60.0 seconds watchdog
+    wdt.kick(300.0);    // set a 60.0 seconds watchdog
     while (true) {
         int l = 0;
+        bool flag = false;
         for (size_t i = 0; i < N; ++i) {
 //            if (reporters[i] == &ConfigSync::inst()) {
             int l2 = reporters[i]->read(buf2+l, sizeof(buf2)-l, status, DISPLAY_LEN);
-            if (l2) { // Refresh LCD display needed
+            if (l2 < 0) {
+                flag |= reporters[i] == &signal;
+            } else if (l2 > 0) { // Refresh LCD display needed
+                l += l2;
                 LCDDisplay::inst().setThirdLine(status);
+                lcdThirdLineBlank = false;
                 Thread::wait(400);
-            } else if (!lcdThirdLineBlank && !l2) { // Clear LCD display needed
+            } else if (!lcdThirdLineBlank) { // Clear LCD display needed
                 LCDDisplay::inst().setThirdLine("");
+                lcdThirdLineBlank = true;
                 Thread::wait(100);
             }
-            lcdThirdLineBlank = !l2;
-            l += l2;
 //            }
         }
         if (l) {
@@ -123,6 +127,7 @@
             if (l < 0)
                 aWarning("%s\n", status);
         }
-        wdt.kick();    // reset watchdog timer
+        if (!flag)
+            wdt.kick();    // reset watchdog timer
     }
 }
\ No newline at end of file
--- a/config/ConfigSync.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/config/ConfigSync.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -22,7 +22,7 @@
                 return false;
 }
 
-size_t ConfigSync::read(char *buf, size_t maxLen, char *status, size_t num)
+int ConfigSync::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "130,%ld,\"%s\",%.*s\r\n";
         int l = 0;
--- a/config/ConfigSync.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/config/ConfigSync.h	Mon Feb 15 09:49:35 2016 +0000
@@ -18,7 +18,7 @@
                 return _ref;
         }
         virtual const char* name() const { return "Conf"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
         bool updateConfiguration(const char*);
 protected:
         void resetConfiguration();
--- a/measurement/Acceleration.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Acceleration.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -21,7 +21,7 @@
                 return true;
 }
 
-size_t Acceleration::read(char *buf, size_t maxLen, char *status, size_t num)
+int Acceleration::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "106,%ld,%f,%f,%f\r\n";
         if (!deviceReady)
--- a/measurement/Acceleration.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Acceleration.h	Mon Feb 15 09:49:35 2016 +0000
@@ -20,7 +20,7 @@
                 return deviceReady;
         }
         virtual const char* name() const { return "Acc"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
 private:
         bool deviceReady;
         MMA7660 sensor;
--- a/measurement/Location.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Location.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -18,7 +18,7 @@
                 return true;
 }
 
-size_t Location::read(char *buf, size_t maxLen, char *status, size_t num)
+int Location::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "108,%ld,%.2f,%.6f,%.6f\r\n109,%ld,%.2f,%.6f,%.6f";
         GPSTracker::Position pos;
--- a/measurement/Location.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Location.h	Mon Feb 15 09:49:35 2016 +0000
@@ -17,7 +17,7 @@
         virtual ~Location() {}
         virtual bool init() { return true; }
         virtual const char* name() const { return "GPS"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
 private:
         GPSTracker gpsTracker;
         float oldValues[3];
--- a/measurement/Potentiometer.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Potentiometer.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -21,7 +21,7 @@
                 return true;
 }
 
-size_t Potentiometer::read(char *buf, size_t maxLen, char *status, size_t num)
+int Potentiometer::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "107,%ld,%f,%f\r\n";
         float data[2] = {0, 0};
--- a/measurement/Potentiometer.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Potentiometer.h	Mon Feb 15 09:49:35 2016 +0000
@@ -15,7 +15,7 @@
         virtual ~Potentiometer() {}
         virtual bool init() { return true; }
         virtual const char* name() const { return "Poti"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
 private:
         float oldValues[2];
         Timer timer;
--- a/measurement/Signal.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Signal.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -19,7 +19,7 @@
                 return true;
 }
 
-size_t Signal::read(char *buf, size_t maxLen, char *status, size_t num)
+int Signal::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "104,%ld,%d,%d\r\n";
         static char signal[27] = {0};
@@ -32,8 +32,8 @@
         if (strcmp(LCDDisplay::inst().getSecondLine(), signal)) {
                 LCDDisplay::inst().setSecondLine(signal);
         }
-        if (p == NULL)
-                return 0;
+        if (p == NULL || p->rssi == 0)
+                return -1;
 
         int data[2] = { p->rssi, p->ber };
         float t_interval = timer.read();
--- a/measurement/Signal.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Signal.h	Mon Feb 15 09:49:35 2016 +0000
@@ -16,7 +16,7 @@
         virtual ~Signal() {}
         virtual bool init() { return true; }
         virtual const char* name() const { return "dBm"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
 private:
         int oldValues[2];
         DeviceInfo& deviceInfo;
--- a/measurement/Temperature.cpp	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Temperature.cpp	Mon Feb 15 09:49:35 2016 +0000
@@ -16,7 +16,7 @@
                 return true;
 }
 
-size_t Temperature::read(char *buf, size_t maxLen, char *status, size_t num)
+int Temperature::read(char *buf, size_t maxLen, char *status, size_t num)
 {
         static const char *fmt = "105,%ld,%f\r\n";
         if (!deviceReady)
--- a/measurement/Temperature.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/measurement/Temperature.h	Mon Feb 15 09:49:35 2016 +0000
@@ -18,7 +18,7 @@
                 return deviceReady;
         }
         virtual const char* name() const { return "Temp"; }
-        virtual size_t read(char*, size_t, char*, size_t);
+        virtual int read(char*, size_t, char*, size_t);
 private:
         bool deviceReady;
         float oldValue;
--- a/util/AbstractReporter.h	Mon Aug 10 14:20:40 2015 +0000
+++ b/util/AbstractReporter.h	Mon Feb 15 09:49:35 2016 +0000
@@ -19,9 +19,9 @@
            \param status  a short summary of the report.
                           Pass NULL if the status is not interested.
            \param num  maximum length of status.
-           \return  number of characters written to buf, 0 means no report.
+           \return  number of characters written to buf, 0 means no report, -1 means error
          */
-        virtual size_t read(char* buf, size_t maxLen,
+        virtual int read(char* buf, size_t maxLen,
                             char* status, size_t num) = 0;
 };