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

Revision:
101:dbcd3bc51758
Parent:
100:47ea098f8a47
Child:
102:ef2827b2d00a
--- a/measurement/LocationUpdate.cpp	Thu May 07 13:56:19 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-#include "LocationUpdate.h"
-#include "Aggregator.h"
-#include "ComposedRecord.h"
-#include "CharValue.h"
-#include "IntegerValue.h"
-#include "FloatValue.h"
-#include "LCDDisplay.h"
-#include "logging.h"
-
-#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
-
-LocationUpdate::LocationUpdate(AbstractSmartRest& client, SmartRestTemplate& tpl,
-    DeviceInfo& deviceInfo) :
-    _tpl(tpl),
-    _client(client),
-    _gpsTracker(),
-    _deviceInfo(deviceInfo)
-{
-    _init = false;
-    oldValues[0] = 0;
-    oldValues[1] = 0;
-    oldValues[2] = 0;
-    t_start = time(NULL);
-}
-
-bool LocationUpdate::init()
-{
-    if (_init)
-        return false;
-    
-    // Update device position
-    // USAGE: 108,<DEVICE/ID>,<ALTITUDE>,<LATITUDE>,<LONGITUDE>
-    if (!_tpl.add("10,108,PUT,/inventory/managedObjects/%%,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,UNSIGNED NUMBER NUMBER NUMBER,\"{\"\"c8y_Position\"\":{\"\"alt\"\":%%,\"\"lat\"\":%%,\"\"lng\"\":%%},\"\"c8y_MotionTracking\"\":{\"\"active\"\":true}}\"\r\n"))
-        return false;
-
-    // Insert measurement
-    // USAGE: 109,<DEVICE/ID>,<ALTITUDE>,<LATITUDE>,<LONGITUDE>
-    if (!_tpl.add("10,109,POST,/event/events,application/vnd.com.nsn.cumulocity.event+json,application/vnd.com.nsn.cumulocity.event+json,%%,NOW UNSIGNED NUMBER NUMBER NUMBER,\"{\"\"time\"\":\"\"%%\"\",\"\"source\"\":{\"\"id\"\":\"\"%%\"\"},\"\"type\"\":\"\"c8y_LocationUpdate\"\",\"\"text\"\":\"\"Mbed location update\"\",\"\"c8y_Position\"\":{\"\"alt\"\":%%,\"\"lat\"\":%%,\"\"lng\"\":%%}}\"\r\n"))
-        return false;
-
-    _init = true;
-    return true;
-}
-
-bool LocationUpdate::run()
-{
-    GPSTracker::Position position;    
-    if (!_gpsTracker.position(&position)) {
-        return false;
-    }
-    float data[3] = { position.altitude, position.latitude, position.longitude };
-
-    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) {
-        time_t t_interval = time(NULL) - t_start;
-        if (t_interval < TIME_LIMIT_LOC) {
-            if (strcmp(LCDDisplay::inst().getThirdLine(), "")) {
-                LCDDisplay::inst().setThirdLine("");
-            }
-            return true;
-        } else {
-            aDebug("GPS: Timeout at %d s.\n", t_interval);
-        }
-    }
-    char status[27] = {0};
-    snprintf(status, 27, "Send GPS %.1f,%.1f,%.1f", data[0], data[1], data[2]);
-    LCDDisplay::inst().setThirdLine(status);
-        
-    Aggregator aggregator;
-    ComposedRecord record1, record2;
-    IntegerValue msgId1(108);
-    IntegerValue msgId2(109);
-    IntegerValue devId(deviceID);
-    FloatValue altitude(position.altitude, 2);
-    FloatValue latitude(position.latitude, 6);
-    FloatValue longitude(position.longitude, 6);
-    if ((!record1.add(msgId1)) || (!record1.add(devId)) || (!record1.add(altitude)) || (!record1.add(latitude)) || (!record1.add(longitude)))
-        return false;
-    if ((!record2.add(msgId2)) || (!record2.add(devId)) || (!record2.add(altitude)) || (!record2.add(latitude)) || (!record2.add(longitude)))
-        return false;
-    if ((!aggregator.add(record1)) || (!aggregator.add(record2)))
-        return false;
-
-    time_t t0 = time(NULL);
-    if (_client.send(aggregator) != SMARTREST_SUCCESS) {
-        aWarning("GPS: Send failed.\n");
-        _client.stop();
-        return false;
-    }
-    time_t t1 = time(NULL);
-    _client.stop();
-    aDebug("GPS: Sent in %d s.\n", t1-t0);
-    oldValues[0] = data[0];
-    oldValues[1] = data[1];
-    oldValues[2] = data[2];
-    t_start = time(NULL);
-    return true;
-}