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
MbedAgent.cpp
- Committer:
- xinlei
- Date:
- 2015-02-16
- Revision:
- 71:063c45e99578
- Parent:
- 68:0dc778a16d0d
- Child:
- 72:c5709ae7b193
File content as of revision 71:063c45e99578:
#include "MbedAgent.h" #include "rtos.h" MbedAgent::MbedAgent(DeviceIO& io, MDMSerial& mdm, DeviceInfo& deviceInfo, DeviceMemory& deviceMemory) : _io(io), _mdm(mdm), _deviceInfo(deviceInfo), _deviceMemory(deviceMemory), _configurationProperties(_deviceConfiguration), _client(MBED_AGENT_HOST, MBED_AGENT_PORT, MBED_AGENT_DEVICE_IDENTIFIER), _bootstrap(_client, _io, _deviceInfo, _deviceMemory), _integration(_client, _tpl, _deviceId, _deviceInfo), _configurationSynchronization(_client, _tpl, _deviceId, _deviceMemory, _deviceConfiguration, _configurationProperties), _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo), _temperatureMeasurement(_client, _tpl, _deviceId, _io.temperatureSensor()), _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer()), _analogMeasurement(_client, _tpl, _deviceId, _io.analog1(), _io.analog2()), _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker()), _operationSupport(_client, _tpl, _deviceId, _configurationSynchronization, _io), _deviceId(0) { } bool MbedAgent::init() { bool flag = true; if (!_integration.init()) { puts("Init Device Integration failed."); flag = false; } if (!_configurationSynchronization.init()) { puts("Init Configuration Synchronization failed."); flag = false; } if (!_signalQualityMeasurement.init()) { puts("Init Signal Quality Measurement failed."); flag = false; } if (!_temperatureMeasurement.init()) { puts("Init Temperature Measurement failed."); flag = false; } if (!_accelerationMeasurement.init()) { puts("Init Acceleration Measurement failed."); flag = false; } if (!_analogMeasurement.init()) { puts("Init Analog Measurement failed."); flag = false; } if (!_locationUpdate.init()) { puts("Init Location Measurement failed."); flag = false; } if (!_operationSupport.init()) { puts("Init Operation Support failed."); flag = false; } if (flag) puts("T"); else puts("F"); return flag; } bool MbedAgent::run() { // device bootstrapping process if (!_bootstrap.setUpCredentials()) return false; Thread::wait(5000); _io.lcdPrint("Connect to Cloud"); if (!_integration.integrate()) { return false; } if (!_configurationSynchronization.integrate()) { return false; } char status[60]; snprintf(status, sizeof(status), "ID: %ld", _deviceId); _io.lcdPrint("Connected", status); loop(); return true; } void MbedAgent::loop() { Timer timer; int interval; timer.start(); while (true) { timer.reset(); _configurationSynchronization.run(); _signalQualityMeasurement.run(); _temperatureMeasurement.run(); _accelerationMeasurement.run(); _analogMeasurement.run(); _locationUpdate.run(); _operationSupport.run(); if ((interval = _configurationProperties.readInterval()) == 0) break; while (timer.read() < interval) { Thread::yield(); } } }