More data types (char, int, long, float) added.
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
ebus Daemon (ebusd) - ChangeLog
|
ebus Daemon (ebusd) - ChangeLog
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
|
2013-12-01:
|
||||||
|
* New branch "newDataTypes" created.
|
||||||
|
* More data types (char, int, long, float) added.
|
||||||
|
|
||||||
2013-11-29:
|
2013-11-29:
|
||||||
* New daemon option nodevicecheck added.
|
* New daemon option nodevicecheck added.
|
||||||
|
|
||||||
|
|||||||
+81
-22
@@ -206,8 +206,6 @@ eb_cmd_decode_value(int id, int elem, unsigned char *msg, char *buf)
|
|||||||
char *c1, *c2, *c3, *c4;
|
char *c1, *c2, *c3, *c4;
|
||||||
char d_pos[CMD_SIZE_D_POS + 1];
|
char d_pos[CMD_SIZE_D_POS + 1];
|
||||||
int ret, i, j, p1, p2, p3, p4;
|
int ret, i, j, p1, p2, p3, p4;
|
||||||
float f;
|
|
||||||
unsigned long l;
|
|
||||||
|
|
||||||
memset(d_pos, '\0', sizeof(d_pos));
|
memset(d_pos, '\0', sizeof(d_pos));
|
||||||
strncpy(d_pos, com[id].elem[elem].d_pos, strlen(com[id].elem[elem].d_pos));
|
strncpy(d_pos, com[id].elem[elem].d_pos, strlen(com[id].elem[elem].d_pos));
|
||||||
@@ -224,61 +222,67 @@ eb_cmd_decode_value(int id, int elem, unsigned char *msg, char *buf)
|
|||||||
|
|
||||||
log_print(L_DBG, "id: %d elem: %d p1: %d p2: %d p3: %d p4: %d", id, elem, p1, p2, p3, p4);
|
log_print(L_DBG, "id: %d elem: %d p1: %d p2: %d p3: %d p4: %d", id, elem, p1, p2, p3, p4);
|
||||||
|
|
||||||
if (strncasecmp(com[id].elem[elem].d_type, "asc", 3) == 0) {
|
if (strncasecmp(com[id].elem[elem].d_type, "str", 3) == 0) {
|
||||||
sprintf(buf, "%s", &msg[1]);
|
sprintf(buf, "%s", &msg[1]);
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "bcd", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "bcd", 3) == 0) {
|
||||||
if (p1 > 0) {
|
if (p1 > 0) {
|
||||||
ret = eb_bcd_to_int(msg[p1], &i);
|
int ii;
|
||||||
|
ret = eb_bcd_to_int(msg[p1], &ii);
|
||||||
|
|
||||||
i *= com[id].elem[elem].d_fac;
|
ii *= com[id].elem[elem].d_fac;
|
||||||
sprintf(buf, "%d", i);
|
sprintf(buf, "%d", ii);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "d1b", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "d1b", 3) == 0) {
|
||||||
if (p1 > 0) {
|
if (p1 > 0) {
|
||||||
ret = eb_d1b_to_int(msg[p1], &i);
|
int ii;
|
||||||
|
float ff;
|
||||||
|
ret = eb_d1b_to_int(msg[p1], &ii);
|
||||||
|
|
||||||
f = i * com[id].elem[elem].d_fac;
|
ff = ii * com[id].elem[elem].d_fac;
|
||||||
sprintf(buf, "%f", f);
|
sprintf(buf, "%f", ff);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "d1c", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "d1c", 3) == 0) {
|
||||||
if (p1 > 0) {
|
if (p1 > 0) {
|
||||||
ret = eb_d1c_to_float(msg[p1], &f);
|
float ff;
|
||||||
|
ret = eb_d1c_to_float(msg[p1], &ff);
|
||||||
|
|
||||||
f *= com[id].elem[elem].d_fac;
|
ff *= com[id].elem[elem].d_fac;
|
||||||
sprintf(buf, "%f", f);
|
sprintf(buf, "%f", ff);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "d2b", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "d2b", 3) == 0) {
|
||||||
if (p1 > 0 && p2 > 0) {
|
if (p1 > 0 && p2 > 0) {
|
||||||
|
float ff;
|
||||||
if (p1 > p2)
|
if (p1 > p2)
|
||||||
ret = eb_d2b_to_float(msg[p2], msg[p1], &f);
|
ret = eb_d2b_to_float(msg[p2], msg[p1], &ff);
|
||||||
else
|
else
|
||||||
ret = eb_d2b_to_float(msg[p1], msg[p2], &f);
|
ret = eb_d2b_to_float(msg[p1], msg[p2], &ff);
|
||||||
|
|
||||||
f *= com[id].elem[elem].d_fac;
|
ff *= com[id].elem[elem].d_fac;
|
||||||
sprintf(buf, "%f", f);
|
sprintf(buf, "%f", ff);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "d2c", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "d2c", 3) == 0) {
|
||||||
if (p1 > 0 && p2 > 0) {
|
if (p1 > 0 && p2 > 0) {
|
||||||
|
float ff;
|
||||||
if (p1 > p2)
|
if (p1 > p2)
|
||||||
ret = eb_d2c_to_float(msg[p2], msg[p1], &f);
|
ret = eb_d2c_to_float(msg[p2], msg[p1], &ff);
|
||||||
else
|
else
|
||||||
ret = eb_d2c_to_float(msg[p1], msg[p2], &f);
|
ret = eb_d2c_to_float(msg[p1], msg[p2], &ff);
|
||||||
|
|
||||||
f *= com[id].elem[elem].d_fac;
|
ff *= com[id].elem[elem].d_fac;
|
||||||
sprintf(buf, "%f", f);
|
sprintf(buf, "%f", ff);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
@@ -364,13 +368,68 @@ eb_cmd_decode_value(int id, int elem, unsigned char *msg, char *buf)
|
|||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "uch", 3) == 0) {
|
||||||
|
if (p1 > 0) {
|
||||||
|
unsigned char uch;
|
||||||
|
uch = msg[p1];
|
||||||
|
sprintf(buf, "%u", uch);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "sch", 3) == 0) {
|
||||||
|
if (p1 > 0) {
|
||||||
|
char sch;
|
||||||
|
sch = msg[p1];
|
||||||
|
sprintf(buf, "%d", sch);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "uin", 3) == 0) {
|
||||||
|
if (p1 > 0 && p2 > 0) {
|
||||||
|
unsigned int uin;
|
||||||
|
uin = msg[p1] + (msg[p2] << 8);
|
||||||
|
sprintf(buf, "%u", uin);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "sin", 3) == 0) {
|
||||||
|
if (p1 > 0 && p2 > 0) {
|
||||||
|
int sin;
|
||||||
|
sin = msg[p1] + (msg[p2] << 8);
|
||||||
|
sprintf(buf, "%d", sin);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (strncasecmp(com[id].elem[elem].d_type, "ulg", 3) == 0) {
|
} else if (strncasecmp(com[id].elem[elem].d_type, "ulg", 3) == 0) {
|
||||||
if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0) {
|
if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0) {
|
||||||
l = msg[p1] + (msg[p2] << 8) + (msg[p3] << 16) + (msg[p4] << 24);
|
unsigned long ulg;
|
||||||
sprintf(buf, "%lu", l);
|
ulg = msg[p1] + (msg[p2] << 8) + (msg[p3] << 16) + (msg[p4] << 24);
|
||||||
|
sprintf(buf, "%lu", ulg);
|
||||||
} else {
|
} else {
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "slg", 3) == 0) {
|
||||||
|
if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0) {
|
||||||
|
long slg;
|
||||||
|
slg = msg[p1] + (msg[p2] << 8) + (msg[p3] << 16) + (msg[p4] << 24);
|
||||||
|
sprintf(buf, "%ld", slg);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (strncasecmp(com[id].elem[elem].d_type, "flt", 3) == 0) {
|
||||||
|
if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0) {
|
||||||
|
float ff;
|
||||||
|
ff = msg[p1] + (msg[p2] << 8) + (msg[p3] << 16) + (msg[p4] << 24);
|
||||||
|
sprintf(buf, "%f", ff);
|
||||||
|
} else {
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user