From a7c01629f6e96a79912977ed7262841cedf4ddfa Mon Sep 17 00:00:00 2001 From: Aurelien Jacobs Date: Sun, 29 Dec 2013 16:59:30 +0100 Subject: [PATCH] es519xx: fix continuity mode handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Depending on the chip, the limit value for the buzzer is between 25 and 35 Ω, so this code set the limit for continuity to 25 Ω to be on the safe side. --- hardware/common/dmm/es519xx.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hardware/common/dmm/es519xx.c b/hardware/common/dmm/es519xx.c index 99942295..3340be98 100644 --- a/hardware/common/dmm/es519xx.c +++ b/hardware/common/dmm/es519xx.c @@ -156,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 */ @@ -455,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; @@ -588,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; } /*