]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/dmm/es519xx.c
es519xx: fix continuity mode handling
[libsigrok.git] / hardware / common / dmm / es519xx.c
index a3f5efbd1067e2616952d69c3ccd5bfeda9e586f..3340be98c48ac20c13700f333e161c0eece9b302 100644 (file)
 #include "libsigrok.h"
 #include "libsigrok-internal.h"
 
-/* Message logging helpers with subsystem-specific prefix string. */
-#define LOG_PREFIX "es519xx: "
-#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args)
-#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args)
-#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args)
-#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args)
-#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args)
-#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args)
+#define LOG_PREFIX "es519xx"
 
 /* Factors for the respective measurement mode (0 means "invalid"). */
 static const float factors_2400_11b[8][8] = {
@@ -163,7 +156,7 @@ static int parse_range(uint8_t b, float *floatval,
        else if (info->is_rpm)
                /* Not a typo, it's really index 4 in factors_2400_11b[][]. */
                mode = 4; /* RPM */
-       else if (info->is_resistance)
+       else if (info->is_resistance || info->is_continuity)
                mode = 5; /* Resistance */
        else if (info->is_frequency)
                mode = 6; /* Frequency */
@@ -462,7 +455,7 @@ static void handle_flags(struct sr_datafeed_analog *analog,
        if (info->is_continuity) {
                analog->mq = SR_MQ_CONTINUITY;
                analog->unit = SR_UNIT_BOOLEAN;
-               *floatval = (*floatval < 0.0) ? 0.0 : 1.0;
+               *floatval = (*floatval < 0.0 || *floatval > 25.0) ? 0.0 : 1.0;
        }
        if (info->is_diode) {
                analog->mq = SR_MQ_VOLTAGE;
@@ -595,9 +588,11 @@ static int sr_es519xx_parse(const uint8_t *buf, float *floatval,
                return ret;
        }
 
-       handle_flags(analog, floatval, info);
+       if ((ret = parse_range(buf[0], floatval, info)) != SR_OK)
+               return ret;
 
-       return parse_range(buf[0], floatval, info);
+       handle_flags(analog, floatval, info);
+       return SR_OK;
 }
 
 /*