Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Thu Oct 20 22:20:52 2016 +0000
Revision:
246:ca91a441b4dc
Parent:
224:9ea8925c61e0
Child:
248:e156e33b8b38
removing MbedJSONValue.lib

Who changed what in which revision?

UserRevisionLine numberNew 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 173:acfb464a4aec 432
davidjhoward 246:ca91a441b4dc 433 cJSON * root = cJSON_Parse(recv_string->c_str());
davidjhoward 246:ca91a441b4dc 434 cJSON * payload = cJSON_GetObjectItem(root,"pay");
davidjhoward 246:ca91a441b4dc 435 std::string payload_string = cJSON_Print(payload);
davidjhoward 246:ca91a441b4dc 436 int sequence = cJSON_GetObjectItem(root,"seq")->valueint;
davidjhoward 246:ca91a441b4dc 437 logInfo("%s:%d: sequence=%d",__func__,__LINE__, sequence);
davidjhoward 246:ca91a441b4dc 438 cJSON_Delete(root);
davidjhoward 246:ca91a441b4dc 439 cJSON_Delete(payload);
davidjhoward 246:ca91a441b4dc 440
davidjhoward 246:ca91a441b4dc 441
davidjhoward 246:ca91a441b4dc 442 //remove the quotes added by the print function
davidjhoward 246:ca91a441b4dc 443 // payload_string.erase( payload_string.begin() );
davidjhoward 246:ca91a441b4dc 444 // payload_string.erase( payload_string.size() - 1 );
davidjhoward 246:ca91a441b4dc 445
davidjhoward 246:ca91a441b4dc 446 payload_string = payload_string.substr(1, payload_string.size() - 2);
davidjhoward 246:ca91a441b4dc 447 // payload_string.erase( std::remove(payload_string.begin(), payload_string.end(), 'a'), payload_string.end() );
davidjhoward 246:ca91a441b4dc 448 std::replace( payload_string.begin(), payload_string.end(), '\\', ' ');
davidjhoward 246:ca91a441b4dc 449
davidjhoward 246:ca91a441b4dc 450 printf("payload_string:%s\r\n", payload_string.c_str() );
davidjhoward 49:0456ee2271be 451
davidjhoward 149:950c90425f7c 452 CloudDataHandler_RcvFile = false;
davidjhoward 246:ca91a441b4dc 453 if( sequence == -1 ) {
davidjhoward 149:950c90425f7c 454
davidjhoward 246:ca91a441b4dc 455 // sequence of -1 means string sent in 1 chunk.
davidjhoward 246:ca91a441b4dc 456 // printf("%s:%d: payload=%s\r\n",__func__,__LINE__, payload_string.c_str() );
davidjhoward 246:ca91a441b4dc 457 status = StoreReceivedFile( dot, payload_string );
davidjhoward 246:ca91a441b4dc 458
davidjhoward 27:38205cebc3da 459 } else if( sequence == 0 ) {
davidjhoward 27:38205cebc3da 460
davidjhoward 49:0456ee2271be 461 memset(CloudFileReceiverWriteBuf,0,sizeof(CloudFileReceiverWriteBuf));
davidjhoward 246:ca91a441b4dc 462 snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s", "{\"seq\":-1, \"pay\":", payload_string.c_str() );
davidjhoward 246:ca91a441b4dc 463
jmarkel44 177:9ec90c8e3ce1 464 logInfo("(%d)Writing String Length=%d, %s", __LINE__, MAX_FILE_SIZE, CloudFileReceiverWriteBuf );
davidjhoward 27:38205cebc3da 465
jmarkel44 177:9ec90c8e3ce1 466 status = dot->saveUserFile("scratch.json", (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE);
davidjhoward 27:38205cebc3da 467 if( status != true ) {
davidjhoward 49:0456ee2271be 468 logError("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 246:ca91a441b4dc 469 } else {
davidjhoward 246:ca91a441b4dc 470 CloudDataHandler_RcvFile = true;
davidjhoward 246:ca91a441b4dc 471 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf));
davidjhoward 246:ca91a441b4dc 472 __heapstats((__heapprt)fprintf,stderr);
davidjhoward 27:38205cebc3da 473 }
davidjhoward 49:0456ee2271be 474
davidjhoward 27:38205cebc3da 475 } else if( sequence == -2 ) {
davidjhoward 27:38205cebc3da 476
davidjhoward 27:38205cebc3da 477 logInfo("(%d)READING BACK scratch.json FILE FOR LAST PACKET", __LINE__);
davidjhoward 27:38205cebc3da 478
davidjhoward 27:38205cebc3da 479 // read the file back
jmarkel44 177:9ec90c8e3ce1 480 status = dot->readUserFile("scratch.json", (void *)CloudFileReceiverReadBuf, MAX_FILE_SIZE);
davidjhoward 27:38205cebc3da 481 if( status != true ) {
davidjhoward 49:0456ee2271be 482 logError("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 483 return false;
davidjhoward 27:38205cebc3da 484 }
davidjhoward 27:38205cebc3da 485
davidjhoward 246:ca91a441b4dc 486 snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s%s", CloudFileReceiverReadBuf, payload_string.c_str(), "}" );
davidjhoward 49:0456ee2271be 487 logInfo("(%d)Final String Length=%d, %s", __LINE__, strlen(CloudFileReceiverWriteBuf), CloudFileReceiverWriteBuf );
davidjhoward 27:38205cebc3da 488
davidjhoward 246:ca91a441b4dc 489 std::string final_json = CloudFileReceiverWriteBuf;
davidjhoward 173:acfb464a4aec 490 printf("finished parse\r\n" );
davidjhoward 49:0456ee2271be 491
davidjhoward 246:ca91a441b4dc 492 status = StoreReceivedFile( dot, final_json );
davidjhoward 27:38205cebc3da 493 if( status != true ) {
davidjhoward 49:0456ee2271be 494 logError("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 495 }
davidjhoward 49:0456ee2271be 496
davidjhoward 49:0456ee2271be 497 status = dot->deleteUserFile("scratch.json");
davidjhoward 49:0456ee2271be 498 if( status != true ) {
davidjhoward 49:0456ee2271be 499 logError("(%d)delete file failed, status=%d", __LINE__, status);
davidjhoward 49:0456ee2271be 500 }
davidjhoward 49:0456ee2271be 501
davidjhoward 49:0456ee2271be 502 logInfo("(%d)DELETED scratch.json FILE, status:%d", __LINE__, status );
davidjhoward 49:0456ee2271be 503
davidjhoward 27:38205cebc3da 504 } else {
davidjhoward 27:38205cebc3da 505
davidjhoward 27:38205cebc3da 506 logInfo("(%d)READING BACK scratch.json FILE", __LINE__);
davidjhoward 27:38205cebc3da 507
davidjhoward 27:38205cebc3da 508 // read the file back
jmarkel44 177:9ec90c8e3ce1 509 status = dot->readUserFile("scratch.json", (void *)CloudFileReceiverReadBuf, MAX_FILE_SIZE);
davidjhoward 27:38205cebc3da 510 if( status != true ) {
davidjhoward 49:0456ee2271be 511 logError("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 512 return false;
davidjhoward 27:38205cebc3da 513 }
davidjhoward 27:38205cebc3da 514
davidjhoward 246:ca91a441b4dc 515 snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf), "%s%s", CloudFileReceiverReadBuf, payload_string.c_str() );
davidjhoward 49:0456ee2271be 516 logInfo("(%d)Writing String Length=%d, %s", __LINE__, strlen(CloudFileReceiverWriteBuf), CloudFileReceiverWriteBuf );
davidjhoward 27:38205cebc3da 517
jmarkel44 177:9ec90c8e3ce1 518 status = dot->saveUserFile("scratch.json", (void *)CloudFileReceiverWriteBuf, MAX_FILE_SIZE);
davidjhoward 27:38205cebc3da 519 if( status != true ) {
davidjhoward 49:0456ee2271be 520 logError("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 246:ca91a441b4dc 521 } else {
davidjhoward 246:ca91a441b4dc 522 CloudDataHandler_RcvFile = true;
davidjhoward 246:ca91a441b4dc 523 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf));
davidjhoward 246:ca91a441b4dc 524 __heapstats((__heapprt)fprintf,stderr);
davidjhoward 27:38205cebc3da 525 }
davidjhoward 27:38205cebc3da 526 }
davidjhoward 27:38205cebc3da 527 return true;
davidjhoward 27:38205cebc3da 528 }