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/CloudFileReceiver.cpp@248:e156e33b8b38, 2016-10-21 (annotated)
- Committer:
- davidjhoward
- Date:
- Fri Oct 21 11:37:35 2016 +0000
- Revision:
- 248:e156e33b8b38
- Parent:
- 246:ca91a441b4dc
stub out cloud data handler
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| davidjhoward | 27:38205cebc3da | 1 | #include "CloudFileReceiver.h" |
| davidjhoward | 116:7337ed514891 | 2 | #include "CloudDataHandler.h" |
| davidjhoward | 27:38205cebc3da | 3 | #include "MTSLog.h" |
| davidjhoward | 31:4b1587034318 | 4 | #include "global.h" |
| davidjhoward | 246:ca91a441b4dc | 5 | #include "cJSON.h" |
| davidjhoward | 246:ca91a441b4dc | 6 | #include <algorithm> |
| davidjhoward | 27:38205cebc3da | 7 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 8 | char CloudFileReceiverWriteBuf[MAX_FILE_SIZE]; |
| jmarkel44 | 177:9ec90c8e3ce1 | 9 | char CloudFileReceiverReadBuf[MAX_FILE_SIZE]; |
| davidjhoward | 27:38205cebc3da | 10 | |
| davidjhoward | 246:ca91a441b4dc | 11 | bool StoreReceivedFile( mDot *dot, std::string &payload_string ) |
| davidjhoward | 49:0456ee2271be | 12 | { |
| davidjhoward | 99:55317f374a94 | 13 | FILENAME_STRING filename; |
| davidjhoward | 27:38205cebc3da | 14 | |
| davidjhoward | 99:55317f374a94 | 15 | memset( filename, '\0', sizeof(FILENAME_STRING) ); |
| davidjhoward | 246:ca91a441b4dc | 16 | |
| davidjhoward | 246:ca91a441b4dc | 17 | cJSON * payload = cJSON_Parse(payload_string.c_str()); |
| davidjhoward | 246:ca91a441b4dc | 18 | int mType = cJSON_GetObjectItem(payload,"mtype")->valueint; |
| davidjhoward | 246:ca91a441b4dc | 19 | logInfo("%s:%d: mtype=%d", __func__,__LINE__,mType); |
| davidjhoward | 99:55317f374a94 | 20 | switch( mType ) { |
| davidjhoward | 99:55317f374a94 | 21 | case SETPOINT_CONTROL_MTYPE: { |
| davidjhoward | 246:ca91a441b4dc | 22 | cJSON * spcontrol = cJSON_GetObjectItem(payload,"spcontrol"); |
| davidjhoward | 99:55317f374a94 | 23 | logInfo("PROCESSING SETPONT CONTROL FILE"); |
| davidjhoward | 246:ca91a441b4dc | 24 | snprintf( filename, sizeof(FILENAME_STRING), "control_sp_%s.json", cJSON_GetObjectItem(spcontrol,"id")->valuestring ); |
| davidjhoward | 99:55317f374a94 | 25 | logInfo("SETPONT CONTROL FILENAME=%s", filename); |
| davidjhoward | 134:f90154ff33ec | 26 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 27 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 134:f90154ff33ec | 28 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 134:f90154ff33ec | 29 | "{ " |
| davidjhoward | 134:f90154ff33ec | 30 | "\"id\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 31 | "\"priority\": \"%s\"," |
| davidjhoward | 134:f90154ff33ec | 32 | "\"input\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 33 | "\"output\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 34 | "\"setpoint\": \"%s\"," |
| davidjhoward | 134:f90154ff33ec | 35 | "\"prodfact\": \"%s\"," |
| davidjhoward | 134:f90154ff33ec | 36 | "\"actingDir\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 37 | "\"halert\": \"%s\"," |
| davidjhoward | 134:f90154ff33ec | 38 | "\"lalert\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 39 | "\"hfs\": \"%s\"," |
| davidjhoward | 134:f90154ff33ec | 40 | "\"lfs\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 41 | "\"tol\": \"%s\" }", |
| davidjhoward | 246:ca91a441b4dc | 42 | cJSON_GetObjectItem(spcontrol,"id")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 43 | cJSON_GetObjectItem(spcontrol,"priority")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 44 | cJSON_GetObjectItem(spcontrol,"input")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 45 | cJSON_GetObjectItem(spcontrol,"output")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 46 | cJSON_GetObjectItem(spcontrol,"setpoint")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 47 | cJSON_GetObjectItem(spcontrol,"productfact")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 48 | cJSON_GetObjectItem(spcontrol,"actingDir")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 49 | cJSON_GetObjectItem(spcontrol,"halert")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 50 | cJSON_GetObjectItem(spcontrol,"lalert")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 51 | cJSON_GetObjectItem(spcontrol,"hfs")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 52 | cJSON_GetObjectItem(spcontrol,"lfs")->valuestring, |
| davidjhoward | 246:ca91a441b4dc | 53 | cJSON_GetObjectItem(spcontrol,"tol")->valuestring |
| davidjhoward | 134:f90154ff33ec | 54 | ); |
| davidjhoward | 246:ca91a441b4dc | 55 | cJSON_Delete(spcontrol); |
| davidjhoward | 246:ca91a441b4dc | 56 | cJSON_Delete(payload); |
| davidjhoward | 134:f90154ff33ec | 57 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 58 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 134:f90154ff33ec | 59 | if( status != true ) { |
| davidjhoward | 134:f90154ff33ec | 60 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 134:f90154ff33ec | 61 | } |
| davidjhoward | 134:f90154ff33ec | 62 | |
| davidjhoward | 134:f90154ff33ec | 63 | // send a message to the configuration handler to create the control |
| davidjhoward | 134:f90154ff33ec | 64 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 134:f90154ff33ec | 65 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 134:f90154ff33ec | 66 | msg->action = ACTION_CREATE; |
| davidjhoward | 134:f90154ff33ec | 67 | msg->control = CONTROL_SETPOINT; |
| davidjhoward | 134:f90154ff33ec | 68 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 134:f90154ff33ec | 69 | |
| davidjhoward | 134:f90154ff33ec | 70 | printf("%s: Sending a create request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 134:f90154ff33ec | 71 | |
| davidjhoward | 134:f90154ff33ec | 72 | MailBox.put(msg); |
| davidjhoward | 134:f90154ff33ec | 73 | break; |
| davidjhoward | 134:f90154ff33ec | 74 | } |
| davidjhoward | 246:ca91a441b4dc | 75 | #ifdef 0 |
| davidjhoward | 145:c1dfbb5eed0e | 76 | case MANUAL_CONTROL_MTYPE: { |
| davidjhoward | 134:f90154ff33ec | 77 | logInfo("PROCESSING MANUAL CONTROL FILE"); |
| davidjhoward | 134:f90154ff33ec | 78 | snprintf( filename, sizeof(FILENAME_STRING), "control_mn_%s.json", |
| davidjhoward | 134:f90154ff33ec | 79 | from_json["pay"]["mncontrol"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 134:f90154ff33ec | 80 | logInfo("MANUAL CONTROL FILENAME=%s", filename); |
| davidjhoward | 134:f90154ff33ec | 81 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 82 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 134:f90154ff33ec | 83 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 134:f90154ff33ec | 84 | "{ " |
| davidjhoward | 134:f90154ff33ec | 85 | "\"id\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 86 | "\"output\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 87 | "\"type\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 88 | "\"priority\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 89 | "\"duration\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 90 | "\"setpoint\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 91 | "\"state\": \"%s\", " |
| davidjhoward | 134:f90154ff33ec | 92 | "\"percent\": \"%s\" }", |
| davidjhoward | 134:f90154ff33ec | 93 | from_json["pay"]["mncontrol"]["id"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 94 | from_json["pay"]["mncontrol"]["output"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 95 | from_json["pay"]["mncontrol"]["type"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 96 | from_json["pay"]["mncontrol"]["priority"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 97 | from_json["pay"]["mncontrol"]["duration"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 98 | from_json["pay"]["mncontrol"]["setpoint"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 99 | from_json["pay"]["mncontrol"]["state"].get<std::string>().c_str(), |
| davidjhoward | 134:f90154ff33ec | 100 | from_json["pay"]["mncontrol"]["percent"].get<std::string>().c_str() |
| davidjhoward | 134:f90154ff33ec | 101 | ); |
| davidjhoward | 134:f90154ff33ec | 102 | |
| davidjhoward | 134:f90154ff33ec | 103 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 104 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 134:f90154ff33ec | 105 | if( status != true ) { |
| davidjhoward | 134:f90154ff33ec | 106 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 134:f90154ff33ec | 107 | } |
| davidjhoward | 134:f90154ff33ec | 108 | |
| davidjhoward | 134:f90154ff33ec | 109 | // send a message to the configuration handler to create the control |
| davidjhoward | 134:f90154ff33ec | 110 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 134:f90154ff33ec | 111 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 134:f90154ff33ec | 112 | msg->action = ACTION_CREATE; |
| davidjhoward | 134:f90154ff33ec | 113 | msg->control = CONTROL_MANUAL; |
| davidjhoward | 134:f90154ff33ec | 114 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 134:f90154ff33ec | 115 | |
| davidjhoward | 134:f90154ff33ec | 116 | printf("%s: Sending a create manual for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 134:f90154ff33ec | 117 | |
| davidjhoward | 134:f90154ff33ec | 118 | MailBox.put(msg); |
| davidjhoward | 99:55317f374a94 | 119 | break; |
| davidjhoward | 99:55317f374a94 | 120 | } |
| davidjhoward | 139:f1f4a523399f | 121 | case TIMER_CONTROL_MTYPE: { |
| davidjhoward | 139:f1f4a523399f | 122 | logInfo("PROCESSING TIMER CONTROL FILE"); |
| davidjhoward | 139:f1f4a523399f | 123 | snprintf( filename, sizeof(FILENAME_STRING), "control_tm_%s.json", |
| davidjhoward | 139:f1f4a523399f | 124 | from_json["pay"]["tmcontrol"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 139:f1f4a523399f | 125 | logInfo("TIMER CONTROL FILENAME=%s", filename); |
| davidjhoward | 139:f1f4a523399f | 126 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 127 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 139:f1f4a523399f | 128 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 139:f1f4a523399f | 129 | "{ " |
| davidjhoward | 139:f1f4a523399f | 130 | "\"id\": \"%s\", " |
| davidjhoward | 139:f1f4a523399f | 131 | "\"output\": \"%s\", " |
| davidjhoward | 139:f1f4a523399f | 132 | "\"priority\": \"%s\", " |
| davidjhoward | 139:f1f4a523399f | 133 | "\"starttime\": \"%s\", " |
| davidjhoward | 139:f1f4a523399f | 134 | "\"duration\": \"%s\", ", |
| davidjhoward | 139:f1f4a523399f | 135 | from_json["pay"]["tmcontrol"]["id"].get<std::string>().c_str(), |
| davidjhoward | 139:f1f4a523399f | 136 | from_json["pay"]["tmcontrol"]["output"].get<std::string>().c_str(), |
| davidjhoward | 139:f1f4a523399f | 137 | from_json["pay"]["tmcontrol"]["priority"].get<std::string>().c_str(), |
| davidjhoward | 139:f1f4a523399f | 138 | from_json["pay"]["tmcontrol"]["starttime"].get<std::string>().c_str(), |
| davidjhoward | 139:f1f4a523399f | 139 | from_json["pay"]["tmcontrol"]["duration"].get<std::string>().c_str() |
| davidjhoward | 139:f1f4a523399f | 140 | ); |
| davidjhoward | 139:f1f4a523399f | 141 | |
| davidjhoward | 139:f1f4a523399f | 142 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 143 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 139:f1f4a523399f | 144 | if( status != true ) { |
| davidjhoward | 139:f1f4a523399f | 145 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 139:f1f4a523399f | 146 | } |
| davidjhoward | 139:f1f4a523399f | 147 | |
| davidjhoward | 139:f1f4a523399f | 148 | // send a message to the configuration handler to create the control |
| davidjhoward | 139:f1f4a523399f | 149 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 139:f1f4a523399f | 150 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 139:f1f4a523399f | 151 | msg->action = ACTION_CREATE; |
| davidjhoward | 139:f1f4a523399f | 152 | msg->control = CONTROL_TIMER; |
| davidjhoward | 139:f1f4a523399f | 153 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 139:f1f4a523399f | 154 | |
| davidjhoward | 139:f1f4a523399f | 155 | printf("%s: Sending a create request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 139:f1f4a523399f | 156 | |
| davidjhoward | 139:f1f4a523399f | 157 | MailBox.put(msg); |
| davidjhoward | 99:55317f374a94 | 158 | break; |
| davidjhoward | 139:f1f4a523399f | 159 | } |
| davidjhoward | 149:950c90425f7c | 160 | case INPUT_CONFIG_MTYPE: |
| davidjhoward | 149:950c90425f7c | 161 | case VINPUT_CONFIG_MTYPE: { |
| davidjhoward | 149:950c90425f7c | 162 | std::string vcmd; |
| davidjhoward | 99:55317f374a94 | 163 | logInfo("id=%s", from_json["pay"]["input"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 149:950c90425f7c | 164 | if( mType == INPUT_CONFIG_MTYPE ) { |
| davidjhoward | 149:950c90425f7c | 165 | snprintf( filename, sizeof(FILENAME_STRING), "input_%s%s", |
| davidjhoward | 149:950c90425f7c | 166 | from_json["pay"]["input"]["id"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 167 | ".json" ); |
| davidjhoward | 149:950c90425f7c | 168 | vcmd = ""; |
| davidjhoward | 149:950c90425f7c | 169 | |
| davidjhoward | 149:950c90425f7c | 170 | } else { |
| davidjhoward | 149:950c90425f7c | 171 | snprintf( filename, sizeof(FILENAME_STRING), "vinput_%s%s", |
| davidjhoward | 149:950c90425f7c | 172 | from_json["pay"]["input"]["id"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 173 | ".json" ); |
| davidjhoward | 149:950c90425f7c | 174 | vcmd = from_json["pay"]["input"]["vcmd"].get<std::string>(); |
| davidjhoward | 149:950c90425f7c | 175 | } |
| davidjhoward | 99:55317f374a94 | 176 | logInfo("INPUT CONFIG FILENAME=%s", filename); |
| davidjhoward | 31:4b1587034318 | 177 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 178 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 99:55317f374a94 | 179 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 99:55317f374a94 | 180 | "{ " |
| davidjhoward | 99:55317f374a94 | 181 | "\"id\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 182 | "\"name\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 183 | "\"units\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 184 | "\"min\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 185 | "\"max\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 186 | "\"node\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 187 | "\"reg\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 188 | "\"rtype\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 189 | "\"type\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 190 | "\"size\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 191 | "\"order\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 192 | "\"fmt\":\"%s\", " |
| davidjhoward | 149:950c90425f7c | 193 | "\"vcmd\":\"%s\", " |
| davidjhoward | 99:55317f374a94 | 194 | "\"rfreq\":\"%s\" } ", |
| davidjhoward | 99:55317f374a94 | 195 | from_json["pay"]["input"]["id"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 196 | from_json["pay"]["input"]["name"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 197 | from_json["pay"]["input"]["units"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 198 | from_json["pay"]["input"]["min"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 199 | from_json["pay"]["input"]["max"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 200 | from_json["pay"]["input"]["node"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 201 | from_json["pay"]["input"]["reg"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 202 | from_json["pay"]["input"]["rtype"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 203 | from_json["pay"]["input"]["type"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 204 | from_json["pay"]["input"]["size"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 205 | from_json["pay"]["input"]["order"].get<std::string>().c_str(), |
| davidjhoward | 99:55317f374a94 | 206 | from_json["pay"]["input"]["fmt"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 207 | vcmd.c_str(), |
| davidjhoward | 99:55317f374a94 | 208 | from_json["pay"]["input"]["rfreq"].get<std::string>().c_str() |
| davidjhoward | 99:55317f374a94 | 209 | ); |
| davidjhoward | 45:3b9e1923cb15 | 210 | |
| davidjhoward | 99:55317f374a94 | 211 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 212 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 99:55317f374a94 | 213 | if( status != true ) { |
| davidjhoward | 99:55317f374a94 | 214 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 99:55317f374a94 | 215 | } |
| davidjhoward | 45:3b9e1923cb15 | 216 | |
| davidjhoward | 99:55317f374a94 | 217 | logInfo("Sending Mail To ModbusMasterMailBox, filename=%s", filename); |
| davidjhoward | 99:55317f374a94 | 218 | Message_t *mail = ModbusMasterMailBox.alloc(); |
| davidjhoward | 99:55317f374a94 | 219 | mail->action = ACTION_READ_FILE; |
| davidjhoward | 99:55317f374a94 | 220 | strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1)); |
| davidjhoward | 99:55317f374a94 | 221 | ModbusMasterMailBox.put(mail); |
| davidjhoward | 99:55317f374a94 | 222 | break; |
| davidjhoward | 27:38205cebc3da | 223 | } |
| davidjhoward | 149:950c90425f7c | 224 | case OUTPUT_CONFIG_MTYPE: |
| davidjhoward | 149:950c90425f7c | 225 | case VOUTPUT_CONFIG_MTYPE: { |
| davidjhoward | 144:b32d6a6f445f | 226 | logInfo("id=%s", from_json["pay"]["output"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 149:950c90425f7c | 227 | if( mType == OUTPUT_CONFIG_MTYPE ) { |
| davidjhoward | 149:950c90425f7c | 228 | snprintf( filename, sizeof(FILENAME_STRING), "output_%s%s", |
| davidjhoward | 149:950c90425f7c | 229 | from_json["pay"]["output"]["id"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 230 | ".json" ); |
| davidjhoward | 149:950c90425f7c | 231 | } else { |
| davidjhoward | 149:950c90425f7c | 232 | snprintf( filename, sizeof(FILENAME_STRING), "voutput_%s%s", |
| davidjhoward | 149:950c90425f7c | 233 | from_json["pay"]["output"]["id"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 234 | ".json" ); |
| davidjhoward | 149:950c90425f7c | 235 | } |
| davidjhoward | 144:b32d6a6f445f | 236 | logInfo("OUTPUT CONFIG FILENAME=%s", filename); |
| davidjhoward | 144:b32d6a6f445f | 237 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 238 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 144:b32d6a6f445f | 239 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 144:b32d6a6f445f | 240 | "{ " |
| davidjhoward | 144:b32d6a6f445f | 241 | "\"id\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 242 | "\"name\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 243 | "\"units\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 244 | "\"min\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 245 | "\"max\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 246 | "\"node\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 247 | "\"reg\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 248 | "\"rtype\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 249 | "\"type\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 250 | "\"size\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 251 | "\"order\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 252 | "\"fmt\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 253 | "\"rfreq\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 254 | "\"toperiod\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 255 | "\"scalelo\":\"%s\", " |
| davidjhoward | 144:b32d6a6f445f | 256 | "\"scalehi\":\"%s\" }", |
| davidjhoward | 144:b32d6a6f445f | 257 | from_json["pay"]["output"]["id"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 258 | from_json["pay"]["output"]["name"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 259 | from_json["pay"]["output"]["units"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 260 | from_json["pay"]["output"]["min"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 261 | from_json["pay"]["output"]["max"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 262 | from_json["pay"]["output"]["node"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 263 | from_json["pay"]["output"]["reg"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 264 | from_json["pay"]["output"]["rtype"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 265 | from_json["pay"]["output"]["type"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 266 | from_json["pay"]["output"]["size"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 267 | from_json["pay"]["output"]["order"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 268 | from_json["pay"]["output"]["fmt"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 269 | from_json["pay"]["output"]["rfreq"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 270 | from_json["pay"]["output"]["toperiod"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 271 | from_json["pay"]["output"]["scalelo"].get<std::string>().c_str(), |
| davidjhoward | 144:b32d6a6f445f | 272 | from_json["pay"]["output"]["scalehi"].get<std::string>().c_str() |
| davidjhoward | 144:b32d6a6f445f | 273 | ); |
| davidjhoward | 144:b32d6a6f445f | 274 | |
| davidjhoward | 144:b32d6a6f445f | 275 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 276 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 144:b32d6a6f445f | 277 | if( status != true ) { |
| davidjhoward | 144:b32d6a6f445f | 278 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 144:b32d6a6f445f | 279 | } |
| davidjhoward | 197:594afd088f32 | 280 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 281 | // send a message to the modbus master |
| davidjhoward | 144:b32d6a6f445f | 282 | logInfo("Sending Mail To ModbusMasterMailBox, filename=%s", filename); |
| davidjhoward | 144:b32d6a6f445f | 283 | Message_t *mail = ModbusMasterMailBox.alloc(); |
| davidjhoward | 144:b32d6a6f445f | 284 | mail->action = ACTION_READ_FILE; |
| davidjhoward | 144:b32d6a6f445f | 285 | strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1)); |
| davidjhoward | 144:b32d6a6f445f | 286 | ModbusMasterMailBox.put(mail); |
| jmarkel44 | 177:9ec90c8e3ce1 | 287 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 288 | // send a message to the output master |
| jmarkel44 | 177:9ec90c8e3ce1 | 289 | logInfo("Sending mail to OutputMaster, filename = %s", filename); |
| jmarkel44 | 177:9ec90c8e3ce1 | 290 | OutputControlMsg_t *output_mail = OutputMasterMailBox.alloc(); |
| jmarkel44 | 177:9ec90c8e3ce1 | 291 | output_mail->action = ACTION_NEW; |
| jmarkel44 | 177:9ec90c8e3ce1 | 292 | strncpy(output_mail->controlFile, filename, sizeof(output_mail->controlFile)-1); |
| jmarkel44 | 177:9ec90c8e3ce1 | 293 | OutputMasterMailBox.put(output_mail); |
| davidjhoward | 144:b32d6a6f445f | 294 | break; |
| davidjhoward | 144:b32d6a6f445f | 295 | } |
| davidjhoward | 145:c1dfbb5eed0e | 296 | case DESTROY_SETPOINT_MTYPE: { |
| davidjhoward | 145:c1dfbb5eed0e | 297 | logInfo("PROCESSING DESTORY SETPOINT CONTROL MESSAGE"); |
| davidjhoward | 145:c1dfbb5eed0e | 298 | snprintf( filename, sizeof(FILENAME_STRING), "control_sp_%s.json", |
| davidjhoward | 145:c1dfbb5eed0e | 299 | from_json["pay"]["destroy"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 145:c1dfbb5eed0e | 300 | logInfo("SETPOINT CONTROL FILENAME=%s", filename); |
| davidjhoward | 145:c1dfbb5eed0e | 301 | |
| davidjhoward | 145:c1dfbb5eed0e | 302 | // send a message to the configuration handler to create the control |
| davidjhoward | 145:c1dfbb5eed0e | 303 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 145:c1dfbb5eed0e | 304 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 145:c1dfbb5eed0e | 305 | msg->action = ACTION_DESTROY; |
| davidjhoward | 145:c1dfbb5eed0e | 306 | msg->control = CONTROL_SETPOINT; |
| davidjhoward | 145:c1dfbb5eed0e | 307 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 145:c1dfbb5eed0e | 308 | |
| davidjhoward | 145:c1dfbb5eed0e | 309 | printf("%s: Sending a destroy request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 145:c1dfbb5eed0e | 310 | |
| davidjhoward | 145:c1dfbb5eed0e | 311 | MailBox.put(msg); |
| davidjhoward | 145:c1dfbb5eed0e | 312 | break; |
| davidjhoward | 145:c1dfbb5eed0e | 313 | } |
| davidjhoward | 145:c1dfbb5eed0e | 314 | case DESTROY_MANUAL_MTYPE: { |
| davidjhoward | 145:c1dfbb5eed0e | 315 | logInfo("PROCESSING DESTORY MANUAL CONTROL MESSAGE"); |
| davidjhoward | 145:c1dfbb5eed0e | 316 | snprintf( filename, sizeof(FILENAME_STRING), "control_mn_%s.json", |
| davidjhoward | 145:c1dfbb5eed0e | 317 | from_json["pay"]["destroy"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 145:c1dfbb5eed0e | 318 | logInfo("MANUAL CONTROL FILENAME=%s", filename); |
| davidjhoward | 145:c1dfbb5eed0e | 319 | |
| davidjhoward | 145:c1dfbb5eed0e | 320 | // send a message to the configuration handler to create the control |
| davidjhoward | 145:c1dfbb5eed0e | 321 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 145:c1dfbb5eed0e | 322 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 145:c1dfbb5eed0e | 323 | msg->action = ACTION_DESTROY; |
| davidjhoward | 145:c1dfbb5eed0e | 324 | msg->control = CONTROL_MANUAL; |
| davidjhoward | 145:c1dfbb5eed0e | 325 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 145:c1dfbb5eed0e | 326 | |
| davidjhoward | 145:c1dfbb5eed0e | 327 | printf("%s: Sending a destroy request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 145:c1dfbb5eed0e | 328 | |
| davidjhoward | 145:c1dfbb5eed0e | 329 | MailBox.put(msg); |
| davidjhoward | 145:c1dfbb5eed0e | 330 | break; |
| davidjhoward | 145:c1dfbb5eed0e | 331 | } |
| davidjhoward | 145:c1dfbb5eed0e | 332 | case DESTROY_TIMER_MTYPE: { |
| davidjhoward | 145:c1dfbb5eed0e | 333 | logInfo("PROCESSING DESTORY TIMER CONTROL MESSAGE"); |
| davidjhoward | 145:c1dfbb5eed0e | 334 | snprintf( filename, sizeof(FILENAME_STRING), "control_tm_%s.json", |
| davidjhoward | 145:c1dfbb5eed0e | 335 | from_json["pay"]["destroy"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 145:c1dfbb5eed0e | 336 | logInfo("TIMER CONTROL FILENAME=%s", filename); |
| davidjhoward | 145:c1dfbb5eed0e | 337 | |
| davidjhoward | 145:c1dfbb5eed0e | 338 | // send a message to the configuration handler to create the control |
| davidjhoward | 145:c1dfbb5eed0e | 339 | Message_t *msg = MailBox.alloc(); |
| davidjhoward | 145:c1dfbb5eed0e | 340 | memset(msg, 0, sizeof(Message_t)); |
| davidjhoward | 145:c1dfbb5eed0e | 341 | msg->action = ACTION_DESTROY; |
| davidjhoward | 145:c1dfbb5eed0e | 342 | msg->control = CONTROL_TIMER; |
| davidjhoward | 145:c1dfbb5eed0e | 343 | strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1); |
| davidjhoward | 145:c1dfbb5eed0e | 344 | |
| davidjhoward | 145:c1dfbb5eed0e | 345 | printf("%s: Sending a destroy request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control); |
| davidjhoward | 145:c1dfbb5eed0e | 346 | |
| davidjhoward | 145:c1dfbb5eed0e | 347 | MailBox.put(msg); |
| davidjhoward | 145:c1dfbb5eed0e | 348 | break; |
| davidjhoward | 145:c1dfbb5eed0e | 349 | } |
| davidjhoward | 149:950c90425f7c | 350 | case VIRTUAL_COMMAND_MTYPE: { |
| davidjhoward | 149:950c90425f7c | 351 | logInfo("PROCESSING VIRTUAL COMMAND FILE"); |
| davidjhoward | 149:950c90425f7c | 352 | snprintf( filename, sizeof(FILENAME_STRING), "vcmd_%s.json", |
| davidjhoward | 149:950c90425f7c | 353 | from_json["pay"]["vcommand"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 149:950c90425f7c | 354 | logInfo("VIRTUAL COMMAND FILENAME=%s", filename); |
| davidjhoward | 149:950c90425f7c | 355 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 356 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 149:950c90425f7c | 357 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 214:52ef35bc44ec | 358 | "{" |
| davidjhoward | 214:52ef35bc44ec | 359 | "\"id\":\"%s\"," |
| davidjhoward | 214:52ef35bc44ec | 360 | "\"tag\":\"%s\"," |
| davidjhoward | 214:52ef35bc44ec | 361 | "\"c\":\"%f\"," |
| davidjhoward | 214:52ef35bc44ec | 362 | "\"opl\":\"%s\"," |
| davidjhoward | 214:52ef35bc44ec | 363 | "\"opr\":\"%s\"," |
| davidjhoward | 214:52ef35bc44ec | 364 | "\"op\":\"%s\"}", |
| davidjhoward | 149:950c90425f7c | 365 | from_json["pay"]["vcommand"]["id"].get<std::string>().c_str(), |
| davidjhoward | 214:52ef35bc44ec | 366 | from_json["pay"]["vcommand"]["tag"].get<std::string>().c_str(), |
| davidjhoward | 214:52ef35bc44ec | 367 | atof(from_json["pay"]["vcommand"]["c"].get<std::string>().c_str()), |
| davidjhoward | 149:950c90425f7c | 368 | from_json["pay"]["vcommand"]["opl"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 369 | from_json["pay"]["vcommand"]["opr"].get<std::string>().c_str(), |
| davidjhoward | 149:950c90425f7c | 370 | from_json["pay"]["vcommand"]["op"].get<std::string>().c_str() |
| davidjhoward | 149:950c90425f7c | 371 | ); |
| davidjhoward | 149:950c90425f7c | 372 | |
| davidjhoward | 149:950c90425f7c | 373 | logInfo("saving string%s", CloudFileReceiverWriteBuf); |
| jmarkel44 | 177:9ec90c8e3ce1 | 374 | bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 149:950c90425f7c | 375 | if( status != true ) { |
| davidjhoward | 149:950c90425f7c | 376 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 149:950c90425f7c | 377 | } |
| davidjhoward | 149:950c90425f7c | 378 | |
| davidjhoward | 149:950c90425f7c | 379 | logInfo("Sending Mail To ModbusMasterMailBox, filename=%s", filename); |
| davidjhoward | 149:950c90425f7c | 380 | Message_t *mail = ModbusMasterMailBox.alloc(); |
| davidjhoward | 149:950c90425f7c | 381 | mail->action = ACTION_READ_FILE; |
| davidjhoward | 149:950c90425f7c | 382 | strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1)); |
| davidjhoward | 149:950c90425f7c | 383 | ModbusMasterMailBox.put(mail); |
| davidjhoward | 149:950c90425f7c | 384 | break; |
| davidjhoward | 149:950c90425f7c | 385 | } |
| davidjhoward | 224:9ea8925c61e0 | 386 | case BT_MODBUS_COMMAND_MTYPE: { |
| davidjhoward | 197:594afd088f32 | 387 | logInfo("PROCESSING MODBUS COMMAND FILE"); |
| davidjhoward | 197:594afd088f32 | 388 | snprintf( filename, sizeof(FILENAME_STRING), "mcmd_%s.json", |
| davidjhoward | 197:594afd088f32 | 389 | from_json["pay"]["mcommand"]["id"].get<std::string>().c_str() ); |
| davidjhoward | 197:594afd088f32 | 390 | logInfo("MODBUS COMMAND FILENAME=%s", filename); |
| davidjhoward | 197:594afd088f32 | 391 | |
| davidjhoward | 197:594afd088f32 | 392 | memset( CloudFileReceiverWriteBuf, '\0', MAX_FILE_SIZE ); |
| davidjhoward | 197:594afd088f32 | 393 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), |
| davidjhoward | 197:594afd088f32 | 394 | "{ " |
| davidjhoward | 197:594afd088f32 | 395 | "\"id\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 396 | "\"node\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 397 | "\"func\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 398 | "\"sreg\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 399 | "\"nreg\":\"%s\" }" |
| davidjhoward | 197:594afd088f32 | 400 | "\"dtype\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 401 | "\"order\":\"%s\"," |
| davidjhoward | 197:594afd088f32 | 402 | "\"value\":\"%s\"}", |
| davidjhoward | 197:594afd088f32 | 403 | from_json["pay"]["mcommand"]["id"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 404 | from_json["pay"]["mcommand"]["node"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 405 | from_json["pay"]["mcommand"]["func"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 406 | from_json["pay"]["mcommand"]["sreg"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 407 | from_json["pay"]["mcommand"]["nreg"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 408 | from_json["pay"]["mcommand"]["dtype"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 409 | from_json["pay"]["mcommand"]["order"].get<std::string>().c_str(), |
| davidjhoward | 197:594afd088f32 | 410 | from_json["pay"]["mcommand"]["value"].get<std::string>().c_str() |
| davidjhoward | 197:594afd088f32 | 411 | ); |
| davidjhoward | 197:594afd088f32 | 412 | |
| davidjhoward | 197:594afd088f32 | 413 | logInfo("Sending Command To ModbusMasterMailBox: %s", CloudFileReceiverWriteBuf); |
| davidjhoward | 197:594afd088f32 | 414 | Message_t *mail = ModbusMasterMailBox.alloc(); |
| davidjhoward | 197:594afd088f32 | 415 | mail->action = ACTION_EXEC_CMD; |
| davidjhoward | 197:594afd088f32 | 416 | strncpy( mail->controlFile, CloudFileReceiverWriteBuf, (sizeof(mail->controlFile)-1)); |
| davidjhoward | 197:594afd088f32 | 417 | ModbusMasterMailBox.put(mail); |
| davidjhoward | 197:594afd088f32 | 418 | break; |
| davidjhoward | 197:594afd088f32 | 419 | } |
| davidjhoward | 246:ca91a441b4dc | 420 | #endif |
| davidjhoward | 99:55317f374a94 | 421 | default: |
| davidjhoward | 99:55317f374a94 | 422 | logInfo("DEFAULT"); |
| davidjhoward | 99:55317f374a94 | 423 | break; |
| davidjhoward | 99:55317f374a94 | 424 | } |
| davidjhoward | 99:55317f374a94 | 425 | return true; |
| davidjhoward | 49:0456ee2271be | 426 | } |
| davidjhoward | 162:5e8948b8044d | 427 | |
| davidjhoward | 149:950c90425f7c | 428 | bool CloudDataHandler_RcvFile = false; |
| davidjhoward | 49:0456ee2271be | 429 | bool CloudFileReceiver( std::string *recv_string, mDot *dot ) |
| davidjhoward | 49:0456ee2271be | 430 | { |
| davidjhoward | 246:ca91a441b4dc | 431 | bool status; |
| davidjhoward | 248:e156e33b8b38 | 432 | CloudDataHandler_RcvFile = false; |
| davidjhoward | 248:e156e33b8b38 | 433 | return true; |
| davidjhoward | 173:acfb464a4aec | 434 | |
| davidjhoward | 246:ca91a441b4dc | 435 | cJSON * root = cJSON_Parse(recv_string->c_str()); |
| davidjhoward | 246:ca91a441b4dc | 436 | cJSON * payload = cJSON_GetObjectItem(root,"pay"); |
| davidjhoward | 246:ca91a441b4dc | 437 | std::string payload_string = cJSON_Print(payload); |
| davidjhoward | 246:ca91a441b4dc | 438 | int sequence = cJSON_GetObjectItem(root,"seq")->valueint; |
| davidjhoward | 246:ca91a441b4dc | 439 | logInfo("%s:%d: sequence=%d",__func__,__LINE__, sequence); |
| davidjhoward | 246:ca91a441b4dc | 440 | cJSON_Delete(root); |
| davidjhoward | 246:ca91a441b4dc | 441 | cJSON_Delete(payload); |
| davidjhoward | 246:ca91a441b4dc | 442 | |
| davidjhoward | 246:ca91a441b4dc | 443 | |
| davidjhoward | 246:ca91a441b4dc | 444 | //remove the quotes added by the print function |
| davidjhoward | 246:ca91a441b4dc | 445 | // payload_string.erase( payload_string.begin() ); |
| davidjhoward | 246:ca91a441b4dc | 446 | // payload_string.erase( payload_string.size() - 1 ); |
| davidjhoward | 246:ca91a441b4dc | 447 | |
| davidjhoward | 246:ca91a441b4dc | 448 | payload_string = payload_string.substr(1, payload_string.size() - 2); |
| davidjhoward | 246:ca91a441b4dc | 449 | // payload_string.erase( std::remove(payload_string.begin(), payload_string.end(), 'a'), payload_string.end() ); |
| davidjhoward | 246:ca91a441b4dc | 450 | std::replace( payload_string.begin(), payload_string.end(), '\\', ' '); |
| davidjhoward | 246:ca91a441b4dc | 451 | |
| davidjhoward | 246:ca91a441b4dc | 452 | printf("payload_string:%s\r\n", payload_string.c_str() ); |
| davidjhoward | 49:0456ee2271be | 453 | |
| davidjhoward | 149:950c90425f7c | 454 | CloudDataHandler_RcvFile = false; |
| davidjhoward | 246:ca91a441b4dc | 455 | if( sequence == -1 ) { |
| davidjhoward | 149:950c90425f7c | 456 | |
| davidjhoward | 246:ca91a441b4dc | 457 | // sequence of -1 means string sent in 1 chunk. |
| davidjhoward | 246:ca91a441b4dc | 458 | // printf("%s:%d: payload=%s\r\n",__func__,__LINE__, payload_string.c_str() ); |
| davidjhoward | 246:ca91a441b4dc | 459 | status = StoreReceivedFile( dot, payload_string ); |
| davidjhoward | 246:ca91a441b4dc | 460 | |
| davidjhoward | 27:38205cebc3da | 461 | } else if( sequence == 0 ) { |
| davidjhoward | 27:38205cebc3da | 462 | |
| davidjhoward | 49:0456ee2271be | 463 | memset(CloudFileReceiverWriteBuf,0,sizeof(CloudFileReceiverWriteBuf)); |
| davidjhoward | 246:ca91a441b4dc | 464 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s", "{\"seq\":-1, \"pay\":", payload_string.c_str() ); |
| davidjhoward | 246:ca91a441b4dc | 465 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 466 | logInfo("(%d)Writing String Length=%d, %s", __LINE__, MAX_FILE_SIZE, CloudFileReceiverWriteBuf ); |
| davidjhoward | 27:38205cebc3da | 467 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 468 | status = dot->saveUserFile("scratch.json", (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 27:38205cebc3da | 469 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 470 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 246:ca91a441b4dc | 471 | } else { |
| davidjhoward | 246:ca91a441b4dc | 472 | CloudDataHandler_RcvFile = true; |
| davidjhoward | 246:ca91a441b4dc | 473 | logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf)); |
| davidjhoward | 246:ca91a441b4dc | 474 | __heapstats((__heapprt)fprintf,stderr); |
| davidjhoward | 27:38205cebc3da | 475 | } |
| davidjhoward | 49:0456ee2271be | 476 | |
| davidjhoward | 27:38205cebc3da | 477 | } else if( sequence == -2 ) { |
| davidjhoward | 27:38205cebc3da | 478 | |
| davidjhoward | 27:38205cebc3da | 479 | logInfo("(%d)READING BACK scratch.json FILE FOR LAST PACKET", __LINE__); |
| davidjhoward | 27:38205cebc3da | 480 | |
| davidjhoward | 27:38205cebc3da | 481 | // read the file back |
| jmarkel44 | 177:9ec90c8e3ce1 | 482 | status = dot->readUserFile("scratch.json", (void *)CloudFileReceiverReadBuf, MAX_FILE_SIZE); |
| davidjhoward | 27:38205cebc3da | 483 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 484 | logError("(%d)read file failed, status=%d", __LINE__, status); |
| davidjhoward | 27:38205cebc3da | 485 | return false; |
| davidjhoward | 27:38205cebc3da | 486 | } |
| davidjhoward | 27:38205cebc3da | 487 | |
| davidjhoward | 246:ca91a441b4dc | 488 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s%s", CloudFileReceiverReadBuf, payload_string.c_str(), "}" ); |
| davidjhoward | 49:0456ee2271be | 489 | logInfo("(%d)Final String Length=%d, %s", __LINE__, strlen(CloudFileReceiverWriteBuf), CloudFileReceiverWriteBuf ); |
| davidjhoward | 27:38205cebc3da | 490 | |
| davidjhoward | 246:ca91a441b4dc | 491 | std::string final_json = CloudFileReceiverWriteBuf; |
| davidjhoward | 173:acfb464a4aec | 492 | printf("finished parse\r\n" ); |
| davidjhoward | 49:0456ee2271be | 493 | |
| davidjhoward | 246:ca91a441b4dc | 494 | status = StoreReceivedFile( dot, final_json ); |
| davidjhoward | 27:38205cebc3da | 495 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 496 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 27:38205cebc3da | 497 | } |
| davidjhoward | 49:0456ee2271be | 498 | |
| davidjhoward | 49:0456ee2271be | 499 | status = dot->deleteUserFile("scratch.json"); |
| davidjhoward | 49:0456ee2271be | 500 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 501 | logError("(%d)delete file failed, status=%d", __LINE__, status); |
| davidjhoward | 49:0456ee2271be | 502 | } |
| davidjhoward | 49:0456ee2271be | 503 | |
| davidjhoward | 49:0456ee2271be | 504 | logInfo("(%d)DELETED scratch.json FILE, status:%d", __LINE__, status ); |
| davidjhoward | 49:0456ee2271be | 505 | |
| davidjhoward | 27:38205cebc3da | 506 | } else { |
| davidjhoward | 27:38205cebc3da | 507 | |
| davidjhoward | 27:38205cebc3da | 508 | logInfo("(%d)READING BACK scratch.json FILE", __LINE__); |
| davidjhoward | 27:38205cebc3da | 509 | |
| davidjhoward | 27:38205cebc3da | 510 | // read the file back |
| jmarkel44 | 177:9ec90c8e3ce1 | 511 | status = dot->readUserFile("scratch.json", (void *)CloudFileReceiverReadBuf, MAX_FILE_SIZE); |
| davidjhoward | 27:38205cebc3da | 512 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 513 | logError("(%d)read file failed, status=%d", __LINE__, status); |
| davidjhoward | 27:38205cebc3da | 514 | return false; |
| davidjhoward | 27:38205cebc3da | 515 | } |
| davidjhoward | 27:38205cebc3da | 516 | |
| davidjhoward | 246:ca91a441b4dc | 517 | snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s", CloudFileReceiverReadBuf, payload_string.c_str() ); |
| davidjhoward | 49:0456ee2271be | 518 | logInfo("(%d)Writing String Length=%d, %s", __LINE__, strlen(CloudFileReceiverWriteBuf), CloudFileReceiverWriteBuf ); |
| davidjhoward | 27:38205cebc3da | 519 | |
| jmarkel44 | 177:9ec90c8e3ce1 | 520 | status = dot->saveUserFile("scratch.json", (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE); |
| davidjhoward | 27:38205cebc3da | 521 | if( status != true ) { |
| davidjhoward | 49:0456ee2271be | 522 | logError("(%d)save file failed, status=%d", __LINE__, status); |
| davidjhoward | 246:ca91a441b4dc | 523 | } else { |
| davidjhoward | 246:ca91a441b4dc | 524 | CloudDataHandler_RcvFile = true; |
| davidjhoward | 246:ca91a441b4dc | 525 | logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf)); |
| davidjhoward | 246:ca91a441b4dc | 526 | __heapstats((__heapprt)fprintf,stderr); |
| davidjhoward | 27:38205cebc3da | 527 | } |
| davidjhoward | 27:38205cebc3da | 528 | } |
| davidjhoward | 27:38205cebc3da | 529 | return true; |
| davidjhoward | 27:38205cebc3da | 530 | } |
