Own fork of MbedSmartRestMain
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
Diff: MbedAgent.cpp
- Revision:
- 92:0acd11870c6a
- Parent:
- 90:423177e8a401
- Child:
- 93:61d44636f020
diff -r 48069375dffa -r 0acd11870c6a MbedAgent.cpp --- a/MbedAgent.cpp Fri Mar 20 14:27:10 2015 +0000 +++ b/MbedAgent.cpp Mon Apr 13 14:24:58 2015 +0000 @@ -3,25 +3,23 @@ #include "logging.h" #include "watchdog.h" -bool lastSensorReadingSent=true; - -MbedAgent::MbedAgent(DeviceIO& io, MDMSerial& mdm, DeviceInfo& deviceInfo, DeviceMemory& deviceMemory) : - _io(io), +MbedAgent::MbedAgent(GPSI2C& gps, MDMSerial& mdm, LCDDisplay& lcdDisplay, + DeviceInfo& deviceInfo, DeviceMemory& deviceMemory) : _mdm(mdm), _deviceInfo(deviceInfo), _deviceMemory(deviceMemory), _configurationProperties(_deviceConfiguration), - _client(MBED_AGENT_HOST, MBED_AGENT_PORT, MBED_AGENT_DEVICE_IDENTIFIER, mdm), - _bootstrap(_client, _io, _deviceInfo, _deviceMemory), + _client(mdm), + _bootstrap(_client, lcdDisplay, _deviceInfo, _deviceMemory), _integration(_client, _tpl, _deviceId, _deviceInfo), - _displayInfo(), + _lcdDisplay(lcdDisplay), _configurationSynchronization(_client, _tpl, _deviceId, _deviceMemory, _deviceConfiguration, _configurationProperties), - _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo, io, _displayInfo), - _temperatureMeasurement(_client, _tpl, _deviceId, io, deviceInfo, _displayInfo), - _accelerationMeasurement(_client, _tpl, _deviceId, io, deviceInfo, _displayInfo), - _analogMeasurement(_client, _tpl, _deviceId, io, deviceInfo, _displayInfo), - _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker(), io, deviceInfo, _displayInfo), - _operationSupport(_client, _tpl, _deviceId, _configurationSynchronization, _io, _displayInfo), + _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo, _lcdDisplay), + _temperatureMeasurement(_client, _tpl, _deviceId, deviceInfo, _lcdDisplay), + _accelerationMeasurement(_client, _tpl, _deviceId, deviceInfo, _lcdDisplay), + _analogMeasurement(_client, _tpl, _deviceId, deviceInfo, _lcdDisplay), + _locationUpdate(_client, _tpl, _deviceId, gps, deviceInfo, _lcdDisplay), + _operationSupport(_client, _tpl, _deviceId, _configurationSynchronization, _lcdDisplay), _deviceId(0) { } @@ -30,103 +28,85 @@ { bool flag = true; if (!_integration.init()) { - aError("Init Device Integration failed.\r\n"); + _lcdDisplay.setLines("Integration init failure"); flag = false; } if (!_configurationSynchronization.init()) { - aError("Init Configuration Synchronization failed.\r\n"); + _lcdDisplay.setLines("Config Sync init failure"); flag = false; } if (!_signalQualityMeasurement.init()) { - aError("Init Signal Quality Measurement failed.\r\n"); + _lcdDisplay.setLines("Signal init failure"); flag = false; } if (!_temperatureMeasurement.init()) { - aError("Init Temperature Measurement failed.\r\n"); + _lcdDisplay.setLines("Temperature init failure"); flag = false; } if (!_accelerationMeasurement.init()) { - aError("Init Acceleration Measurement failed.\r\n"); + _lcdDisplay.setLines("Acceleration init failure"); flag = false; } if (!_analogMeasurement.init()) { - aError("Init Analog Measurement failed.\r\n"); + _lcdDisplay.setLines("Analog init failure"); flag = false; } if (!_locationUpdate.init()) { - aError("Init Location Measurement failed.\r\n"); + _lcdDisplay.setLines("Location init failure"); flag = false; } if (!_operationSupport.init()) { - aError("Init Operation Support failed.\r\n"); + _lcdDisplay.setLines("Operation init failure"); flag = false; } return flag; } -bool MbedAgent::run() +int MbedAgent::run() { // device bootstrapping process if (!_bootstrap.setUpCredentials()) - return false; + return -1; Thread::wait(5000); - _io.lcdPrint("Connect to Cloud", MBED_AGENT_HOST); + _lcdDisplay.setLines("Connect to Cloud", getHost()); if (!_integration.integrate()) { - return false; + return -2; } if (!_configurationSynchronization.integrate()) { - return false; + return -3; } - char status[60]; + char status[27]; snprintf(status, sizeof(status), "ID: %ld", _deviceId); - _io.lcdPrint("Connected", status); + _lcdDisplay.setLines("Connected", status); - char tenant[25]; - const char* user= _bootstrap.username(); - int len = strchr(user, '/')-user+1+8; // 8: length of "Tenant: " - len = len <= 25 ? len : 25; - snprintf(tenant, len, "Tenant: %s", user); - _displayInfo.setFirstLine(tenant); - loop(); - - return true; + const char* user= getUsername(); + int len = strchr(user, '/')-user+sizeof("Tenant: "); + len = len <= 27 ? len : 27; + snprintf(status, len, "Tenant: %s", user); + _lcdDisplay.setFirstLine(status); + return 0; } void MbedAgent::loop() { Watchdog wdt; - DigitalIn joystickUp(A2); - DigitalIn joystickDown(A3); -// DigitalIn joystickLeft(A4); -// AnalogIn joystickRight(A5); - wdt.kick(60.0); // set a 60.0 seconds timeout on watchdog hardware timer + while (true) { - if (joystickDown) { - setLevel(A_NONE); - _mdm.setDebug(-1); - printf("***Disabled debug mode.***\r\n"); - } else if (joystickUp) { - setLevel(A_DEBUG); - _mdm.setDebug(3); - printf("***Enabled debug mode.***\r\n"); - } - + _operationSupport.run(); _configurationSynchronization.run(); _signalQualityMeasurement.run(); _temperatureMeasurement.run(); + _accelerationMeasurement.run(); _analogMeasurement.run(); - _accelerationMeasurement.run(); _locationUpdate.run(); - _operationSupport.run(); // if ((interval = _configurationProperties.readInterval()) < 0) // break; -// // while (timer.read() < interval) { // Thread::yield(); // }