X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=client%2Fmain.c;h=4919d9d668c12cbb0aebf7f62fb1a027594fd2cb;hb=88ecd686ff62986cde139abb65ab52b9e93d3035;hp=3388f2102e74e6ceb44b0ce0ee3d68283fb6ecc1;hpb=6c8939998c64aafb8cdfa40e52a227bf72767648;p=mTask.git diff --git a/client/main.c b/client/main.c index 3388f21..4919d9d 100644 --- a/client/main.c +++ b/client/main.c @@ -3,28 +3,34 @@ #include #include -#ifdef STM -#else +#ifdef LINUX #include +#elif defined NODEMCU +#include "ets_sys.h" +#include "osapi.h" +#include "gpio.h" +#include "os_type.h" #endif #include "interpret.h" #include "mTaskSymbols.h" #include "sds.h" +#include "spec.h" #include "task.h" #include "interface.h" #define MSG_GET_TASK 't' #define MSG_DEL_TASK 'd' #define MSG_SDS_SPEC 's' +#define MSG_SDS_DEL 'a' #define MSG_SDS_UPD 'u' +#define MSG_SPEC 'c' void read_message(void) { //Find next task if(input_available()){ uint8_t c = read_byte(); - uint8_t ct; debug("Receiving input: %c %02x\n", c, c); switch(c){ case MSG_SDS_SPEC: @@ -36,18 +42,24 @@ void read_message(void) //TODO do something with the return value sds_update(); break; + case MSG_SDS_DEL: + debug("Receiving a delete SDS request"); + sds_delete(); + break; case MSG_DEL_TASK: debug("Receiving a delete task request"); task_delete(); break; case MSG_GET_TASK: debug("Receiving a task"); - ct = task_register(); - write_byte('t'); - write16(ct); - write_byte('\n'); + task_register(); + break; + case MSG_SPEC: + debug("Receiving a spec request"); + spec_send(); break; case '\0': + debug("Server closed connection"); break; case '\n': break; @@ -73,27 +85,29 @@ 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'); } } #ifdef STM int main(void){ -#else +#elif defined NODEMCU +void ICACHE_FLASH_ATTR user_init(){ +#elif defined LINUX int main(int argc, char *argv[]){ gargc = argc; gargv = argv; @@ -103,12 +117,14 @@ 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"); + //Check for newtasks loop(); - delay(50); + delay(100); } + +#ifndef NODEMCU return 0; +#endif }