portable version of the cumulocity demo

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AccelerationMeasurement.cpp Source File

AccelerationMeasurement.cpp

00001 #include "AccelerationMeasurement.h"
00002 #include "ComposedRecord.h"
00003 #include "CharValue.h"
00004 #include "IntegerValue.h"
00005 #include "FloatValue.h"
00006 
00007 AccelerationMeasurement::AccelerationMeasurement(SmartRest& client, SmartRestTemplate& tpl, long& deviceId, MMA7660& sensor) :
00008     _client(client),
00009     _tpl(tpl),
00010     _deviceId(deviceId),
00011     _sensor(sensor)
00012 {
00013     _init = false;
00014 }
00015 
00016 bool AccelerationMeasurement::init()
00017 {
00018     if (_init)
00019         return false;
00020     
00021     // Insert measurement
00022     // USAGE: 106,<DEVICE/ID>,<X>,<Y>,<Z>
00023     if (!_tpl.add("10,106,POST,/measurement/measurements,application/vnd.com.nsn.cumulocity.measurement+json,application/vnd.com.nsn.cumulocity.measurement+json,%%,NOW UNSIGNED NUMBER NUMBER NUMBER,\"{\"\"time\"\":\"\"%%\"\",\"\"source\"\":{\"\"id\"\":\"\"%%\"\"},\"\"type\"\":\"\"c8y_MotionMeasurement\"\",\"\"c8y_MotionMeasurement\"\":{\"\"x\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m^2/s\"\"},\"\"y\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m^2/s\"\"},\"\"z\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"m^2/s\"\"}}}\"\r\n"))
00024         return false;
00025 
00026     _test = _sensor.testConnection();
00027     _init = true;
00028     return true;
00029 }
00030 
00031 bool AccelerationMeasurement::run()
00032 {
00033     float data[3] = { 0.0, 0.0, 0.0 };
00034     
00035     if (!_test)
00036         return false;
00037         
00038     _sensor.readData(data);
00039 
00040     ComposedRecord record;
00041     IntegerValue msgId(106);
00042     IntegerValue devId(_deviceId);
00043     FloatValue xValue(data[0], 2);
00044     FloatValue yValue(data[1], 2);
00045     FloatValue zValue(data[2], 2);
00046     if ((!record.add(msgId)) || (!record.add(devId)) || (!record.add(xValue)) || (!record.add(yValue)) || (!record.add(zValue)))
00047         return false;
00048 
00049     if (_client.send(record) != SMARTREST_SUCCESS) {
00050         puts("Signal measurement failed.");
00051         _client.stop();
00052         return false;
00053     }
00054     _client.stop();
00055     return true;
00056 }