m2110: properly set encoding digits

This commit is contained in:
Aurelien Jacobs 2016-08-17 01:27:22 +02:00 committed by Uwe Hermann
parent aad6d8d206
commit 8882e7e6cf
1 changed files with 9 additions and 1 deletions

View File

@ -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;
} }