#include "interpret.h"
#include "mTaskSymbols.h"
#include "sds.h"
+#include "spec.h"
#include "task.h"
#include "interface.h"
#define MSG_SDS_SPEC 's'
#define MSG_SDS_DEL 'a'
#define MSG_SDS_UPD 'u'
+#define MSG_SPEC 'c'
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;
// 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');
}
}
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;
}