portable version of the cumulocity demo
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
MbedAgent.cpp
00001 #include "MbedAgent.h" 00002 #include "rtos.h" 00003 00004 MbedAgent::MbedAgent(DeviceIO& io, MDMSerial& mdm, DeviceInfo& deviceInfo) : 00005 _io(io), 00006 _mdm(mdm), 00007 _deviceInfo(deviceInfo), 00008 _client(MBED_AGENT_HOST, MBED_AGENT_PORT, MBED_AGENT_DEVICE_IDENTIFIER), 00009 _bootstrap(_client, _mdm, _io, _deviceInfo), 00010 _integration(_client, _tpl, _deviceId, _deviceInfo), 00011 _signalQualityMeasurement(_client, _tpl, _deviceId, _deviceInfo), 00012 _temperatureMeasurement(_client, _tpl, _deviceId, _io.temperatureSensor()), 00013 _accelerationMeasurement(_client, _tpl, _deviceId, _io.accelerometer()), 00014 _analogMeasurement(_client, _tpl, _deviceId, _io.analog1(), _io.analog2()), 00015 _locationUpdate(_client, _tpl, _deviceId, _io.gpsTracker()), 00016 _deviceId(0) 00017 { 00018 } 00019 00020 bool MbedAgent::init() 00021 { 00022 if ((!_integration.init()) || 00023 (!_signalQualityMeasurement.init()) || 00024 (!_temperatureMeasurement.init()) || 00025 (!_accelerationMeasurement.init()) || 00026 (!_analogMeasurement.init()) || 00027 (!_locationUpdate.init())) { 00028 puts("Initialization failed."); 00029 return false; 00030 } 00031 return true; 00032 } 00033 00034 bool MbedAgent::run() 00035 { 00036 // device bootstrapping process 00037 if (!_bootstrap.setUpCredentials()) 00038 return false; 00039 00040 Thread::wait(5000); 00041 00042 _io.lcdPrint("INTEGRATION"); 00043 if (!_integration.integrate()) { 00044 return false; 00045 } 00046 00047 char status[60]; 00048 snprintf(status, sizeof(status), "ID: %ld", _deviceId); 00049 _io.lcdPrint("INTEGRATED", status); 00050 00051 loop(); 00052 return true; 00053 } 00054 00055 void MbedAgent::loop() 00056 { 00057 Timer timer; 00058 00059 timer.start(); 00060 while (true) { 00061 timer.reset(); 00062 00063 _signalQualityMeasurement.run(); 00064 _temperatureMeasurement.run(); 00065 _accelerationMeasurement.run(); 00066 _analogMeasurement.run(); 00067 _locationUpdate.run(); 00068 00069 while (timer.read() < MBED_AGENT_INTERVAL) { 00070 Thread::yield(); 00071 } 00072 } 00073 }
Generated on Tue Jul 12 2022 21:10:53 by 1.7.2