]> sigrok.org Git - libsigrok.git/commitdiff
hantek-dso: support for SR_HWCAP_COUPLING
authorBert Vermeulen <redacted>
Thu, 17 May 2012 01:17:09 +0000 (03:17 +0200)
committerBert Vermeulen <redacted>
Wed, 30 May 2012 21:56:13 +0000 (23:56 +0200)
hardware/hantek-dso/api.c
hardware/hantek-dso/dso.c
hardware/hantek-dso/dso.h

index 6c1042ffca439250f89a550d4df137786cb9a7eb..0f1931133ab6267390b468adbfb9533178218892 100644 (file)
@@ -125,6 +125,13 @@ static char *filter_targets[] = {
        NULL
 };
 
+static char *coupling[] = {
+       "AC",
+       "DC",
+       "GND",
+       NULL
+};
+
 SR_PRIV libusb_context *usb_context = NULL;
 SR_PRIV GSList *dev_insts = NULL;
 
@@ -516,6 +523,19 @@ static int hw_dev_config_set(int dev_index, int hwcap, void *value)
                if (vdivs[i].p == 0 && vdivs[i].q == 0)
                        ret = SR_ERR_ARG;
                break;
+       case SR_HWCAP_COUPLING:
+               /* TODO not supporting coupling per channel yet */
+               tmp_str = value;
+               for (i = 0; coupling[i]; i++) {
+                       if (!strcmp(tmp_str, coupling[i])) {
+                               ctx->coupling_ch1 = i;
+                               ctx->coupling_ch2 = i;
+                               break;
+                       }
+               }
+               if (coupling[i] == 0)
+                       ret = SR_ERR_ARG;
+               break;
        default:
                ret = SR_ERR_ARG;
        }
index 00dde6da1f14693aa68c554ad8881a7772a5317a..6e704cfb389d07f10524a335c05103c75cce729c 100644 (file)
@@ -445,17 +445,18 @@ SR_PRIV int dso_set_relays(struct context *ctx)
        uint8_t relays[] = { 0x00, 0x04, 0x08, 0x02, 0x20, 0x40, 0x10, 0x01,
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 
-       sr_dbg("hantek-dso: sending CTRL_SETRELAYS");
+       sr_dbg("hantek-dso: preparing CTRL_SETRELAYS");
 
        cv1 = ctx->voltage_ch1 / 3;
        cv2 = ctx->voltage_ch2 / 3;
-relays[0] = 0x01;
+
        if (cv1 > 0)
                relays[1] = ~relays[1];
 
        if (cv1 > 1)
                relays[2] = ~relays[2];
 
+       sr_dbg("hantek-dso: CH1 coupling %d", ctx->coupling_ch1);
        if (ctx->coupling_ch1 != COUPLING_AC)
                relays[3] = ~relays[3];
 
@@ -465,6 +466,7 @@ relays[0] = 0x01;
        if (cv2 > 1)
                relays[5] = ~relays[5];
 
+       sr_dbg("hantek-dso: CH2 coupling %d", ctx->coupling_ch1);
        if (ctx->coupling_ch2 != COUPLING_AC)
                relays[6] = ~relays[6];
 
@@ -477,6 +479,7 @@ relays[0] = 0x01;
                sr_err("failed to set relays: %d", ret);
                return SR_ERR;
        }
+       sr_dbg("hantek-dso: sent CTRL_SETRELAYS");
 
        return SR_OK;
 }
index 53d953e12fa4f024576532ee6722f3351d06df3e..145f584bae6034893bf04cf629751f66447a1570 100644 (file)
@@ -72,12 +72,14 @@ enum dso_commands {
        cmdGetLogicalData
 };
 
+/* Must match the coupling table. */
 enum couplings {
        COUPLING_AC = 0,
        COUPLING_DC,
-       COUPLING_OFF
+       COUPLING_GND
 };
 
+/* Must match the timebases table. */
 enum time_bases {
        TIME_10us = 0,
        TIME_20us,
@@ -96,7 +98,7 @@ enum time_bases {
        TIME_400ms
 };
 
-/* Must match the vdivs table, these are just handy indexes into it. */
+/* Must match the vdivs table. */
 enum {
        VDIV_10MV,
        VDIV_20MV,