es519xx: fix continuity mode handling

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.
This commit is contained in:
Aurelien Jacobs 2013-12-29 16:59:30 +01:00 committed by Uwe Hermann
parent 5f985df23c
commit a7c01629f6
1 changed files with 6 additions and 4 deletions

View File

@ -156,7 +156,7 @@ static int parse_range(uint8_t b, float *floatval,
else if (info->is_rpm) else if (info->is_rpm)
/* Not a typo, it's really index 4 in factors_2400_11b[][]. */ /* Not a typo, it's really index 4 in factors_2400_11b[][]. */
mode = 4; /* RPM */ mode = 4; /* RPM */
else if (info->is_resistance) else if (info->is_resistance || info->is_continuity)
mode = 5; /* Resistance */ mode = 5; /* Resistance */
else if (info->is_frequency) else if (info->is_frequency)
mode = 6; /* Frequency */ mode = 6; /* Frequency */
@ -455,7 +455,7 @@ static void handle_flags(struct sr_datafeed_analog *analog,
if (info->is_continuity) { if (info->is_continuity) {
analog->mq = SR_MQ_CONTINUITY; analog->mq = SR_MQ_CONTINUITY;
analog->unit = SR_UNIT_BOOLEAN; 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) { if (info->is_diode) {
analog->mq = SR_MQ_VOLTAGE; analog->mq = SR_MQ_VOLTAGE;
@ -588,9 +588,11 @@ static int sr_es519xx_parse(const uint8_t *buf, float *floatval,
return ret; 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;
} }
/* /*