X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fdmm%2Fes519xx.c;h=3340be98c48ac20c13700f333e161c0eece9b302;hb=a7c01629f6e96a79912977ed7262841cedf4ddfa;hp=a3f5efbd1067e2616952d69c3ccd5bfeda9e586f;hpb=94e9021b3ee2d18ef0480c6fa95f0d950cf12eb9;p=libsigrok.git diff --git a/hardware/common/dmm/es519xx.c b/hardware/common/dmm/es519xx.c index a3f5efbd..3340be98 100644 --- a/hardware/common/dmm/es519xx.c +++ b/hardware/common/dmm/es519xx.c @@ -32,14 +32,7 @@ #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; } /*