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
Diff: util/RtosSmartRest.cpp
- Revision:
- 94:61d44636f020
- Parent:
- 93:0acd11870c6a
- Child:
- 95:010b0f7a0a1a
--- a/util/RtosSmartRest.cpp Mon Apr 13 14:24:58 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -#include "RtosSmartRest.h" -#include "SmartRestConf.h" -#include "logging.h" - -RtosSmartRest::RtosSmartRest(MDMSerial& mdm, uint8_t tries) : - _tries(tries), - _count(0), - slotsLock(), - _mdm(mdm) -{ -} - -RtosSmartRest::~RtosSmartRest() -{ - for (size_t i = 0; i < _count; i++) - delete _slots[i].inst; -} - -uint8_t RtosSmartRest::bootstrap(const DataGenerator& generator) -{ - MbedSmartRest *inst = instance(); - if (inst == NULL) - return SMARTREST_INTERNAL_ERROR; - - uint8_t ret = inst->bootstrap(generator); - if (ret == SMARTREST_SUCCESS) - setIdentifier(inst->getIdentifier()); - return ret; -} - -uint8_t RtosSmartRest::send(const DataGenerator& generator, const char *overrideIdentifier) -{ - MbedSmartRest *inst = instance(); - if (inst) - return inst->send(generator, overrideIdentifier); - else - return SMARTREST_INTERNAL_ERROR; -} - -uint8_t RtosSmartRest::sendAndClose(const DataGenerator& generator, const char *overrideIdentifier) -{ - MbedSmartRest *inst = instance(); - if (inst) - return inst->sendAndClose(generator, overrideIdentifier); - else - return SMARTREST_INTERNAL_ERROR; -} - -uint8_t RtosSmartRest::stream(const char *uri, const Record& record, const char *overrideIdentifier) -{ - MbedSmartRest *inst = instance(); - if (inst) - return inst->stream(uri, record, overrideIdentifier); - else - return SMARTREST_INTERNAL_ERROR; - -} - -uint8_t RtosSmartRest::receive(ParsedRecord& record) -{ - MbedSmartRest *inst = instance(); - if (inst) - return inst->receive(record); - else - return SMARTREST_INTERNAL_ERROR; -} - -void RtosSmartRest::stop() -{ - MbedSmartRest *inst = instance(); - if (inst) - inst->stop(); -} - -MbedSmartRest * RtosSmartRest::instance() -{ - osThreadId tid = Thread::gettid(); - for (size_t i = 0; i < _count; ++i) { - if (tid == _slots[i].tid) { - return _slots[i].inst; - } - } - - if (_count == RTOS_SMARTREST_SLOTS) - return NULL; - else { - MbedSmartRest *inst = new MbedSmartRest(_mdm, _tries); - slotsLock.lock(); - _slots[_count].tid = tid; - _slots[_count].inst = inst; - ++_count; - slotsLock.unlock(); - - return inst; - } -}