Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Revision:
134:f90154ff33ec
Parent:
116:7337ed514891
Child:
138:27c39d0e4e81
--- a/src/CloudDataHandler/CloudFileReceiver.cpp	Tue Sep 27 12:18:47 2016 +0000
+++ b/src/CloudDataHandler/CloudFileReceiver.cpp	Tue Sep 27 15:36:37 2016 +0000
@@ -18,11 +18,100 @@
     switch( mType ) {
         case SETPOINT_CONTROL_MTYPE: {
             logInfo("PROCESSING SETPONT CONTROL FILE");
-            snprintf( filename, sizeof(FILENAME_STRING), "%s_%s%s",
-                      from_json["pay"]["spcontrol"]["id"].get<std::string>().c_str(),
-                      from_json["pay"]["spcontrol"]["input"].get<std::string>().c_str(),
-                      ".json" );
+            snprintf( filename, sizeof(FILENAME_STRING), "control_sp_%s.json",
+                      from_json["pay"]["spcontrol"]["id"].get<std::string>().c_str() );
             logInfo("SETPONT CONTROL FILENAME=%s", filename);
+
+            memset( CloudFileReceiverWriteBuf, '\0', 1024 );
+            snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf),
+                     "{ "
+                     "\"id\":           \"%s\", "
+                     "\"priority\":     \"%s\","
+                     "\"input\":        \"%s\", "
+                     "\"output\":       \"%s\", "
+                     "\"setpoint\":     \"%s\","
+                     "\"prodfact\":     \"%s\","
+                     "\"actingDir\":    \"%s\", "
+                     "\"halert\":       \"%s\","
+                     "\"lalert\":       \"%s\", "
+                     "\"hfs\":          \"%s\","
+                     "\"lfs\":          \"%s\", "
+                     "\"tol\":          \"%s\"  }",
+                     from_json["pay"]["spcontrol"]["id"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["priority"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["input"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["output"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["setpoint"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["prodfact"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["actingDir"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["halert"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["lalert"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["hfs"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["lfs"].get<std::string>().c_str(),
+                     from_json["pay"]["spcontrol"]["tol"].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);
+            }
+
+            // send a message to the configuration handler to create the control
+            Message_t *msg  = MailBox.alloc();
+            memset(msg, 0, sizeof(Message_t));
+            msg->action  = ACTION_CREATE;
+            msg->control = CONTROL_SETPOINT;
+            strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1);
+
+            printf("%s: Sending a create request for control %s type = %u\r\n", __func__, msg->controlFile, msg->control);
+
+            MailBox.put(msg);
+            break;
+        }
+        case MAN_CONTROL_MTYPE: {
+            logInfo("PROCESSING MANUAL CONTROL FILE");
+            snprintf( filename, sizeof(FILENAME_STRING), "control_mn_%s.json",
+                      from_json["pay"]["mncontrol"]["id"].get<std::string>().c_str() );
+            logInfo("MANUAL CONTROL FILENAME=%s", filename);
+
+            memset( CloudFileReceiverWriteBuf, '\0', 1024 );
+            snprintf(CloudFileReceiverWriteBuf, sizeof(CloudFileReceiverWriteBuf),
+                     "{ "
+                     "\"id\":           \"%s\",  "
+                     "\"output\":       \"%s\",  "
+                     "\"type\":         \"%s\",   "
+                     "\"priority\":     \"%s\", "
+                     "\"duration\":     \"%s\",   "
+                     "\"setpoint\":     \"%s\",   "
+                     "\"state\":        \"%s\",  "
+                     "\"percent\":      \"%s\"  }",
+                     from_json["pay"]["mncontrol"]["id"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["output"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["type"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["priority"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["duration"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["setpoint"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["state"].get<std::string>().c_str(),
+                     from_json["pay"]["mncontrol"]["percent"].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);
+            }
+
+            // send a message to the configuration handler to create the control
+            Message_t *msg  = MailBox.alloc();
+            memset(msg, 0, sizeof(Message_t));
+            msg->action  = ACTION_CREATE;
+            msg->control = CONTROL_MANUAL;
+            strncpy(msg->controlFile, filename, sizeof(msg->controlFile)-1);
+
+            printf("%s: Sending a create manual for control %s type = %u\r\n", __func__, msg->controlFile, msg->control);
+
+            MailBox.put(msg);
             break;
         }
         case TIMER_CONTROL_MTYPE: