Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

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));
 
     }