![](/media/cache/group/u-blox_logo_trans.png.50x50_q85.png)
portable version of the cumulocity demo
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
Diff: MbedAgent.cpp
- Revision:
- 41:804f6a0bda26
- Child:
- 42:104746744af8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MbedAgent.cpp Tue Jul 15 12:44:34 2014 +0000 @@ -0,0 +1,69 @@ +#include "MbedAgent.h" +#include "rtos.h" + +MbedAgent::MbedAgent(MDMSerial& mdm, DeviceInfo& deviceInfo) : + _mdm(mdm), + _deviceInfo(deviceInfo), + _client(MBED_AGENT_HOST, MBED_AGENT_PORT, MBED_AGENT_DEVICE_IDENTIFIER), + _bootstrap(_client, _mdm, _deviceInfo), + _integration(_client, _tpl, _deviceId, _deviceInfo), + _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo), + _temperatureMeasurement(_client, _tpl, _deviceId, _io.temperatureSensor()), + _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer()), + _deviceId(0) +{ +} + +bool MbedAgent::init() +{ + if ((!_integration.init()) || + (!_signalQualityMeasurement.init()) || + (!_temperatureMeasurement.init()) || + (!_accelerationMeasurement.init())) { + puts("Initialization failed."); + return false; + } + return true; +} + +bool MbedAgent::run() +{ + // device bootstrapping process + _io.lcdPrint("BOOTSTRAP", _deviceInfo.imei()); + if (!_bootstrap.setUpCredentials()) { + puts("Could not obtain credentials."); + return false; + } + + _io.lcdPrint("INTEGRATION"); + if (!_integration.integrate()) { + puts("Device integration process failed."); + return false; + } + + char status[60]; + snprintf(status, sizeof(status), "ID: %ld", _deviceId); + _io.lcdPrint("INTEGRATED", status); + puts(status); + + loop(); + return true; +} + +void MbedAgent::loop() +{ + Timer timer; + + timer.start(); + while (true) { + timer.reset(); + + _signalQualityMeasurement.run(); + _temperatureMeasurement.run(); + _accelerationMeasurement.run(); + + while (timer.read() < MBED_AGENT_INTERVAL) { + Thread::yield(); + } + } +} \ No newline at end of file