You'll love these [PATCH]es.
Alex
>From 8e2ba2007dafdee8bd6c2928477f8741213b4048 Mon Sep 17 00:00:00 2001
From: Alexandru Gagniuc <[email protected]>
Date: Fri, 19 Oct 2012 20:31:19 -0500
Subject: [PATCH] libsigrok: (Trivial) fix packet type in datafeed_dump
datafeed_dump would print SR_DF_META_LOGIC when a SR_DF_META_ANALOG
was recieved. Fix that.
Signed-off-by: Alexandru Gagniuc <[email protected]>
---
session.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/session.c b/session.c
index b1e3ebb..828c2d3 100644
--- a/session.c
+++ b/session.c
@@ -381,7 +381,7 @@ static void datafeed_dump(struct sr_datafeed_packet *packet)
sr_dbg("bus: received SR_DF_LOGIC %" PRIu64 " bytes", logic->length);
break;
case SR_DF_META_ANALOG:
- sr_dbg("bus: received SR_DF_META_LOGIC");
+ sr_dbg("bus: received SR_DF_META_ANALOG");
break;
case SR_DF_ANALOG:
analog = packet->payload;
--
1.7.11.4
>From 94975d0083795c9836642bcc8d950c00001c13b1 Mon Sep 17 00:00:00 2001
From: Alexandru Gagniuc <[email protected]>
Date: Fri, 19 Oct 2012 20:40:50 -0500
Subject: [PATCH] radioshack-dmm: Implement support for "LOGIC" mode
LOGIC mode sends the following data:
V < 0 : actual voltage
0 <= V < 1 : LOW
1 <= V < 2 : actual voltage
2 <= V : HIGH
We follow the same idea, and set our unit to BOOLEAN for the crazy
case (HIGH or LOW).
Signed-off-by: Alexandru Gagniuc <[email protected]>
---
hardware/radioshack-dmm/radioshack-dmm.h | 2 +-
hardware/radioshack-dmm/radioshack.c | 23 +++++++++++++++++------
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/hardware/radioshack-dmm/radioshack-dmm.h b/hardware/radioshack-dmm/radioshack-dmm.h
index d206d0f..57bf62f 100644
--- a/hardware/radioshack-dmm/radioshack-dmm.h
+++ b/hardware/radioshack-dmm/radioshack-dmm.h
@@ -71,7 +71,7 @@
#define RS_22_812_LCD_E
#define RS_22_812_LCD_F
#define RS_22_812_LCD_h 0x66
-#define RS_22_812_LCD_H
+#define RS_22_812_LCD_H 0x76
#define RS_22_812_LCD_I
#define RS_22_812_LCD_n
#define RS_22_812_LCD_P 0x37
diff --git a/hardware/radioshack-dmm/radioshack.c b/hardware/radioshack-dmm/radioshack.c
index 9e05bef..e4fc43c 100644
--- a/hardware/radioshack-dmm/radioshack.c
+++ b/hardware/radioshack-dmm/radioshack.c
@@ -215,6 +215,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 +287,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;
--
1.7.11.4
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel