Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Thu Sep 08 21:15:11 2016 +0000
Revision:
31:4b1587034318
Parent:
27:38205cebc3da
Child:
45:3b9e1923cb15
file receiving capabilities in CloudDataHandler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidjhoward 27:38205cebc3da 1 #include "CloudFileReceiver.h"
davidjhoward 27:38205cebc3da 2 #include "MTSLog.h"
davidjhoward 27:38205cebc3da 3 #include "MbedJSONValue.h"
davidjhoward 31:4b1587034318 4 #include "global.h"
davidjhoward 27:38205cebc3da 5
davidjhoward 27:38205cebc3da 6 bool CloudFileReceiver( std::string *recv_string, mDot *dot )
davidjhoward 27:38205cebc3da 7 {
davidjhoward 27:38205cebc3da 8 MbedJSONValue from_json;
davidjhoward 27:38205cebc3da 9 bool status;
davidjhoward 31:4b1587034318 10
davidjhoward 27:38205cebc3da 11 parse( from_json, recv_string->c_str() );
davidjhoward 27:38205cebc3da 12
davidjhoward 27:38205cebc3da 13 int sequence = from_json["seq"].get<int>();
davidjhoward 27:38205cebc3da 14 logInfo("Received command: %s", recv_string->c_str());
davidjhoward 31:4b1587034318 15 // sequence of -1 means string sent in 1 chunk.
davidjhoward 27:38205cebc3da 16 if( sequence == -1 ) {
davidjhoward 27:38205cebc3da 17
davidjhoward 27:38205cebc3da 18 FILENAME_STRING filename;
davidjhoward 27:38205cebc3da 19
davidjhoward 27:38205cebc3da 20 int mType = from_json["pay"]["mtype"].get<int>();
davidjhoward 27:38205cebc3da 21 logInfo("mtype=%d", mType);
davidjhoward 27:38205cebc3da 22
davidjhoward 27:38205cebc3da 23 memset( filename, '\0', sizeof(FILENAME_STRING) );
davidjhoward 27:38205cebc3da 24
davidjhoward 27:38205cebc3da 25 switch( mType ) {
davidjhoward 27:38205cebc3da 26 case SETPOINT_CONTROL_MTYPE:
davidjhoward 31:4b1587034318 27 {
davidjhoward 27:38205cebc3da 28 logInfo("PROCESSING SETPONT CONTROL FILE");
davidjhoward 31:4b1587034318 29 snprintf( filename, sizeof(FILENAME_STRING), "%s_%s%s",
davidjhoward 27:38205cebc3da 30 from_json["pay"]["spcontrol"]["id"].get<std::string>().c_str(),
davidjhoward 27:38205cebc3da 31 from_json["pay"]["spcontrol"]["input"].get<std::string>().c_str(),
davidjhoward 27:38205cebc3da 32 ".json" );
davidjhoward 27:38205cebc3da 33 logInfo("SETPONT CONTROL FILENAME=%s", filename);
davidjhoward 27:38205cebc3da 34 break;
davidjhoward 31:4b1587034318 35 }
davidjhoward 27:38205cebc3da 36 case TIMER_CONTROL_MTYPE:
davidjhoward 27:38205cebc3da 37 break;
davidjhoward 31:4b1587034318 38 case INPUT_CONFIG_MTYPE:
davidjhoward 31:4b1587034318 39 {
davidjhoward 31:4b1587034318 40 logInfo("PROCESSING INPUT CONFIG FILE");
davidjhoward 31:4b1587034318 41 snprintf( filename, sizeof(FILENAME_STRING), "input_%s%s",
davidjhoward 31:4b1587034318 42 from_json["pay"]["input"]["id"].get<std::string>().c_str(),
davidjhoward 31:4b1587034318 43 ".json" );
davidjhoward 31:4b1587034318 44 logInfo("INPUT CONFIG FILENAME=%s", filename);
davidjhoward 31:4b1587034318 45
davidjhoward 31:4b1587034318 46 logInfo("Sending Mail To ModbusMasterMailBox, filename=%s");
davidjhoward 31:4b1587034318 47 Message_t *mail = ModbusMasterMailBox.alloc();
davidjhoward 31:4b1587034318 48 mail->action = ACTION_READ_FILE;
davidjhoward 31:4b1587034318 49 strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1));
davidjhoward 31:4b1587034318 50 ModbusMasterMailBox.put(mail);
davidjhoward 31:4b1587034318 51 break;
davidjhoward 31:4b1587034318 52 }
davidjhoward 27:38205cebc3da 53 default:
davidjhoward 27:38205cebc3da 54 logInfo("DEFAULT");
davidjhoward 27:38205cebc3da 55 break;
davidjhoward 27:38205cebc3da 56 }
davidjhoward 27:38205cebc3da 57
davidjhoward 27:38205cebc3da 58 return false;
davidjhoward 27:38205cebc3da 59
davidjhoward 27:38205cebc3da 60 } else if( sequence == 0 ) {
davidjhoward 27:38205cebc3da 61 char data_buf[1024];
davidjhoward 27:38205cebc3da 62 // std::string file_string(1024, '\0');
davidjhoward 27:38205cebc3da 63 // std::string recv_payload(from_json["pay"].get<std::string>().c_str());
davidjhoward 27:38205cebc3da 64 // file_string.replace(0,recv_payload.length(), recv_payload.c_str());
davidjhoward 27:38205cebc3da 65 // logInfo("(%d)File String Length=%d, %s", __LINE__, file_string.length(), file_string.c_str() );
davidjhoward 27:38205cebc3da 66
davidjhoward 27:38205cebc3da 67 memset(data_buf,0,sizeof(data_buf));
davidjhoward 27:38205cebc3da 68 snprintf(data_buf, sizeof(data_buf), "%s", from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 69 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 70
davidjhoward 27:38205cebc3da 71 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 72 if( status != true ) {
davidjhoward 27:38205cebc3da 73 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 74 return false;
davidjhoward 27:38205cebc3da 75 }
davidjhoward 27:38205cebc3da 76 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 77 } else if( sequence == -2 ) {
davidjhoward 27:38205cebc3da 78
davidjhoward 27:38205cebc3da 79 logInfo("(%d)READING BACK scratch.json FILE FOR LAST PACKET", __LINE__);
davidjhoward 27:38205cebc3da 80
davidjhoward 27:38205cebc3da 81 char scratch_buf[1024];
davidjhoward 27:38205cebc3da 82 char data_buf[1024];
davidjhoward 27:38205cebc3da 83
davidjhoward 27:38205cebc3da 84 // read the file back
davidjhoward 27:38205cebc3da 85 status = dot->readUserFile("scratch.json", (void *)scratch_buf, 1024);
davidjhoward 27:38205cebc3da 86 if( status != true ) {
davidjhoward 27:38205cebc3da 87 logInfo("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 88 return false;
davidjhoward 27:38205cebc3da 89 }
davidjhoward 27:38205cebc3da 90
davidjhoward 27:38205cebc3da 91 snprintf(data_buf, sizeof(data_buf), "%s%s", scratch_buf, from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 92 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 93
davidjhoward 27:38205cebc3da 94 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 95 if( status != true ) {
davidjhoward 27:38205cebc3da 96 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 97 return false;
davidjhoward 27:38205cebc3da 98 }
davidjhoward 27:38205cebc3da 99 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 100 } else {
davidjhoward 27:38205cebc3da 101
davidjhoward 27:38205cebc3da 102 logInfo("(%d)READING BACK scratch.json FILE", __LINE__);
davidjhoward 27:38205cebc3da 103
davidjhoward 27:38205cebc3da 104 char scratch_buf[1024];
davidjhoward 27:38205cebc3da 105 char data_buf[1024];
davidjhoward 27:38205cebc3da 106
davidjhoward 27:38205cebc3da 107 // read the file back
davidjhoward 27:38205cebc3da 108 status = dot->readUserFile("scratch.json", (void *)scratch_buf, 1024);
davidjhoward 27:38205cebc3da 109 if( status != true ) {
davidjhoward 27:38205cebc3da 110 logInfo("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 111 return false;
davidjhoward 27:38205cebc3da 112 }
davidjhoward 27:38205cebc3da 113
davidjhoward 27:38205cebc3da 114 snprintf(data_buf, sizeof(data_buf), "%s%s", scratch_buf, from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 115 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 116
davidjhoward 27:38205cebc3da 117 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 118 if( status != true ) {
davidjhoward 27:38205cebc3da 119 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 120 return false;
davidjhoward 27:38205cebc3da 121 }
davidjhoward 27:38205cebc3da 122 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 123 }
davidjhoward 27:38205cebc3da 124
davidjhoward 27:38205cebc3da 125 return true;
davidjhoward 27:38205cebc3da 126 }