build C support for interrupts
[mTask.git] / client / main.c
index f86beff..1818238 100644 (file)
@@ -74,17 +74,19 @@ void loop(void)
 //                     debug("Task %d not implemented\n", ct);
                        continue;
                }
-               //Onshot task
-               if(curtask->interval == 0){
-                       run_task(curtask);
-                       curtask->used = false;
-               //Interrupt task
-               } else if(curtask->interval & 32768){
+               //interrupt task
+               if(is_interrupt_task(curtask) && had_interrupt(curtask)){
                        debug("Interrupt task %d not implemented", ct);
-               //Interval task, check if interval is passed
+                       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;
                }
        }