Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Mon Sep 12 22:19:27 2016 +0000
Revision:
45:3b9e1923cb15
Parent:
31:4b1587034318
Child:
49:0456ee2271be
Cloud File Handling

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 45:3b9e1923cb15 6 char CloudFileReceiverDataBuf[1024];
davidjhoward 45:3b9e1923cb15 7
davidjhoward 27:38205cebc3da 8 bool CloudFileReceiver( std::string *recv_string, mDot *dot )
davidjhoward 27:38205cebc3da 9 {
davidjhoward 27:38205cebc3da 10 MbedJSONValue from_json;
davidjhoward 27:38205cebc3da 11 bool status;
davidjhoward 45:3b9e1923cb15 12
davidjhoward 27:38205cebc3da 13 parse( from_json, recv_string->c_str() );
davidjhoward 27:38205cebc3da 14
davidjhoward 27:38205cebc3da 15 int sequence = from_json["seq"].get<int>();
davidjhoward 45:3b9e1923cb15 16 // printf("Received command: %s\r\n", recv_string->c_str());
davidjhoward 31:4b1587034318 17 // sequence of -1 means string sent in 1 chunk.
davidjhoward 27:38205cebc3da 18 if( sequence == -1 ) {
davidjhoward 27:38205cebc3da 19 FILENAME_STRING filename;
davidjhoward 27:38205cebc3da 20
davidjhoward 27:38205cebc3da 21 int mType = from_json["pay"]["mtype"].get<int>();
davidjhoward 45:3b9e1923cb15 22 logInfo("mtype=%d\r\n", mType);
davidjhoward 27:38205cebc3da 23
davidjhoward 27:38205cebc3da 24 memset( filename, '\0', sizeof(FILENAME_STRING) );
davidjhoward 27:38205cebc3da 25
davidjhoward 27:38205cebc3da 26 switch( mType ) {
davidjhoward 45:3b9e1923cb15 27 case SETPOINT_CONTROL_MTYPE: {
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 45:3b9e1923cb15 38 case INPUT_CONFIG_MTYPE: {
davidjhoward 31:4b1587034318 39 snprintf( filename, sizeof(FILENAME_STRING), "input_%s%s",
davidjhoward 31:4b1587034318 40 from_json["pay"]["input"]["id"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 41 ".jsn" );
davidjhoward 31:4b1587034318 42 logInfo("INPUT CONFIG FILENAME=%s", filename);
davidjhoward 31:4b1587034318 43
davidjhoward 45:3b9e1923cb15 44 memset( CloudFileReceiverDataBuf, '\0', 1024 );
davidjhoward 45:3b9e1923cb15 45 snprintf(CloudFileReceiverDataBuf, sizeof(CloudFileReceiverDataBuf),
davidjhoward 45:3b9e1923cb15 46 "{ "
davidjhoward 45:3b9e1923cb15 47 "\"id\":\"%s\", "
davidjhoward 45:3b9e1923cb15 48 "\"name\":\"%s\", "
davidjhoward 45:3b9e1923cb15 49 "\"units\":\"%s\", "
davidjhoward 45:3b9e1923cb15 50 "\"min\":\"%s\", "
davidjhoward 45:3b9e1923cb15 51 "\"max\":\"%s\", "
davidjhoward 45:3b9e1923cb15 52 "\"node\":\"%s\", "
davidjhoward 45:3b9e1923cb15 53 "\"reg\":\"%s\", "
davidjhoward 45:3b9e1923cb15 54 "\"rtype\":\"%s\", "
davidjhoward 45:3b9e1923cb15 55 "\"type\":\"%s\", "
davidjhoward 45:3b9e1923cb15 56 "\"size\":\"%s\", "
davidjhoward 45:3b9e1923cb15 57 "\"order\":\"%s\" } ",
davidjhoward 45:3b9e1923cb15 58 from_json["pay"]["input"]["id"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 59 from_json["pay"]["input"]["name"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 60 from_json["pay"]["input"]["units"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 61 from_json["pay"]["input"]["min"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 62 from_json["pay"]["input"]["max"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 63 from_json["pay"]["input"]["node"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 64 from_json["pay"]["input"]["reg"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 65 from_json["pay"]["input"]["rtype"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 66 from_json["pay"]["input"]["type"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 67 from_json["pay"]["input"]["size"].get<std::string>().c_str(),
davidjhoward 45:3b9e1923cb15 68 from_json["pay"]["input"]["order"].get<std::string>().c_str()
davidjhoward 45:3b9e1923cb15 69 );
davidjhoward 45:3b9e1923cb15 70
davidjhoward 45:3b9e1923cb15 71 logInfo("saving string%s", CloudFileReceiverDataBuf);
davidjhoward 45:3b9e1923cb15 72 bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverDataBuf, 1024);
davidjhoward 45:3b9e1923cb15 73 if( status != true ) {
davidjhoward 45:3b9e1923cb15 74 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 45:3b9e1923cb15 75 }
davidjhoward 45:3b9e1923cb15 76
davidjhoward 45:3b9e1923cb15 77 logInfo("Sending Mail To ModbusMasterMailBox, filename=%s", filename);
davidjhoward 31:4b1587034318 78 Message_t *mail = ModbusMasterMailBox.alloc();
davidjhoward 31:4b1587034318 79 mail->action = ACTION_READ_FILE;
davidjhoward 31:4b1587034318 80 strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1));
davidjhoward 31:4b1587034318 81 ModbusMasterMailBox.put(mail);
davidjhoward 31:4b1587034318 82 break;
davidjhoward 31:4b1587034318 83 }
davidjhoward 27:38205cebc3da 84 default:
davidjhoward 27:38205cebc3da 85 logInfo("DEFAULT");
davidjhoward 27:38205cebc3da 86 break;
davidjhoward 27:38205cebc3da 87 }
davidjhoward 27:38205cebc3da 88
davidjhoward 27:38205cebc3da 89 return false;
davidjhoward 27:38205cebc3da 90
davidjhoward 27:38205cebc3da 91 } else if( sequence == 0 ) {
davidjhoward 27:38205cebc3da 92 char data_buf[1024];
davidjhoward 27:38205cebc3da 93 // std::string file_string(1024, '\0');
davidjhoward 27:38205cebc3da 94 // std::string recv_payload(from_json["pay"].get<std::string>().c_str());
davidjhoward 27:38205cebc3da 95 // file_string.replace(0,recv_payload.length(), recv_payload.c_str());
davidjhoward 27:38205cebc3da 96 // logInfo("(%d)File String Length=%d, %s", __LINE__, file_string.length(), file_string.c_str() );
davidjhoward 27:38205cebc3da 97
davidjhoward 27:38205cebc3da 98 memset(data_buf,0,sizeof(data_buf));
davidjhoward 27:38205cebc3da 99 snprintf(data_buf, sizeof(data_buf), "%s", from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 100 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 101
davidjhoward 27:38205cebc3da 102 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 103 if( status != true ) {
davidjhoward 27:38205cebc3da 104 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 105 return false;
davidjhoward 27:38205cebc3da 106 }
davidjhoward 27:38205cebc3da 107 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 108 } else if( sequence == -2 ) {
davidjhoward 27:38205cebc3da 109
davidjhoward 27:38205cebc3da 110 logInfo("(%d)READING BACK scratch.json FILE FOR LAST PACKET", __LINE__);
davidjhoward 27:38205cebc3da 111
davidjhoward 27:38205cebc3da 112 char scratch_buf[1024];
davidjhoward 27:38205cebc3da 113 char data_buf[1024];
davidjhoward 27:38205cebc3da 114
davidjhoward 27:38205cebc3da 115 // read the file back
davidjhoward 27:38205cebc3da 116 status = dot->readUserFile("scratch.json", (void *)scratch_buf, 1024);
davidjhoward 27:38205cebc3da 117 if( status != true ) {
davidjhoward 27:38205cebc3da 118 logInfo("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 119 return false;
davidjhoward 27:38205cebc3da 120 }
davidjhoward 27:38205cebc3da 121
davidjhoward 27:38205cebc3da 122 snprintf(data_buf, sizeof(data_buf), "%s%s", scratch_buf, from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 123 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 124
davidjhoward 27:38205cebc3da 125 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 126 if( status != true ) {
davidjhoward 27:38205cebc3da 127 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 128 return false;
davidjhoward 27:38205cebc3da 129 }
davidjhoward 27:38205cebc3da 130 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 131 } else {
davidjhoward 27:38205cebc3da 132
davidjhoward 27:38205cebc3da 133 logInfo("(%d)READING BACK scratch.json FILE", __LINE__);
davidjhoward 27:38205cebc3da 134
davidjhoward 27:38205cebc3da 135 char scratch_buf[1024];
davidjhoward 27:38205cebc3da 136 char data_buf[1024];
davidjhoward 27:38205cebc3da 137
davidjhoward 27:38205cebc3da 138 // read the file back
davidjhoward 27:38205cebc3da 139 status = dot->readUserFile("scratch.json", (void *)scratch_buf, 1024);
davidjhoward 27:38205cebc3da 140 if( status != true ) {
davidjhoward 27:38205cebc3da 141 logInfo("(%d)read file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 142 return false;
davidjhoward 27:38205cebc3da 143 }
davidjhoward 27:38205cebc3da 144
davidjhoward 27:38205cebc3da 145 snprintf(data_buf, sizeof(data_buf), "%s%s", scratch_buf, from_json["pay"].get<std::string>().c_str() );
davidjhoward 27:38205cebc3da 146 logInfo("(%d)Writing String Length=%d, %s", __LINE__, 1024, data_buf );
davidjhoward 27:38205cebc3da 147
davidjhoward 27:38205cebc3da 148 status = dot->saveUserFile("scratch.json", (void *)data_buf, 1024);
davidjhoward 27:38205cebc3da 149 if( status != true ) {
davidjhoward 27:38205cebc3da 150 logInfo("(%d)save file failed, status=%d", __LINE__, status);
davidjhoward 27:38205cebc3da 151 return false;
davidjhoward 27:38205cebc3da 152 }
davidjhoward 27:38205cebc3da 153 logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(data_buf));
davidjhoward 27:38205cebc3da 154 }
davidjhoward 27:38205cebc3da 155
davidjhoward 27:38205cebc3da 156 return true;
davidjhoward 27:38205cebc3da 157 }