portable version of the cumulocity demo

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

Committer:
ublox
Date:
Fri Oct 03 07:54:13 2014 +0000
Revision:
56:2da813cc2f47
Parent:
49:ac0ba9d54ebc
update dependency

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Cumulocity 47:89ae46d5c466 1 #include "LocationUpdate.h"
Cumulocity 49:ac0ba9d54ebc 2 #include "Aggregator.h"
Cumulocity 47:89ae46d5c466 3 #include "ComposedRecord.h"
Cumulocity 47:89ae46d5c466 4 #include "CharValue.h"
Cumulocity 47:89ae46d5c466 5 #include "IntegerValue.h"
Cumulocity 47:89ae46d5c466 6 #include "FloatValue.h"
Cumulocity 47:89ae46d5c466 7
Cumulocity 47:89ae46d5c466 8 LocationUpdate::LocationUpdate(SmartRest& client, SmartRestTemplate& tpl, long& deviceId, GPSTracker& gpsTracker) :
Cumulocity 47:89ae46d5c466 9 _client(client),
Cumulocity 47:89ae46d5c466 10 _tpl(tpl),
Cumulocity 47:89ae46d5c466 11 _deviceId(deviceId),
Cumulocity 47:89ae46d5c466 12 _gpsTracker(gpsTracker)
Cumulocity 47:89ae46d5c466 13 {
Cumulocity 47:89ae46d5c466 14 _init = false;
Cumulocity 47:89ae46d5c466 15 }
Cumulocity 47:89ae46d5c466 16
Cumulocity 47:89ae46d5c466 17 bool LocationUpdate::init()
Cumulocity 47:89ae46d5c466 18 {
Cumulocity 47:89ae46d5c466 19 if (_init)
Cumulocity 47:89ae46d5c466 20 return false;
Cumulocity 47:89ae46d5c466 21
Cumulocity 49:ac0ba9d54ebc 22 // Update device position
Cumulocity 47:89ae46d5c466 23 // USAGE: 108,<DEVICE/ID>,<ALTITUDE>,<LATITUDE>,<LONGITUDE>
Cumulocity 49:ac0ba9d54ebc 24 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"))
Cumulocity 49:ac0ba9d54ebc 25 return false;
Cumulocity 49:ac0ba9d54ebc 26
Cumulocity 49:ac0ba9d54ebc 27 // Insert measurement
Cumulocity 49:ac0ba9d54ebc 28 // USAGE: 109,<DEVICE/ID>,<ALTITUDE>,<LATITUDE>,<LONGITUDE>
Cumulocity 49:ac0ba9d54ebc 29 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\"\":%%}}\""))
Cumulocity 47:89ae46d5c466 30 return false;
Cumulocity 47:89ae46d5c466 31
Cumulocity 47:89ae46d5c466 32 _init = true;
Cumulocity 47:89ae46d5c466 33 return true;
Cumulocity 47:89ae46d5c466 34 }
Cumulocity 47:89ae46d5c466 35
Cumulocity 47:89ae46d5c466 36 bool LocationUpdate::run()
Cumulocity 47:89ae46d5c466 37 {
Cumulocity 47:89ae46d5c466 38 GPSTracker::Position position;
Cumulocity 47:89ae46d5c466 39
Cumulocity 49:ac0ba9d54ebc 40 if (!_gpsTracker.position(&position)) {
Cumulocity 49:ac0ba9d54ebc 41 puts("No GPS data available.");
Cumulocity 47:89ae46d5c466 42 return true;
Cumulocity 49:ac0ba9d54ebc 43 }
Cumulocity 47:89ae46d5c466 44
Cumulocity 47:89ae46d5c466 45 puts("Starting measurement sending.");
Cumulocity 49:ac0ba9d54ebc 46
Cumulocity 49:ac0ba9d54ebc 47 Aggregator aggregator;
Cumulocity 49:ac0ba9d54ebc 48 ComposedRecord record1, record2;
Cumulocity 49:ac0ba9d54ebc 49 IntegerValue msgId1(108);
Cumulocity 49:ac0ba9d54ebc 50 IntegerValue msgId2(109);
Cumulocity 47:89ae46d5c466 51 IntegerValue devId(_deviceId);
Cumulocity 49:ac0ba9d54ebc 52 FloatValue altitude(position.altitude, 2);
Cumulocity 47:89ae46d5c466 53 FloatValue latitude(position.latitude, 6);
Cumulocity 49:ac0ba9d54ebc 54 FloatValue longitude(position.longitude, 6);
Cumulocity 49:ac0ba9d54ebc 55 if ((!record1.add(msgId1)) || (!record1.add(devId)) || (!record1.add(altitude)) || (!record1.add(latitude)) || (!record1.add(longitude)))
Cumulocity 49:ac0ba9d54ebc 56 return false;
Cumulocity 49:ac0ba9d54ebc 57 if ((!record2.add(msgId2)) || (!record2.add(devId)) || (!record2.add(altitude)) || (!record2.add(latitude)) || (!record2.add(longitude)))
Cumulocity 49:ac0ba9d54ebc 58 return false;
Cumulocity 49:ac0ba9d54ebc 59 if ((!aggregator.add(record1)) || (!aggregator.add(record2)))
Cumulocity 47:89ae46d5c466 60 return false;
Cumulocity 47:89ae46d5c466 61
Cumulocity 49:ac0ba9d54ebc 62 puts("Sending GPS measurement.");
Cumulocity 49:ac0ba9d54ebc 63 if (_client.send(aggregator) != SMARTREST_SUCCESS) {
Cumulocity 47:89ae46d5c466 64 puts("Signal measurement failed.");
Cumulocity 47:89ae46d5c466 65 _client.stop();
Cumulocity 47:89ae46d5c466 66 return false;
Cumulocity 47:89ae46d5c466 67 }
Cumulocity 49:ac0ba9d54ebc 68
Cumulocity 47:89ae46d5c466 69 _client.stop();
Cumulocity 47:89ae46d5c466 70 return true;
Cumulocity 47:89ae46d5c466 71 }