X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fdmm%2Fmetex14.c;h=52a98c851707a9287bb267b394c706b9e4c8c418;hb=57981a0716a5d9bec807cad8289d091893de0919;hp=c3d9a4f613fc09e9a52ea47399d899ceb2246230;hpb=8f46911e4252bddb680fb9adc603ea2640f1724e;p=libsigrok.git diff --git a/hardware/common/dmm/metex14.c b/hardware/common/dmm/metex14.c index c3d9a4f6..52a98c85 100644 --- a/hardware/common/dmm/metex14.c +++ b/hardware/common/dmm/metex14.c @@ -126,6 +126,13 @@ static void parse_flags(const char *buf, struct metex14_info *info) info->is_temperature = !strncmp(buf, "TE", 2); info->is_diode = !strncmp(buf, "DI", 2); info->is_frequency = !strncmp(buf, "FR", 2); + info->is_gain = !strncmp(buf, "DB", 2); + info->is_hfe = !strncmp(buf, "HF", 2); + + /* + * Note: "DB" shows the logarithmic ratio of input voltage to a + * pre-stored (user-changeable) value in the DMM. + */ if (info->is_dc || info->is_ac) info->is_volt = TRUE; @@ -159,6 +166,10 @@ static void parse_flags(const char *buf, struct metex14_info *info) info->is_kilo = info->is_hertz = TRUE; else if (!strncmp(buf + 9, " C", 4)) info->is_celsius = TRUE; + else if (!strncmp(buf + 9, " DB", 4)) + info->is_decibel = TRUE; + else if (!strncmp(buf + 9, " ", 4)) + info->is_unitless = TRUE; /* Byte 13: Always '\r' (carriage return, 0x0d, 13) */ } @@ -207,6 +218,14 @@ static void handle_flags(struct sr_datafeed_analog *analog, float *floatval, analog->mq = SR_MQ_VOLTAGE; analog->unit = SR_UNIT_VOLT; } + if (info->is_gain) { + analog->mq = SR_MQ_GAIN; + analog->unit = SR_UNIT_DECIBEL_VOLT; + } + if (info->is_hfe) { + analog->mq = SR_MQ_GAIN; + analog->unit = SR_UNIT_UNITLESS; + } /* Measurement related flags */ if (info->is_ac) @@ -254,6 +273,15 @@ static gboolean flags_valid(const struct metex14_info *info) return TRUE; } +SR_PRIV int sr_metex14_packet_request(struct sr_serial_dev_inst *serial) +{ + const uint8_t wbuf = 'D'; + + sr_spew("Requesting DMM packet."); + + return (serial_write(serial, &wbuf, 1) == 1) ? SR_OK : SR_ERR; +} + SR_PRIV gboolean sr_metex14_packet_valid(const uint8_t *buf) { struct metex14_info info;