Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Tue Sep 20 16:21:17 2016 +0000
Revision:
83:0f76cfbb4eba
Parent:
77:43e0a3d9e536
Child:
99:55317f374a94
add API to access modbus registers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 20:653923c2f37a 1 #include "CloudDataHandler.h"
davidjhoward 27:38205cebc3da 2 #include "CloudFileReceiver.h"
davidjhoward 26:6bd4868171c7 3 #include "MTSLog.h"
jmarkel44 20:653923c2f37a 4 #include <stdio.h>
davidjhoward 26:6bd4868171c7 5 #include "mDot.h"
davidjhoward 26:6bd4868171c7 6 #include <vector>
jmarkel44 20:653923c2f37a 7 #include "rtos.h"
davidjhoward 26:6bd4868171c7 8 #include "global.h"
jmarkel44 20:653923c2f37a 9
davidjhoward 68:dbe39d83eb98 10 bool CloudDataHandlerConnected = false;
davidjhoward 68:dbe39d83eb98 11
jmarkel44 20:653923c2f37a 12 void CloudDataHandler(void const *args)
jmarkel44 20:653923c2f37a 13 {
davidjhoward 26:6bd4868171c7 14 int32_t ret;
davidjhoward 26:6bd4868171c7 15
jmarkel44 20:653923c2f37a 16 printf("\r%s has started...\n", __func__);
davidjhoward 26:6bd4868171c7 17
jmarkel44 20:653923c2f37a 18 while ( true ) {
davidjhoward 68:dbe39d83eb98 19
davidjhoward 68:dbe39d83eb98 20 std::string tmp_buffer;
davidjhoward 68:dbe39d83eb98 21
davidjhoward 68:dbe39d83eb98 22 CloudDataHandlerConnected = false;
davidjhoward 26:6bd4868171c7 23
davidjhoward 68:dbe39d83eb98 24 if (!GLOBAL_mdot->getNetworkJoinStatus()) {
davidjhoward 68:dbe39d83eb98 25 logInfo("network not joined, joining network");
davidjhoward 68:dbe39d83eb98 26 if ((ret = GLOBAL_mdot->joinNetwork()) != mDot::MDOT_OK) {
davidjhoward 68:dbe39d83eb98 27 logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
davidjhoward 68:dbe39d83eb98 28 Thread::wait(30000);
davidjhoward 68:dbe39d83eb98 29 continue;
davidjhoward 68:dbe39d83eb98 30 }
davidjhoward 68:dbe39d83eb98 31 }
davidjhoward 68:dbe39d83eb98 32
davidjhoward 68:dbe39d83eb98 33 CloudDataHandlerConnected = true;
davidjhoward 68:dbe39d83eb98 34
davidjhoward 68:dbe39d83eb98 35 osEvent evt = CloudDataHandlerMailBox.get(5000);
davidjhoward 68:dbe39d83eb98 36 if (evt.status == osEventMail) {
davidjhoward 68:dbe39d83eb98 37 CloudDataHandlerReq_t *mail = (CloudDataHandlerReq_t*)evt.value.p;
davidjhoward 68:dbe39d83eb98 38 logInfo("Cloud Data Handler Mail Received: Entry: %s", mail->packet);
davidjhoward 68:dbe39d83eb98 39 tmp_buffer = mail->packet;
davidjhoward 68:dbe39d83eb98 40 CloudDataHandlerMailBox.free(mail);
davidjhoward 68:dbe39d83eb98 41 break;
davidjhoward 68:dbe39d83eb98 42 } else {
davidjhoward 83:0f76cfbb4eba 43 // logInfo("Cloud Data Handler no MAIL\r\n");
davidjhoward 68:dbe39d83eb98 44 tmp_buffer = "{\"mtype\":\"20\"}";
davidjhoward 68:dbe39d83eb98 45 }
davidjhoward 68:dbe39d83eb98 46
davidjhoward 26:6bd4868171c7 47 std::vector<uint8_t> data(tmp_buffer.begin(), tmp_buffer.end());
davidjhoward 26:6bd4868171c7 48
davidjhoward 26:6bd4868171c7 49 // send the data to the gateway
davidjhoward 27:38205cebc3da 50 if ((ret = GLOBAL_mdot->send(data)) != mDot::MDOT_OK) {
davidjhoward 26:6bd4868171c7 51 logError("failed to send", ret, mDot::getReturnCodeString(ret).c_str());
davidjhoward 27:38205cebc3da 52 } else {
davidjhoward 26:6bd4868171c7 53 logInfo("Sent to gateway: %s", tmp_buffer.c_str());
davidjhoward 26:6bd4868171c7 54 std::vector<uint8_t> rcvData(256);
davidjhoward 26:6bd4868171c7 55 rcvData.clear();
davidjhoward 26:6bd4868171c7 56 if ((ret = GLOBAL_mdot->recv(rcvData)) == mDot::MDOT_OK) {
davidjhoward 26:6bd4868171c7 57 if (!rcvData.empty()) {
davidjhoward 27:38205cebc3da 58 std::string rcv_string(rcvData.begin(), rcvData.end());
davidjhoward 26:6bd4868171c7 59 logInfo("Received Data: %s", rcv_string.c_str());
davidjhoward 27:38205cebc3da 60 CloudFileReceiver( &rcv_string, GLOBAL_mdot );
davidjhoward 26:6bd4868171c7 61 }
davidjhoward 26:6bd4868171c7 62 }
davidjhoward 26:6bd4868171c7 63 }
jmarkel44 20:653923c2f37a 64 }
jmarkel44 20:653923c2f37a 65 }