Merge branch 'master' of gitlab.science.ru.nl:mlubbers/mTask
[mTask.git] / client / sds.c
index 56f5895..06d67a2 100644 (file)
@@ -1,15 +1,11 @@
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
 
 #include "interface.h"
 #include "sds.h"
 #include "mem.h"
 
-extern uint8_t *mem_top;
-extern uint8_t *mem_bottom;
-extern uint8_t *mem_task;
-extern uint8_t *mem_sds;
+extern uint8_t *mem_top, *mem_bottom, *mem_task, *mem_sds;
 
 struct sds *sds_head(void)
 {
@@ -80,7 +76,20 @@ bool sds_update(uint8_t id)
        //Read identifier
        struct sds *s = sds_get(id);
        if(s != NULL){
-               s->value = read16();
+               switch(read_byte()){
+               //Long
+               case 'l':
+               //Int
+               case 'i':
+                       s->value = read16();
+                       break;
+               case 'b': //Bool
+               case 'c': //Character
+               case 'B': //Button
+               case 'L': //UserLED
+                       s->value = read_byte();
+                       break;
+               }
                debug("Received sds update %d: %d", s->id, s->value);
                write_byte('u');
                write16(s->id);
@@ -115,7 +124,6 @@ void sds_publish(int id)
                }
                write_byte('\n');
                return;
-               
        } else {
                debug("SDS identifier unknown: %d", id);
                die("");