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