update device name instead of record
[mTask.git] / client / main.c
index 90f6e5f..720fd1a 100644 (file)
@@ -11,6 +11,7 @@
 #include "interpret.h"
 #include "mTaskSymbols.h"
 #include "sds.h"
+#include "spec.h"
 #include "task.h"
 #include "interface.h"
 
@@ -19,6 +20,7 @@
 #define MSG_SDS_SPEC 's'
 #define MSG_SDS_DEL 'a'
 #define MSG_SDS_UPD 'u'
+#define MSG_SPEC 'c'
 
 void read_message(void)
 {
@@ -48,7 +50,12 @@ void read_message(void)
                        debug("Receiving a task");
                        task_register();
                        break;
+               case MSG_SPEC:
+                       debug("Receiving a spec request");
+                       spec_send();
+                       break;
                case '\0':
+                       debug("Server closed connection");
                        break;
                case '\n':
                        break;
@@ -74,21 +81,21 @@ void loop(void)
 //                     debug("Task %d not implemented\n", ct);
                        continue;
                }
-               //See whether the task interval has passed
-               if(cyclestart-curtask->lastrun < curtask->interval){
-//                     debug("Task %d not scheduled\n", ct);
-                       continue;
-               }
-               debug("Current task to run: %d", ct);
-               run_task(curtask);
-               curtask->lastrun = cyclestart;
-               if(curtask->interval == 0){
-                       curtask->used = false;
-                       write_byte('m');
-                       write_byte('d');
-                       write_byte('\n');
+               //interrupt task
+               if(is_interrupt_task(curtask) && had_interrupt(curtask)){
+                       debug("Interrupt task %d not implemented", ct);
+                       run_task(curtask);
+               //Interval task, and interval passed
+               } else if(cyclestart-curtask->lastrun > curtask->interval){
+                       debug("Running interval task: %d", ct);
+                       run_task(curtask);
+
+                       //Oneshot task, thus disable
+                       if(curtask->interval == 0){
+                               curtask->used = false;
+                       }
+                       curtask->lastrun = cyclestart;
                }
-               write_byte('\n');
        }
 }
 
@@ -104,12 +111,11 @@ int main(int argc, char *argv[]){
        setup();
        sds_init();
        task_init();
-       //debug("booting up");
+       debug("sending device spec");
        while(true){
                //Check for newetasks
-//             debug("loop");
                loop();
-               delay(50);
+               delay(100);
        }
        return 0;
 }