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/ConfigurationHandler/ConfigurationHandler.cpp
- Revision:
- 1:057d8fc6cb2f
- Parent:
- 0:65cfa4873284
- Child:
- 2:da28f21b72a1
diff -r 65cfa4873284 -r 057d8fc6cb2f src/ConfigurationHandler/ConfigurationHandler.cpp
--- a/src/ConfigurationHandler/ConfigurationHandler.cpp	Thu Sep 01 18:57:04 2016 +0000
+++ b/src/ConfigurationHandler/ConfigurationHandler.cpp	Thu Sep 01 19:42:11 2016 +0000
@@ -114,7 +114,7 @@
 {
     printf("\r\n%s: invoked with %s [%u]\n",
            __func__, msg->controlFile, msg->control);
-
+    
     switch (msg->control) {
         case CONTROL_TIMER: {
             Thread *t = spawnNewTimerControl(msg->controlFile);
@@ -186,31 +186,58 @@
     }
 }
 
-static Thread* spawnNewTimerControl( const char *controlFile )
+static Thread *spawnNewTimerControl( const char *controlFile)
 {
-    Thread *t = new Thread(TimerControl, (void *)controlFile);
+    // TODO: Be sure to free these args when the thread dies 
+    Args_t *args = (Args_t*)malloc(sizeof(Args_t));
+    
+    strncpy(args->controlFile, controlFile, sizeof(args->controlFile));
+    args->reserved = 0;
+    
+    Thread *t = new Thread(TimerControl, (void *)args);
     return t;
 }
 static Thread*  spawnNewPIDControl( const char *controlFile )
 {
-    Thread *t = new Thread(PIDControl, (void *)controlFile);
+    Args_t *args = (Args_t *)malloc(sizeof(Args_t));
+    
+    strncpy(args->controlFile, controlFile, sizeof(args->controlFile));
+    args->reserved = 0;
+    
+    Thread *t = new Thread(PIDControl, (void *)args);
     return t;
 }
 
 static Thread*  spawnNewSetpointControl( const char *controlFile )
 {
-    Thread *t = new Thread(SetpointControl, (void *)controlFile);
+    Args_t *args = (Args_t *)malloc(sizeof(Args_t));
+    
+    strncpy(args->controlFile, controlFile, sizeof(args->controlFile));
+    args->reserved = 0;
+    
+    Thread *t = new Thread(SetpointControl, (void *)args);
     return t;
 }
 
-static Thread*  spawnNewCompositeControl(const char *controlFile)
+static Thread* spawnNewCompositeControl(const char *controlFile)
 {
-    Thread *t = new Thread(CompositeControl, (void *)controlFile);
+    Args_t *args = (Args_t *)malloc(sizeof(Args_t));
+    
+    strncpy(args->controlFile, controlFile, sizeof(args->controlFile));
+    args->reserved = 0;
+
+    Thread *t = new Thread(CompositeControl, (void *)args);
     return t;
 }
+
 static Thread*  spawnNewManualControl(const char *controlFile)
 {
-    Thread *t = new Thread(ManualControl, (void *)controlFile);
+    Args_t *args = (Args_t *)malloc(sizeof(Args_t));
+    
+    strncpy(args->controlFile, controlFile, sizeof(args->controlFile));
+    args->reserved = 0;
+
+    Thread *t = new Thread(ManualControl, (void *)args);
     return t;
 }
 
    