#include "misc.h"
#include "task.h"
-struct task tasks[MAXTASKS] = {0};
+struct task tasks[MAXTASKS];
uint8_t c;
+void task_init()
+{
+ memset(&tasks, 0, sizeof(struct task)*MAXTASKS);
+}
+
int task_register(int fd)
{
uint8_t ct;
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;
+ read16(fd, c, tasks[ct].interval);
//Read tasklength
- read(fd, &c, 1);
- tasks[ct].tlen = 256*c;
- read(fd, &c, 1);
- tasks[ct].tlen += c;
+ read16(fd, c, tasks[ct].tlen);
+
if(tasks[ct].tlen > MAXTASKSIZE)
die("Task is too long: %d\n", tasks[ct].tlen);
//Read task bytecode
for(int i = 0; i<tasks[ct].tlen; i++){
- debug("Read %d\n", i);
read(fd, tasks[ct].bc+i, 1);
- debug("t[][%i]: %d\n", i,
- tasks[ct].bc[i]);
+ debug("t[][%i]: 0x%02x %d\n", i,
+ tasks[ct].bc[i], tasks[ct].bc[i]);
}
//Return the task number for later removal
debug("Received a task of length %d\n", tasks[ct].tlen);