fix install script
[mTask.git] / int / sds.c
index 679ce42..c5f69b6 100644 (file)
--- a/int/sds.c
+++ b/int/sds.c
@@ -1,17 +1,24 @@
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
+#ifndef STM
 #include <unistd.h>
+#include <stdio.h>
+#endif
 
-#include "mTaskSymbols.h"
+#include "interface.h"
 #include "interpret.h"
-#include "misc.h"
 #include "sds.h"
 
-struct sds sdss[MAXSDSS] = {0};
+struct sds sdss[MAXSDSS];
 uint8_t c;
 
-void sds_register(int fd)
+void sds_init(void)
+{
+       memset(&sdss, 0, sizeof(struct sds)*MAXSDSS);
+}
+
+void sds_register(void)
 {
        uint8_t cs;
        for(cs = 0; cs<MAXSDSS; cs++)
@@ -19,60 +26,53 @@ void sds_register(int fd)
                        break;
 
        if(cs == MAXSDSS)
-               die("Trying to add too much tasks...\n");
+               die("Trying to add too much sdss...");
 
        memset(&sdss[cs], 0, sizeof(struct sds));
        //Read identifier
-       read(fd, &c, 1);
-       sdss[cs].id = c;
-
+       sdss[cs].id = read16();
        //Read value
-       read(fd, &c, 1);
-       sdss[cs].value = 255*c;
-       read(fd, &c, 1);
-       sdss[cs].value += c;
+       sdss[cs].value = read16();
 
-       debug("Received sds %d: %d\n", sdss[cs].id, sdss[cs].value);
+       debug("Received sds %d: %d", sdss[cs].id, sdss[cs].value);
        sdss[cs].used = true;
 }
 
-bool sds_update(int fd)
+bool sds_update(void)
 {
        uint8_t cs, id;
        //Read identifier
-       read(fd, &id, 1);
+       id = read16();
 
        for(cs = 0; cs<MAXSDSS; cs++){
                if(!sdss[cs].used)
                        continue;
                if(sdss[cs].id == id){
                        //Read value
-                       read(fd, &c, 1);
-                       sdss[cs].value = 255*c;
-                       read(fd, &c, 1);
-                       sdss[cs].value += c;
+                       sdss[cs].value = read16();
+                       debug("Received sds update %d: %d",
+                             sdss[cs].id, sdss[cs].value);
                        return true;
                }
        }
        return false;
 }
 
-void sds_publish(int id, int fd)
+void sds_publish(int id)
 {
        uint8_t cs;
        for(cs = 0; cs<MAXSDSS; cs++){
                if(sdss[cs].used && sdss[cs].id == id){
-                       debug("Publish %d=%d\n", sdss[cs].id, sdss[cs].value);
-                       char msg[6];
-                       sprintf(msg, "s%c%c%c\n",
-                               sdss[cs].id,
-                               sdss[cs].value/265,
-                               sdss[cs].value%265);
-                       write(fd, msg, 6);
+                       debug("Publish %d=%d", sdss[cs].id, sdss[cs].value);
+                       write_byte('u');
+                       write16(sdss[cs].id);
+                       write16(sdss[cs].value);
+                       write_byte('\n');
                        return;
                }
        }
-       debug("SDS identifier unknown: %d\n", id);
+       debug("SDS identifier unknown: %d", id);
+       die("");
 }
 
 int sds_fetch(int id)
@@ -81,7 +81,8 @@ int sds_fetch(int id)
        for(cs = 0; cs<MAXSDSS; cs++)
                if(sdss[cs].used && sdss[cs].id == id)
                        return sdss[cs].value;
-       debug("SDS identifier unknown: %d\n", id);
+       debug("SDS identifier unknown: %d", id);
+       die("");
        return 0;
 }
 
@@ -94,6 +95,6 @@ void sds_store(int id, int val)
                        return;
                }
        }
-       debug("SDS identifier unknown: %d\n", id);
-
+       debug("SDS identifier unknown: %d", id);
+       die("");
 }