m2110: properly set encoding digits
This commit is contained in:
parent
aad6d8d206
commit
8882e7e6cf
|
@ -53,6 +53,7 @@ SR_PRIV gboolean sr_m2110_packet_valid(const uint8_t *buf)
|
||||||
SR_PRIV int sr_m2110_parse(const uint8_t *buf, float *floatval,
|
SR_PRIV int sr_m2110_parse(const uint8_t *buf, float *floatval,
|
||||||
struct sr_datafeed_analog *analog, void *info)
|
struct sr_datafeed_analog *analog, void *info)
|
||||||
{
|
{
|
||||||
|
int dot_pos, digits = 0;
|
||||||
float val;
|
float val;
|
||||||
|
|
||||||
(void)info;
|
(void)info;
|
||||||
|
@ -64,8 +65,15 @@ SR_PRIV int sr_m2110_parse(const uint8_t *buf, float *floatval,
|
||||||
|
|
||||||
if (!strncmp((const char *)buf, "OVERRNG", 7))
|
if (!strncmp((const char *)buf, "OVERRNG", 7))
|
||||||
*floatval = INFINITY;
|
*floatval = INFINITY;
|
||||||
else if (sscanf((const char *)buf, "%f", &val) == 1)
|
else if (sscanf((const char *)buf, "%f", &val) == 1) {
|
||||||
*floatval = val;
|
*floatval = val;
|
||||||
|
dot_pos = strcspn((const char *)buf, ".");
|
||||||
|
if (dot_pos < 7)
|
||||||
|
digits = 6 - dot_pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
analog->encoding->digits = digits;
|
||||||
|
analog->spec->spec_digits = digits;
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue