X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=int%2Ftask.c;h=4ac8ce5075d8af8912c80c0ed6ea4a8faf6be22a;hb=c6709b5f2b35baa57f11e557d4baa96d6b9a54cf;hp=13fbd07d437a9cf3176d46bc28be51caf6627f91;hpb=fa71b6dc45c53e87d9045eb7cdf3cd4328ad0e7d;p=mTask.git diff --git a/int/task.c b/int/task.c index 13fbd07..4ac8ce5 100644 --- a/int/task.c +++ b/int/task.c @@ -1,15 +1,22 @@ -#include #include #include + +#ifndef STM #include +#include +#endif -#include "misc.h" #include "task.h" +#include "interface.h" + +struct task tasks[MAXTASKS]; -struct task tasks[MAXTASKS] = {0}; -uint8_t c; +void task_init(void) +{ + memset(&tasks, 0, sizeof(struct task)*MAXTASKS); +} -int task_register(int fd) +int task_register(void) { uint8_t ct; @@ -17,38 +24,35 @@ int task_register(int fd) if(!tasks[ct].used) break; if(ct == MAXTASKS) - die("Trying to add too much tasks...\n"); + die("Trying to add too much tasks..."); memset(&tasks[ct], 0, sizeof(struct task)); //Read interval - read(fd, &c, 1); - tasks[ct].interval = 256*c; - read(fd, &c, 1); - tasks[ct].interval += c; + tasks[ct].interval = read16(); //Read tasklength - read(fd, &c, 1); - tasks[ct].tlen = 256*c; - read(fd, &c, 1); - tasks[ct].tlen += c; + tasks[ct].tlen = read16(); + debug("task interval: %d, length: %d\n", + tasks[ct].interval, tasks[ct].tlen); + if(tasks[ct].tlen > MAXTASKSIZE) - die("Task is too long: %d\n", tasks[ct].tlen); + die("Task is too long: %d", tasks[ct].tlen); //Read task bytecode - for(int i = 0; i