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
Revision 84:3c8ceb12b773, committed 2015-03-06
- 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
--- 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);