X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fradioshack-dmm%2Fradioshack.c;h=2ce7c8f866ad9b3c93c92909f41a7959eedaa9cd;hb=38d326e879c6e1bb7d4a11682c262ca838a7dde5;hp=9e05bef794f56b487767e9ed53446e7ff60f6eff;hpb=7b0a85c81c6bce43ced9bf59d99b3584fd1498d8;p=libsigrok.git diff --git a/hardware/radioshack-dmm/radioshack.c b/hardware/radioshack-dmm/radioshack.c index 9e05bef7..2ce7c8f8 100644 --- a/hardware/radioshack-dmm/radioshack.c +++ b/hardware/radioshack-dmm/radioshack.c @@ -21,7 +21,6 @@ #include #include "libsigrok.h" #include "libsigrok-internal.h" -#include "config.h" #include "radioshack-dmm.h" #include #include @@ -215,6 +214,12 @@ static gboolean rs_22_812_is_shortcirc(rs_22_812_packet *rs_packet) return((rs_packet->digit2 & ~RS_22_812_DP_MASK) == RS_22_812_LCD_h); } +static gboolean rs_22_812_is_logic_high(rs_22_812_packet *rs_packet) +{ + sr_spew("digit 2: %x", rs_packet->digit2 & ~RS_22_812_DP_MASK); + return((rs_packet->digit2 & ~RS_22_812_DP_MASK) == RS_22_812_LCD_H); +} + static void rs_22_812_handle_packet(rs_22_812_packet *rs_packet, rs_dev_ctx *devc) { @@ -281,12 +286,17 @@ static void rs_22_812_handle_packet(rs_22_812_packet *rs_packet, analog->unit = SR_UNIT_HERTZ; break; case RS_22_812_MODE_LOGIC: - analog->mq = 0; /* FIXME */ - analog->unit = SR_UNIT_BOOLEAN; - sr_warn("radioshack-dmm: LOGIC mode not supported yet"); - g_free(analog->data); - g_free(analog); - return; + /* No matter whether or not we have an actual voltage reading, + * we are measuring voltage, so we set our MQ as VOLTAGE */ + analog->mq = SR_MQ_VOLTAGE; + if(!isnan(rawval)) { + /* We have an actual voltage */ + analog->unit = SR_UNIT_VOLT; + } else { + /* We have either HI or LOW */ + analog->unit = SR_UNIT_BOOLEAN; + *analog->data = rs_22_812_is_logic_high(rs_packet); + } break; case RS_22_812_MODE_HFE: analog->mq = SR_MQ_GAIN;