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

Reply via email to