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
Diff: src/CloudDataHandler/CloudFileReceiver.cpp
- Revision:
- 149:950c90425f7c
- Parent:
- 147:105bcf234f81
- Child:
- 162:5e8948b8044d
diff -r ee3cbaafe355 -r 950c90425f7c src/CloudDataHandler/CloudFileReceiver.cpp
--- a/src/CloudDataHandler/CloudFileReceiver.cpp Wed Sep 28 17:57:36 2016 +0000
+++ b/src/CloudDataHandler/CloudFileReceiver.cpp Fri Sep 30 12:22:20 2016 +0000
@@ -153,11 +153,22 @@
MailBox.put(msg);
break;
}
- case INPUT_CONFIG_MTYPE: {
+ case INPUT_CONFIG_MTYPE:
+ case VINPUT_CONFIG_MTYPE: {
+ std::string vcmd;
logInfo("id=%s", from_json["pay"]["input"]["id"].get<std::string>().c_str() );
- snprintf( filename, sizeof(FILENAME_STRING), "input_%s%s",
- from_json["pay"]["input"]["id"].get<std::string>().c_str(),
- ".json" );
+ if( mType == INPUT_CONFIG_MTYPE ) {
+ snprintf( filename, sizeof(FILENAME_STRING), "input_%s%s",
+ from_json["pay"]["input"]["id"].get<std::string>().c_str(),
+ ".json" );
+ vcmd = "";
+
+ } else {
+ snprintf( filename, sizeof(FILENAME_STRING), "vinput_%s%s",
+ from_json["pay"]["input"]["id"].get<std::string>().c_str(),
+ ".json" );
+ vcmd = from_json["pay"]["input"]["vcmd"].get<std::string>();
+ }
logInfo("INPUT CONFIG FILENAME=%s", filename);
memset( CloudFileReceiverWriteBuf, '\0', 1024 );
@@ -175,6 +186,7 @@
"\"size\":\"%s\", "
"\"order\":\"%s\", "
"\"fmt\":\"%s\", "
+ "\"vcmd\":\"%s\", "
"\"rfreq\":\"%s\" } ",
from_json["pay"]["input"]["id"].get<std::string>().c_str(),
from_json["pay"]["input"]["name"].get<std::string>().c_str(),
@@ -188,6 +200,7 @@
from_json["pay"]["input"]["size"].get<std::string>().c_str(),
from_json["pay"]["input"]["order"].get<std::string>().c_str(),
from_json["pay"]["input"]["fmt"].get<std::string>().c_str(),
+ vcmd.c_str(),
from_json["pay"]["input"]["rfreq"].get<std::string>().c_str()
);
@@ -204,11 +217,18 @@
ModbusMasterMailBox.put(mail);
break;
}
- case OUTPUT_CONFIG_MTYPE: {
+ case OUTPUT_CONFIG_MTYPE:
+ case VOUTPUT_CONFIG_MTYPE: {
logInfo("id=%s", from_json["pay"]["output"]["id"].get<std::string>().c_str() );
- snprintf( filename, sizeof(FILENAME_STRING), "output_%s%s",
- from_json["pay"]["output"]["id"].get<std::string>().c_str(),
- ".json" );
+ if( mType == OUTPUT_CONFIG_MTYPE ) {
+ snprintf( filename, sizeof(FILENAME_STRING), "output_%s%s",
+ from_json["pay"]["output"]["id"].get<std::string>().c_str(),
+ ".json" );
+ } else {
+ snprintf( filename, sizeof(FILENAME_STRING), "voutput_%s%s",
+ from_json["pay"]["output"]["id"].get<std::string>().c_str(),
+ ".json" );
+ }
logInfo("OUTPUT CONFIG FILENAME=%s", filename);
memset( CloudFileReceiverWriteBuf, '\0', 1024 );
@@ -315,13 +335,47 @@
MailBox.put(msg);
break;
}
+ case VIRTUAL_COMMAND_MTYPE: {
+ logInfo("PROCESSING VIRTUAL COMMAND FILE");
+ snprintf( filename, sizeof(FILENAME_STRING), "vcmd_%s.json",
+ from_json["pay"]["vcommand"]["id"].get<std::string>().c_str() );
+ logInfo("VIRTUAL COMMAND FILENAME=%s", filename);
+
+ memset( CloudFileReceiverWriteBuf, '\0', 1024 );
+ snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf),
+ "{ "
+ "\"id\":\"%s\", "
+ "\"constant\":\"%f\", "
+ "\"opl\":\"%s\", "
+ "\"opr\":\"%s\", "
+ "\"op\":\"%s\" } ",
+ from_json["pay"]["vcommand"]["id"].get<std::string>().c_str(),
+ atof(from_json["pay"]["vcommand"]["constant"].get<std::string>().c_str()),
+ from_json["pay"]["vcommand"]["opl"].get<std::string>().c_str(),
+ from_json["pay"]["vcommand"]["opr"].get<std::string>().c_str(),
+ from_json["pay"]["vcommand"]["op"].get<std::string>().c_str()
+ );
+
+ logInfo("saving string%s", CloudFileReceiverWriteBuf);
+ bool status = GLOBAL_mdot->saveUserFile(filename, (void *)CloudFileReceiverWriteBuf, 1024);
+ if( status != true ) {
+ logError("(%d)save file failed, status=%d", __LINE__, status);
+ }
+
+ logInfo("Sending Mail To ModbusMasterMailBox, filename=%s", filename);
+ Message_t *mail = ModbusMasterMailBox.alloc();
+ mail->action = ACTION_READ_FILE;
+ strncpy( mail->controlFile, filename, (sizeof(mail->controlFile)-1));
+ ModbusMasterMailBox.put(mail);
+ break;
+ }
default:
logInfo("DEFAULT");
break;
}
return true;
}
-
+bool CloudDataHandler_RcvFile = false;
bool CloudFileReceiver( std::string *recv_string, mDot *dot )
{
MbedJSONValue from_json;
@@ -329,11 +383,11 @@
parse( from_json, recv_string->c_str() );
int sequence = from_json["seq"].get<int>();
+ CloudDataHandler_RcvFile = false;
+
// sequence of -1 means string sent in 1 chunk.
if( sequence == -1 ) {
-
return StoreReceivedFile( dot, from_json );
-
} else if( sequence == 0 ) {
memset(CloudFileReceiverWriteBuf,0,sizeof(CloudFileReceiverWriteBuf));
@@ -345,6 +399,7 @@
logError("(%d)save file failed, status=%d", __LINE__, status);
return false;
}
+ CloudDataHandler_RcvFile = true;
logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf));
} else if( sequence == -2 ) {
@@ -401,6 +456,7 @@
logError("(%d)save file failed, status=%d", __LINE__, status);
return false;
}
+ CloudDataHandler_RcvFile = true;
logInfo("(%d)UPDATED scratch.json FILE, status:%d, strlen=%d", __LINE__, status, strlen(CloudFileReceiverWriteBuf));
}
