Own fork of MbedSmartRestMain

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

Files at this revision

API Documentation at this revision

Comitter:
xinlei
Date:
Fri Mar 06 10:38:03 2015 +0000
Parent:
81:4a7761914901
Child:
83:3c8ceb12b773
Commit message:
Threshold values tuning for avoiding sending unnecessary sensor readings.

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
MbedAgent.h Show annotated file Show diff for this revision Revisions of this file
MbedSmartRest.lib 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/OperationExecutor.cpp Show annotated file Show diff for this revision Revisions of this file
operation/OperationExecutor.h Show annotated file Show diff for this revision Revisions of this file
operation/OperationStore.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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DisplayInfo.h	Fri Mar 06 10:38:03 2015 +0000
@@ -0,0 +1,20 @@
+#ifndef DISPLAYINFO_H
+#define DISPLAYINFO_H
+#include <string.h>
+class DisplayInfo
+{
+public:
+        DisplayInfo(): firstLine("") {}
+        void setFirstLine(const char* p) {
+                if (p) {
+                        strncpy(firstLine, p, sizeof(firstLine)-1);
+                        firstLine[sizeof(firstLine)-1] = '\0';
+                }
+        }
+        const char *getFirstLine() const { return firstLine; }
+        virtual ~DisplayInfo() {}
+private:
+        char firstLine[25];
+};
+
+#endif /* DISPLAYINFO_H */
--- a/MbedAgent.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/MbedAgent.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -12,13 +12,14 @@
     _client(MBED_AGENT_HOST, MBED_AGENT_PORT, MBED_AGENT_DEVICE_IDENTIFIER, mdm),
     _bootstrap(_client, _io, _deviceInfo, _deviceMemory),
     _integration(_client, _tpl, _deviceId, _deviceInfo),
+    _displayInfo(),
     _configurationSynchronization(_client, _tpl, _deviceId, _deviceMemory, _deviceConfiguration, _configurationProperties),
-    _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo, io, _bootstrap),
-    _temperatureMeasurement(_client, _tpl, _deviceId, _io.temperatureSensor(), io, deviceInfo, _bootstrap),
-    _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer(), io, deviceInfo, _bootstrap),
-    _analogMeasurement(_client, _tpl, _deviceId, _io.analog1(), _io.analog2(), io, deviceInfo, _bootstrap),
-    _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker(), io, deviceInfo, _bootstrap),
-    _operationSupport(_client, _tpl, _deviceId, _configurationSynchronization, _io),
+    _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo, io, _displayInfo),
+    _temperatureMeasurement(_client, _tpl, _deviceId, _io.temperatureSensor(), io, deviceInfo, _displayInfo),
+    _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer(), io, deviceInfo, _displayInfo),
+    _analogMeasurement(_client, _tpl, _deviceId, _io.analog1(), _io.analog2(), io, deviceInfo, _displayInfo),
+    _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker(), io, deviceInfo, _displayInfo),
+    _operationSupport(_client, _tpl, _deviceId, _configurationSynchronization, _io, _displayInfo),
     _deviceId(0)
 {
 }
@@ -82,6 +83,12 @@
     snprintf(status, sizeof(status), "ID: %ld", _deviceId);
     _io.lcdPrint("Connected", status);
 
+    char tenant[25];
+    const char* user= _bootstrap.username();
+    int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
+    len = len <= 25 ? len : 25;
+    snprintf(tenant, len, "Tenant: %s", user);
+    _displayInfo.setFirstLine(tenant);
     loop();
 
     return true;
--- a/MbedAgent.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/MbedAgent.h	Fri Mar 06 10:38:03 2015 +0000
@@ -47,6 +47,7 @@
     SmartRestTemplate _tpl;
     DeviceBootstrap _bootstrap;
     DeviceIntegration _integration;
+    DisplayInfo _displayInfo;
     ConfigurationSynchronization _configurationSynchronization;
     SignalQualityMeasurement _signalQualityMeasurement;
     TemperatureMeasurement _temperatureMeasurement;
--- a/MbedSmartRest.lib	Wed Mar 04 14:02:39 2015 +0000
+++ b/MbedSmartRest.lib	Fri Mar 06 10:38:03 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/xinlei/code/MbedSmartRest/#b3a4b4bdfc59
+http://developer.mbed.org/users/xinlei/code/MbedSmartRest/#16192696c106
--- a/measurement/AccelerationMeasurement.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/AccelerationMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -6,19 +6,19 @@
 #include "MbedClient.h"
 #include "logging.h"
 
-#define THRESHOLD_PERCENT_ACCE 0.05       // Percentage cut-off for avoiding sending similar acceleration sensor data.
+#define THRESHOLD_PERCENT_ACCE 0.15       // Percentage cut-off for avoiding sending similar acceleration sensor data.
 // Time interval for forcing a sending even if acceleration sensor readings are constantly similar (in seconds).
 #define TIME_LIMIT_ACCE 900          
 
 AccelerationMeasurement::AccelerationMeasurement(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, 
-    MMA7660& sensor, DeviceIO& io, DeviceInfo& deviceInfo, DeviceBootstrap& bootstrap) :
+    MMA7660& sensor, DeviceIO& io, DeviceInfo& deviceInfo, DisplayInfo& displayInfo) :
     _client(client),
     _tpl(tpl),
     _deviceId(deviceId),
     _sensor(sensor),
     _io(io),
     _deviceInfo(deviceInfo),
-    _bootstrap(bootstrap)
+    _displayInfo(displayInfo)
 {
     _init = false;
     oldValues[0] = 0;
@@ -47,16 +47,6 @@
     if (!_test)
         return false;
     
-    static char tenant[25];
-    static bool firstTime = true;
-    if (firstTime) {
-        firstTime = false;
-        const char* user= _bootstrap.username();
-        int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
-        len = len <= 25 ? len : 25;
-        snprintf(tenant, len, "Tenant: %s", user);
-    }
-
     float data[3] = { 0.0, 0.0, 0.0 };
     _sensor.readData(data);
     DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
@@ -66,11 +56,13 @@
     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 &&
-        abs(oldValues[2]-data[2]) <= abs(oldValues[2])*THRESHOLD_PERCENT_ACCE) {
+//    if (abs(oldValues[0]-data[0]) <= abs(oldValues[0])*THRESHOLD_PERCENT_ACCE &&
+//        abs(oldValues[1]-data[1]) <= abs(oldValues[1])*THRESHOLD_PERCENT_ACCE &&
+//        abs(oldValues[2]-data[2]) <= abs(oldValues[2])*THRESHOLD_PERCENT_ACCE) {
+    if (0.15 > abs(data[0]) &&
+        0.1 > abs(data[1])) {
         if (sendingTimer.read() < TIME_LIMIT_ACCE) {
-            _io.lcdPrint(tenant, signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
             aDebug("Similar acceleration readings found, no sending!\r\n");
             return true;
         } else {
@@ -79,7 +71,7 @@
     }
     char status[27] = {0};
     snprintf(status, 27, "Sending Acc %.1f,%.1f,%.1f", data[0], data[1], data[2]);
-    _io.lcdPrint(tenant, signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
 
     ComposedRecord record;
     IntegerValue msgId(106);
--- a/measurement/AccelerationMeasurement.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/AccelerationMeasurement.h	Fri Mar 06 10:38:03 2015 +0000
@@ -6,12 +6,12 @@
 #include "MMA7660.h"
 #include "DeviceIO.h"
 #include "DeviceInfo.h"
-#include "DeviceBootstrap.h"
+#include "DisplayInfo.h"
 
 class AccelerationMeasurement
 {
 public:
-    AccelerationMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, MMA7660&, DeviceIO&, DeviceInfo&, DeviceBootstrap&);
+    AccelerationMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, MMA7660&, DeviceIO&, DeviceInfo&, DisplayInfo&);
     
     bool init();
     bool run();
@@ -26,7 +26,7 @@
     Timer sendingTimer;
     DeviceIO& _io;
     DeviceInfo& _deviceInfo;
-    DeviceBootstrap& _bootstrap;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/measurement/AnalogMeasurement.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/AnalogMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -10,7 +10,7 @@
 #define TIME_LIMIT_ANA 900               
 
 AnalogMeasurement::AnalogMeasurement(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, AnalogIn& analog1,
-    AnalogIn& analog2, DeviceIO& io, DeviceInfo& deviceInfo, DeviceBootstrap& bootstrap) :
+    AnalogIn& analog2, DeviceIO& io, DeviceInfo& deviceInfo, DisplayInfo& displayInfo) :
     _client(client),
     _tpl(tpl),
     _deviceId(deviceId),
@@ -18,7 +18,7 @@
     _analog2(analog2),
     _io(io),
     _deviceInfo(deviceInfo),
-   _bootstrap(bootstrap)
+    _displayInfo(displayInfo)
 {
     _init = false;
     oldValues[0] = 0;
@@ -42,16 +42,6 @@
 
 bool AnalogMeasurement::run()
 {
-    static char tenant[25];
-    static bool firstTime = true;
-    if (firstTime) {
-        firstTime = false;
-        const char* user= _bootstrap.username();
-        int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
-        len = len <= 25 ? len : 25;
-        snprintf(tenant, len, "Tenant: %s", user);
-    }
-
     float data[2] = {0, 0};
     data[0] = _analog1.read()*100;
     data[1] = _analog2.read()*100;
@@ -65,7 +55,7 @@
     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(tenant, signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
             aDebug("Similar analog readings found, no sending!\r\n");
             return true;
         } else {
@@ -75,7 +65,7 @@
     
     char status[25] = {0};
     snprintf(status, 25, "Sending Poti %.1f,%.1f", data[0], data[1]);
-    _io.lcdPrint(tenant, signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
     ComposedRecord record;
     IntegerValue msgId(107);
     IntegerValue devId(_deviceId);
--- a/measurement/AnalogMeasurement.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/AnalogMeasurement.h	Fri Mar 06 10:38:03 2015 +0000
@@ -6,12 +6,12 @@
 #include "mbed.h"
 #include "DeviceIO.h"
 #include "DeviceInfo.h"
-#include "DeviceBootstrap.h"
+#include "DisplayInfo.h"
 
 class AnalogMeasurement
 {
 public:
-    AnalogMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, AnalogIn&, AnalogIn&, DeviceIO&, DeviceInfo&, DeviceBootstrap&);
+    AnalogMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, AnalogIn&, AnalogIn&, DeviceIO&, DeviceInfo&, DisplayInfo&);
     
     bool init();
     bool run();
@@ -27,7 +27,7 @@
     Timer sendingTimer;
     DeviceIO& _io;
     DeviceInfo& _deviceInfo;
-    DeviceBootstrap& _bootstrap;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/measurement/LocationUpdate.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/LocationUpdate.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -11,14 +11,14 @@
 #define TIME_LIMIT_LOC 900               
 
 LocationUpdate::LocationUpdate(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, GPSTracker& gpsTracker, 
-    DeviceIO& io, DeviceInfo& deviceInfo, DeviceBootstrap& bootstrap) :
+    DeviceIO& io, DeviceInfo& deviceInfo, DisplayInfo& displayInfo) :
     _client(client),
     _tpl(tpl),
     _deviceId(deviceId),
     _gpsTracker(gpsTracker),
     _io(io),
     _deviceInfo(deviceInfo),
-    _bootstrap(bootstrap)
+    _displayInfo(displayInfo)
 {
     _init = false;
     oldValues[0] = 0;
@@ -53,15 +53,6 @@
         aError("No GPS data available.\r\n");
         return false;
     }
-    static char tenant[25];
-    static bool firstTime = true;
-    if (firstTime) {
-        firstTime = false;
-        const char* user= _bootstrap.username();
-        int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
-        len = len <= 25 ? len : 25;
-        snprintf(tenant, len, "Tenant: %s", user);
-    }
     float data[3] = { 0.0, 0.0, 0.0 };
     data[0] = position.altitude;
     data[1] = position.latitude;
@@ -77,7 +68,7 @@
         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(tenant, signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
             aDebug("Similar location readings found, no sending!\r\n");
             return true;
         } else {
@@ -86,7 +77,7 @@
     }
     char status[27] = {0};
     snprintf(status, 27, "Sending GPS %.1f,%.1f,%.1f", data[0], data[1], data[2]);
-    _io.lcdPrint(tenant, signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
         
     Aggregator aggregator;
     ComposedRecord record1, record2;
--- a/measurement/LocationUpdate.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/LocationUpdate.h	Fri Mar 06 10:38:03 2015 +0000
@@ -6,12 +6,12 @@
 #include "GPSTracker.h"
 #include "DeviceIO.h"
 #include "DeviceInfo.h"
-#include "DeviceBootstrap.h"
+#include "DisplayInfo.h"
 
 class LocationUpdate
 {
 public:
-    LocationUpdate(AbstractSmartRest&, SmartRestTemplate&, long&, GPSTracker&, DeviceIO&, DeviceInfo&, DeviceBootstrap&);
+    LocationUpdate(AbstractSmartRest&, SmartRestTemplate&, long&, GPSTracker&, DeviceIO&, DeviceInfo&, DisplayInfo&);
     
     bool init();
     bool run();
@@ -26,7 +26,7 @@
     Timer sendingTimer;
     DeviceIO& _io;
     DeviceInfo& _deviceInfo;
-    DeviceBootstrap& _bootstrap;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/measurement/SignalQualityMeasurement.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/SignalQualityMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -5,18 +5,18 @@
 #include "FloatValue.h"
 #include "logging.h"
 
-#define THRESHOLD_PERCENT_SIG 0.01       // Percentage cut-off for avoiding sending similar signal sensor data.
+#define THRESHOLD_PERCENT_SIG 0.06       // Percentage cut-off for avoiding sending similar signal sensor data.
 // Time interval for forcing a sending even if analog sensor readings are constantly similar (in seconds).
 #define TIME_LIMIT_SIG 900               
 
 SignalQualityMeasurement::SignalQualityMeasurement(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, 
-    DeviceInfo& deviceInfo, DeviceIO& io, DeviceBootstrap& bootstrap) :
+    DeviceInfo& deviceInfo, DeviceIO& io, DisplayInfo& displayInfo) :
     _deviceId(deviceId),
     _tpl(tpl),
     _client(client),
     _deviceInfo(deviceInfo),
     _io(io),
-    _bootstrap(bootstrap)
+    _displayInfo(displayInfo)
 {
     _init = false;
     oldValues[0] = 0;
@@ -44,15 +44,6 @@
     if ((signalQuality = _deviceInfo.signalQuality()) == NULL)
         return false;
 
-    static char tenant[25];
-    static bool firstTime = true;
-    if (firstTime) {
-        firstTime = false;
-        const char* user= _bootstrap.username();
-        int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
-        len = len <= 25 ? len : 25;
-        snprintf(tenant, len, "Tenant: %s", user);
-    }
     int data[2] = {signalQuality->rssi, signalQuality->ber};
     char signal[25] = {0};
     if (signalQuality && signalQuality->rssi)
@@ -62,7 +53,7 @@
     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(tenant, signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
             aDebug("Similar signal readings found, no sending!\r\n");
             return true;
         } else {
@@ -72,7 +63,7 @@
 
     char status[25] = {0};
     snprintf(status, 25, "Sending dBm %d,%d", data[0], data[1]);
-    _io.lcdPrint(tenant, signal, status);
+    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
     ComposedRecord record;
     IntegerValue msgId(104);
     IntegerValue devId(_deviceId);
--- a/measurement/SignalQualityMeasurement.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/SignalQualityMeasurement.h	Fri Mar 06 10:38:03 2015 +0000
@@ -5,12 +5,12 @@
 #include "SmartRestTemplate.h"
 #include "DeviceInfo.h"
 #include "DeviceIO.h"
-#include "DeviceBootstrap.h"
+#include "DisplayInfo.h"
 
 class SignalQualityMeasurement
 {
 public:
-    SignalQualityMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&, DeviceIO&, DeviceBootstrap&);
+    SignalQualityMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, DeviceInfo&, DeviceIO&, DisplayInfo&);
     
     bool init();
     bool run();
@@ -24,7 +24,7 @@
     int oldValues[2];
     Timer sendingTimer;
     DeviceIO& _io;
-    DeviceBootstrap& _bootstrap;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/measurement/TemperatureMeasurement.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/TemperatureMeasurement.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -10,7 +10,7 @@
 #define TIME_LIMIT_TEMP 900               
 
 TemperatureMeasurement::TemperatureMeasurement(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, LM75B& sensor, 
-    DeviceIO& io, DeviceInfo& deviceInfo, DeviceBootstrap& bootstrap) :
+    DeviceIO& io, DeviceInfo& deviceInfo, DisplayInfo& displayInfo) :
     _client(client),
     _tpl(tpl),
     _deviceId(deviceId),
@@ -18,7 +18,7 @@
     oldValue(0),
     _io(io),
     _deviceInfo(deviceInfo),
-    _bootstrap(bootstrap)
+    _displayInfo(displayInfo)
 {
     _init = false;
     sendingTimer.start();
@@ -44,15 +44,6 @@
     if (!_open)
         return false;
 
-    static char tenant[25];
-    static bool firstTime = true;
-    if (firstTime) {
-        firstTime = false;
-        const char* user= _bootstrap.username();
-        int len = strchr(user, '/')-user+1+8;  // 8: length of "Tenant: "
-        len = len <= 25 ? len : 25;
-        snprintf(tenant, len, "Tenant: %s", user);
-    }
     float data = 0;
     data = _sensor.temp();
     DeviceInfo::SignalQuality *p = _deviceInfo.signalQuality(false);
@@ -64,7 +55,7 @@
 
     if (abs(oldValue-data) <= abs(oldValue)*THRESHOLD_PERCENT_TEMP) {
         if (sendingTimer.read() < TIME_LIMIT_TEMP) {
-            _io.lcdPrint(tenant, signal);
+            _io.lcdPrint(_displayInfo.getFirstLine(), signal);
             aDebug("Similar temperature readings found, no sending!\r\n");
             return true;
         } else {
@@ -73,8 +64,8 @@
     }
 
     char status[25] = {0};
-    snprintf(status, 25, "Sending Temp %.1f", data);
-    _io.lcdPrint(tenant, signal, status);
+    snprintf(status, 25, "Sending Temp %.2f", data);
+    _io.lcdPrint(_displayInfo.getFirstLine(), signal, status);
     ComposedRecord record;
     IntegerValue msgId(105);
     IntegerValue devId(_deviceId);
--- a/measurement/TemperatureMeasurement.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/measurement/TemperatureMeasurement.h	Fri Mar 06 10:38:03 2015 +0000
@@ -6,12 +6,12 @@
 #include "LM75B.h"
 #include "DeviceIO.h"
 #include "DeviceInfo.h"
-#include "DeviceBootstrap.h"
+#include "DisplayInfo.h"
 
 class TemperatureMeasurement
 {
 public:
-    TemperatureMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, LM75B&, DeviceIO&, DeviceInfo&, DeviceBootstrap&);
+    TemperatureMeasurement(AbstractSmartRest&, SmartRestTemplate&, long&, LM75B&, DeviceIO&, DeviceInfo&, DisplayInfo&);
     
     bool init();
     bool run();
@@ -26,7 +26,7 @@
     Timer sendingTimer;
     DeviceIO& _io;
     DeviceInfo& _deviceInfo;
-    DeviceBootstrap& _bootstrap;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/operation/OperationExecutor.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/operation/OperationExecutor.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -10,14 +10,17 @@
 #define FOUND_MESSAGE 2
 #define FOUND_CONFIGURATION 3
 
-OperationExecutor::OperationExecutor(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, ConfigurationSynchronization& configurationSynchronization, DeviceIO& io) :
+OperationExecutor::OperationExecutor(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, 
+                                     ConfigurationSynchronization& configurationSynchronization, DeviceIO& io,
+                                     DisplayInfo& displayInfo) :
+    _init(false),
+    _deviceId(deviceId),
     _client(client),
     _tpl(tpl),
     _configurationSynchronization(configurationSynchronization),
-    _deviceId(deviceId),
-    _io(io)
+    _io(io),
+    _displayInfo(displayInfo)
 {
-    _init = false;
 }
 
 bool OperationExecutor::init()
@@ -135,6 +138,7 @@
 //    strncpy(msg, message, sizeof(msg));
 //    _io.lcdPrint(msg);
     _io.lcdPrint(message);
+    _displayInfo.setFirstLine(message);
     return true;
 }
 
--- a/operation/OperationExecutor.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/operation/OperationExecutor.h	Fri Mar 06 10:38:03 2015 +0000
@@ -6,11 +6,12 @@
 #include "OperationStore.h"
 #include "DeviceIO.h"
 #include "ConfigurationSynchronization.h"
+#include "DisplayInfo.h"
 
 class OperationExecutor
 {
 public:
-    OperationExecutor(AbstractSmartRest&, SmartRestTemplate&, long&, ConfigurationSynchronization&, DeviceIO&);
+    OperationExecutor(AbstractSmartRest&, SmartRestTemplate&, long&, ConfigurationSynchronization&, DeviceIO&, DisplayInfo&);
     
     bool init();
     bool executeOperation(OperationStore::Operation&);
@@ -27,6 +28,7 @@
     AbstractSmartRest& _client;
     ConfigurationSynchronization& _configurationSynchronization;
     DeviceIO& _io;
+    DisplayInfo& _displayInfo;
 };
 
 #endif
\ No newline at end of file
--- a/operation/OperationStore.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/operation/OperationStore.h	Fri Mar 06 10:38:03 2015 +0000
@@ -24,6 +24,7 @@
     OperationStore();
     
     struct Operation {
+        Operation() : identifier(0), descriptor(""), state(0) {}
         long identifier;
         const char *descriptor;
         uint8_t state;
--- a/operation/OperationSupport.cpp	Wed Mar 04 14:02:39 2015 +0000
+++ b/operation/OperationSupport.cpp	Fri Mar 06 10:38:03 2015 +0000
@@ -10,11 +10,13 @@
 CharValue aOperationStateSuccessful("SUCCESSFUL");
 CharValue aOperationStateFailed("FAILED");
 
-OperationSupport::OperationSupport(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, ConfigurationSynchronization& configurationSynchronization, DeviceIO& io) :
-    _client(client),
+OperationSupport::OperationSupport(AbstractSmartRest& client, SmartRestTemplate& tpl, long& deviceId, 
+                                   ConfigurationSynchronization& configurationSynchronization, DeviceIO& io,
+                                   DisplayInfo& displayInfo) :
+    _deviceId(deviceId),
     _tpl(tpl),
-    _deviceId(deviceId),
-    _executor(client, tpl, deviceId, configurationSynchronization, io),
+    _client(client),
+    _executor(client, tpl, deviceId, configurationSynchronization, io, displayInfo),
     _thread1(OperationSupport::thread1_func, this),
     _thread2(OperationSupport::thread2_func, this),
     _thread3(OperationSupport::thread3_func, this)
--- a/operation/OperationSupport.h	Wed Mar 04 14:02:39 2015 +0000
+++ b/operation/OperationSupport.h	Fri Mar 06 10:38:03 2015 +0000
@@ -15,7 +15,7 @@
 class OperationSupport
 {
 public:
-    OperationSupport(AbstractSmartRest&, SmartRestTemplate&, long&, ConfigurationSynchronization&, DeviceIO&);
+    OperationSupport(AbstractSmartRest&, SmartRestTemplate&, long&, ConfigurationSynchronization&, DeviceIO&, DisplayInfo&);
     
     bool init();
     bool run();