-#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++)
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');
+ write_byte(0);
+ write_byte(sdss[cs].id);
+ write_byte(sdss[cs].value/265);
+ write_byte(sdss[cs].value%265);
return;
}
}
- debug("SDS identifier unknown: %d\n", id);
+ debug("SDS identifier unknown: %d", id);
}
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);
return 0;
}
return;
}
}
- debug("SDS identifier unknown: %d\n", id);
-
+ debug("SDS identifier unknown: %d", id);
}