Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
src/CloudDataHandler/CloudDataHandler.cpp@83:0f76cfbb4eba, 2016-09-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |