]> sigrok.org Git - libsigrok.git/blobdiff - src/dmm/dtm0660.c
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / dmm / dtm0660.c
index b23c04abdd98a65ac79e6fe4dc62635211f34d06..42012399e22195a2b3ee10e1f5dcfe4f7cfc642f 100644 (file)
@@ -254,6 +254,8 @@ static void parse_flags(const uint8_t *buf, struct dtm0660_info *info)
 static void handle_flags(struct sr_datafeed_analog *analog, float *floatval,
                         int *exponent, const struct dtm0660_info *info)
 {
+       int initial_exponent = *exponent;
+
        /* Factors */
        if (info->is_nano)
                *exponent -= 9;
@@ -265,7 +267,7 @@ static void handle_flags(struct sr_datafeed_analog *analog, float *floatval,
                *exponent += 3;
        if (info->is_mega)
                *exponent += 6;
-       *floatval *= powf(10, *exponent);
+       *floatval *= powf(10, (*exponent - initial_exponent));
 
        /* Measurement modes */
        if (info->is_volt) {
@@ -373,7 +375,7 @@ SR_PRIV int sr_dtm0660_parse(const uint8_t *buf, float *floatval,
        int ret, exponent = 0;
        struct dtm0660_info *info_local;
 
-       info_local = (struct dtm0660_info *)info;
+       info_local = info;
 
        if ((ret = parse_value(buf, floatval, &exponent)) != SR_OK) {
                sr_dbg("Error parsing value: %d.", ret);