X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=client%2Fclient.c;h=ce1d1f2164a805ccc9bbb97739bf93e2581379c5;hb=09b207a39b7791098daafd7d87c3ad9d3db3e19f;hp=8fa596fb64cb75e595f7c49ef4a548dcbce002fe;hpb=2e196d4e484c3945f7e6bd1c680a2021613bece7;p=mTask.git diff --git a/client/client.c b/client/client.c index 8fa596f..ce1d1f2 100644 --- a/client/client.c +++ b/client/client.c @@ -21,6 +21,8 @@ #define MSG_SDS_UPD 'u' #define MSG_SPEC 'c' +#define LOOPDELAY 100 + void read_message(void) { //Find next task @@ -43,7 +45,12 @@ void read_message(void) break; case MSG_DEL_TASK: debug("Receiving a delete task request"); - task_delete(); + c = read16(); + task_delete(c); + //Write acknowledgement + write_byte('d'); + write16(c); + write_byte('\n'); break; case MSG_GET_TASK: debug("Receiving a task"); @@ -61,39 +68,41 @@ void read_message(void) default: debug("Unknown message: %X", c); } + } else { +// debug("No input"); } } +unsigned long loopmillis = 0; void loop(void) { - int ct; - long cyclestart; - struct task *curtask; +#ifdef ARDUINO_ESP8266_NODEMCU + if(getmillis()-loopmillis < LOOPDELAY){ + return; + } + loopmillis = getmillis(); +#endif + debug("Loop"); read_message(); //Run tasks - cyclestart = getmillis(); - for(ct = 0; cttaskid); + run_task(t); //Interval task, and interval passed - } else if(cyclestart-curtask->lastrun > curtask->interval){ - debug("Running interval task: %d", ct); - run_task(curtask); + } else if(cyclestart-t->lastrun > t->interval){ + debug("Running interval task: %d", t->taskid); + run_task(t); //Oneshot task, thus disable - if(curtask->interval == 0){ - curtask->used = false; + if(t->interval == 0){ + task_delete(t->taskid); } - curtask->lastrun = cyclestart; + t->lastrun = cyclestart; } } } @@ -109,17 +118,18 @@ int main(int argc, char *argv[]){ #endif //Initialize systems - setup(); + real_setup(); sds_init(); task_init(); debug("sending device spec"); + +#ifndef ARDUINO_ESP8266_NODEMCU while(true){ //Check for newtasks loop(); - msdelay(100); + msdelay(LOOPDELAY); } -#ifndef ARDUINO_ESP8266_NODEMCU return 0; #endif }