X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fdmm%2Fes519xx.c;h=075587ce40fcc37fcde278f84ec7976ea5a94ee7;hb=c6c63b08af0f73b60de6726c9d5aea50d20d83d2;hp=66e6f5f5fd249a57c9a4f57052008e0ca2878203;hpb=c3e871dc8e7df18a49a0ac244b86c9f8cb488c82;p=libsigrok.git diff --git a/hardware/common/dmm/es519xx.c b/hardware/common/dmm/es519xx.c index 66e6f5f5..075587ce 100644 --- a/hardware/common/dmm/es519xx.c +++ b/hardware/common/dmm/es519xx.c @@ -111,7 +111,7 @@ static int parse_value(const uint8_t *buf, struct es519xx_info *info, } else if (!isdigit(buf[1]) || !isdigit(buf[2]) || !isdigit(buf[3]) || !isdigit(buf[4]) || (num_digits == 5 && !isdigit(buf[5]))) { - sr_err("Value contained invalid digits: %02x %02x %02x %02x " + sr_dbg("Value contained invalid digits: %02x %02x %02x %02x " "(%c %c %c %c).", buf[1], buf[2], buf[3], buf[4], buf[1], buf[2], buf[3], buf[4]); return SR_ERR; @@ -339,7 +339,7 @@ static void parse_flags(const uint8_t *buf, struct es519xx_info *info) info->is_adp3 = TRUE; break; default: - sr_err("Invalid function byte: 0x%02x.", buf[function]); + sr_dbg("Invalid function byte: 0x%02x.", buf[function]); break; } } else { @@ -407,11 +407,28 @@ static void parse_flags(const uint8_t *buf, struct es519xx_info *info) info->is_adp3 = TRUE; break; default: - sr_err("Invalid function byte: 0x%02x.", buf[function]); + sr_dbg("Invalid function byte: 0x%02x.", buf[function]); break; } } + if (info->is_vahz && (info->is_voltage || info->is_current)) { + info->is_voltage = FALSE; + info->is_current = FALSE; + info->is_milli = info->is_micro = FALSE; + if (info->packet_size == 14) { + if (info->is_judge) + info->is_duty_cycle = TRUE; + else + info->is_frequency = TRUE; + } else { + if (info->is_judge) + info->is_rpm = TRUE; + else + info->is_frequency = TRUE; + } + } + if (info->is_current && (info->is_micro || info->is_milli) && info->is_vasel) { info->is_current = info->is_auto = FALSE; info->is_voltage = TRUE; @@ -536,7 +553,7 @@ static gboolean flags_valid(const struct es519xx_info *info) count = (info->is_micro) ? 1 : 0; count += (info->is_milli) ? 1 : 0; if (count > 1) { - sr_err("More than one multiplier detected in packet."); + sr_dbg("More than one multiplier detected in packet."); return FALSE; } @@ -551,13 +568,13 @@ static gboolean flags_valid(const struct es519xx_info *info) count += (info->is_diode) ? 1 : 0; count += (info->is_rpm) ? 1 : 0; if (count > 1) { - sr_err("More than one measurement type detected in packet."); + sr_dbg("More than one measurement type detected in packet."); return FALSE; } /* Both AC and DC set? */ if (info->is_ac && info->is_dc) { - sr_err("Both AC and DC flags detected in packet."); + sr_dbg("Both AC and DC flags detected in packet."); return FALSE; } @@ -595,7 +612,7 @@ static int sr_es519xx_parse(const uint8_t *buf, float *floatval, return SR_ERR; if ((ret = parse_value(buf, info, floatval)) != SR_OK) { - sr_err("Error parsing value: %d.", ret); + sr_dbg("Error parsing value: %d.", ret); return ret; } @@ -612,8 +629,9 @@ static int sr_es519xx_parse(const uint8_t *buf, float *floatval, */ SR_PRIV gboolean sr_es519xx_2400_11b_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 2400; info.packet_size = 11; @@ -639,8 +657,9 @@ SR_PRIV int sr_es519xx_2400_11b_parse(const uint8_t *buf, float *floatval, */ SR_PRIV gboolean sr_es519xx_2400_11b_altfn_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 2400; info.packet_size = 11; info.alt_functions = TRUE; @@ -668,8 +687,9 @@ SR_PRIV int sr_es519xx_2400_11b_altfn_parse(const uint8_t *buf, */ SR_PRIV gboolean sr_es519xx_19200_11b_5digits_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 19200; info.packet_size = 11; info.fivedigits = TRUE; @@ -697,8 +717,9 @@ SR_PRIV int sr_es519xx_19200_11b_5digits_parse(const uint8_t *buf, */ SR_PRIV gboolean sr_es519xx_19200_11b_clamp_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 19200; info.packet_size = 11; info.clampmeter = TRUE; @@ -726,8 +747,9 @@ SR_PRIV int sr_es519xx_19200_11b_clamp_parse(const uint8_t *buf, */ SR_PRIV gboolean sr_es519xx_19200_11b_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 19200; info.packet_size = 11; @@ -753,8 +775,9 @@ SR_PRIV int sr_es519xx_19200_11b_parse(const uint8_t *buf, float *floatval, */ SR_PRIV gboolean sr_es519xx_19200_14b_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 19200; info.packet_size = 14; @@ -780,8 +803,9 @@ SR_PRIV int sr_es519xx_19200_14b_parse(const uint8_t *buf, float *floatval, */ SR_PRIV gboolean sr_es519xx_19200_14b_sel_lpf_packet_valid(const uint8_t *buf) { - struct es519xx_info info = { 0 }; + struct es519xx_info info; + memset(&info, 0, sizeof(struct es519xx_info)); info.baudrate = 19200; info.packet_size = 14; info.selectable_lpf = TRUE;