#include "misc.h"
#include "sds.h"
-struct sds sdss[MAXSDSS] = {0};
+struct sds sdss[MAXSDSS];
uint8_t c;
void sds_register(int fd)
memset(&sdss[cs], 0, sizeof(struct sds));
//Read identifier
- read(fd, &c, 1);
- sdss[cs].id = c;
-
+ read16(fd, c, sdss[cs].id);
//Read value
- read(fd, &c, 1);
- sdss[cs].value = 255*c;
- read(fd, &c, 1);
- sdss[cs].value += c;
+ read16(fd, c, sdss[cs].value);
- debug("Received sds %d: %d\n", sdss[cs].id, sdss[cs].value);
+ debug("\nReceived sds %d: %d\n", sdss[cs].id, sdss[cs].value);
sdss[cs].used = true;
}
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;
+ read16(fd, c, sdss[cs].value);
return true;
}
}
return false;
}
+
+void sds_publish(int id, int fd)
+{
+ uint8_t cs;
+ char msg[6];
+ 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);
+ sprintf(msg, "u%c%c%c%c\n",
+ 0,
+ sdss[cs].id,
+ sdss[cs].value/265,
+ sdss[cs].value%265);
+ write(fd, msg, 6);
+ return;
+ }
+ }
+ debug("SDS identifier unknown: %d\n", id);
+}
+
+int sds_fetch(int id)
+{
+ uint8_t cs;
+ 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);
+ return 0;
+}
+
+void sds_store(int id, int val)
+{
+ uint8_t cs;
+ for(cs = 0; cs<MAXSDSS; cs++) {
+ if(sdss[cs].used && sdss[cs].id == id){
+ sdss[cs].value = val;
+ return;
+ }
+ }
+ debug("SDS identifier unknown: %d\n", id);
+}