From f39868397acdc4cdcb71b58926dee62327933336 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Wed, 5 Apr 2017 11:13:11 +0200 Subject: [PATCH] update --- client/.gitignore | 1 + client/client.c | 30 +++++------- client/linux/client | Bin 37712 -> 0 bytes client/mem.c | 3 ++ client/task.c | 112 +++++++++++++++++++++++++++++++------------- client/task.h | 15 +++--- 6 files changed, 103 insertions(+), 58 deletions(-) delete mode 100755 client/linux/client create mode 100644 client/mem.c diff --git a/client/.gitignore b/client/.gitignore index e6a8598..9308325 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -3,3 +3,4 @@ main build *.bin .dep +linux/client diff --git a/client/client.c b/client/client.c index 6502fb7..59c611f 100644 --- a/client/client.c +++ b/client/client.c @@ -79,34 +79,28 @@ void loop(void) #endif debug("Loop"); - int ct; + struct task *t; long cyclestart; - struct task *curtask; 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; - } - curtask->lastrun = cyclestart; +// if(t->interval == 0){ +// curtask->used = false; +// } + t->lastrun = cyclestart; } } } diff --git a/client/linux/client b/client/linux/client deleted file mode 100755 index b269fc2426cdf10b7d7f99a5cc5cf001ea469782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37712 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%0AwZ6kj*wJJI7C&1+A11=d$Lg4m6K*@EC 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 + +struct task *task_head = NULL; diff --git a/client/task.c b/client/task.c index 1c16ce5..12789ce 100644 --- a/client/task.c +++ b/client/task.c @@ -5,52 +5,62 @@ #include "spec.h" #include "interface.h" -struct task tasks[MAXTASKS]; +#define TASKSPACE 128 + +uint8_t taskspace[TASKSPACE] = {0}; +uint8_t *spacepointer = (uint8_t *)&taskspace; +uint8_t taskid = 0; +struct task *head = NULL; void task_init(void) { - memset(&tasks, 0, sizeof(struct task)*MAXTASKS); + memset(&taskspace, 0, TASKSPACE); + head = NULL; } void task_register(void) { - uint8_t ct; - uint16_t i; + int i; + if(spacepointer+sizeof(struct task) > taskspace+TASKSPACE){ + die("Out of memory... Not enough to allocate taskstruct"); + } - for(ct = 0; ctinterval = read16(); + debug("interval: %d\n", t->interval); //Interrupt task - if(is_interrupt_task(&tasks[ct])) { + if(is_interrupt_task(t)) { } //Read tasklength - tasks[ct].tlen = read16(); - debug("task interval: %d, length: %d\n", - tasks[ct].interval, tasks[ct].tlen); + t->tasklength = read16(); + debug("task interval: %d, length: %d\n", t->interval, t->tasklength); + + if(spacepointer+t->tasklength > taskspace+TASKSPACE){ + die("Out of memory... Not enough to allocate bytes"); + } + + spacepointer += t->tasklength; - if(tasks[ct].tlen > MAXTASKSIZE) - die("Task is too long: %d", tasks[ct].tlen); //Read task bytecode - for(i = 0; itasklength; i++){ + t->bc[i] = read_byte(); } //Return the task number for later removal - debug("Received a task of length %d", tasks[ct].tlen); - tasks[ct].used = true; - tasks[ct].lastrun = 0L; + debug("Received a task of length %d", t->tasklength); + t->lastrun = 0L; + t->taskid = taskid++; write_byte('t'); - write16(ct); + write16(t->taskid); write_byte('\n'); } @@ -66,16 +76,54 @@ bool had_interrupt(struct task* t) (void)t; } -void task_delete(void) +struct task *task_head(void) { - uint8_t c = read16(); - tasks[c].used = false; - write_byte('d'); - write16(c); - write_byte('\n'); + return head; +} + +struct task *task_next(struct task *t) +{ + if(t == NULL){ + return NULL; + } + + uint8_t *next = (uint8_t *)t; + next += sizeof(struct task); + next += t->tasklength; + + return next > spacepointer ? NULL : (struct task *)next; } -struct task *task_get(int num) +void task_delete(void) { - return tasks[num].used ? &tasks[num] : NULL; + uint8_t c = read16(); + struct task *t = NULL; + while(t != NULL){ + if(t->taskid == c){ + break; + } + t = task_next(t); + } + if(t != NULL){ + //We found the task, now we move everything from the end of the task up + //to the spacepointer right + uint8_t *start = (uint8_t *)t; + uint8_t *end = start + sizeof(struct task) + t->tasklength; + debug("Moving %lu bytes\n", spacepointer-end); + for(int i = 0; i struct task { - uint8_t bc[MAXTASKSIZE]; - uint16_t tlen; + uint16_t tasklength; uint16_t interval; - long lastrun; - bool used; + unsigned long lastrun; + uint8_t taskid; + struct task *next; + uint8_t *bc; }; bool is_interrupt_task(struct task* t); bool had_interrupt(struct task* t); +struct task *task_head(void); +struct task *task_next(struct task *t); void task_init(void); void task_register(void); void task_delete(void); -struct task *task_get(int num); #ifdef __cplusplus } -- 2.20.1