]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/dmm/fs9922.c
Voltcraft VC-830: Fix diode mode handling.
[libsigrok.git] / hardware / common / dmm / fs9922.c
index 4e878ac63f4a717b00f55d2100984eee0ac7a8da..51d3c654dbc7aa7ed9e7efcc2949397699c4f404 100644 (file)
@@ -194,7 +194,7 @@ static void parse_flags(const uint8_t *buf, struct fs9922_info *info)
        info->is_beep       = (buf[9] & (1 << 3)) != 0;
        info->is_diode      = (buf[9] & (1 << 2)) != 0;
        info->is_percent    = (buf[9] & (1 << 1)) != 0;
-       info->is_z4         = (buf[8] & (1 << 0)) != 0; /* User symbol 4 */
+       info->is_z4         = (buf[9] & (1 << 0)) != 0; /* User symbol 4 */
 
        /* Byte 10 */
        info->is_volt       = (buf[10] & (1 << 7)) != 0;
@@ -293,6 +293,8 @@ static void handle_flags(struct sr_datafeed_analog *analog, float *floatval,
                analog->mqflags |= SR_MQFLAG_DC;
        if (info->is_auto)
                analog->mqflags |= SR_MQFLAG_AUTORANGE;
+       if (info->is_diode)
+               analog->mqflags |= SR_MQFLAG_DIODE;
        if (info->is_hold)
                analog->mqflags |= SR_MQFLAG_HOLD;
        if (info->is_max)
@@ -373,3 +375,17 @@ SR_PRIV int sr_fs9922_parse(const uint8_t *buf, float *floatval,
 
        return SR_OK;
 }
+
+SR_PRIV void sr_fs9922_z1_diode(struct sr_datafeed_analog *analog, void *info)
+{
+       struct fs9922_info *info_local;
+
+       info_local = (struct fs9922_info *)info;
+
+       /* User-defined z1 flag means "diode mode". */
+       if (info_local->is_z1) {
+               analog->mq = SR_MQ_VOLTAGE;
+               analog->unit = SR_UNIT_VOLT;
+               analog->mqflags |= SR_MQFLAG_DIODE;
+       }
+}