]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/hantek-dso/protocol.c
scpi-pps: don't break SCPI devices when scanning for HP-IB devices
[libsigrok.git] / src / hardware / hantek-dso / protocol.c
index a1d940fc5d25e577450000bf9c524afde2a3d22f..d2101f2a8170c892af1311c7a0e12f482aa3d84e 100644 (file)
@@ -130,7 +130,9 @@ SR_PRIV int dso_open(struct sr_dev_inst *sdi)
                        /*
                         * Check device by its physical USB bus/port address.
                         */
-                       usb_get_port_path(devlist[i], connection_id, sizeof(connection_id));
+                       if (usb_get_port_path(devlist[i], connection_id, sizeof(connection_id)) < 0)
+                               continue;
+
                        if (strcmp(sdi->connection_id, connection_id))
                                /* This is not the one. */
                                continue;
@@ -263,7 +265,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi)
        struct dev_context *devc;
        struct sr_usb_dev_inst *usb;
        int ret, tmp;
-       int base;
+       uint64_t base;
        uint8_t cmdstring[12];
        int trig;
 
@@ -324,7 +326,8 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi)
        }
 
        tmp = base / devc->samplerate;
-       if (tmp) {
+       /* Downsample only if really necessary */
+       if (tmp > 1) {
                /* Downsampling on */
                cmdstring[2] |= 2;
                /* Downsampler = 1comp((Base / Samplerate) - 2)
@@ -373,7 +376,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi)
        memset(cmdstring, 0, sizeof(cmdstring));
        cmdstring[0] = CMD_2250_SET_TRIGGERPOS_AND_BUFFER;
 
-       sr_dbg("Capture ratio: %d.", devc->capture_ratio);
+       sr_dbg("Capture ratio: %" PRIu64 ".", devc->capture_ratio);
        trig = devc->capture_ratio;
        dso2250_set_triggerpos(trig,
                        devc->framesize != FRAMESIZE_SMALL, cmdstring, 2);
@@ -394,7 +397,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi)
+SR_PRIV int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
        struct sr_usb_dev_inst *usb;
@@ -494,7 +497,7 @@ int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi)
        cmdstring[5] = (tmp >> 8) & 0xff;
 
        /* Horizontal trigger position */
-       sr_dbg("Capture ratio: %d.", devc->capture_ratio);
+       sr_dbg("Capture ratio: %" PRIu64 ".", devc->capture_ratio);
        tmp = 0x77fff + 0x8000 * devc->capture_ratio / 100;
        cmdstring[6] = tmp & 0xff;
        cmdstring[7] = (tmp >> 8) & 0xff;
@@ -688,7 +691,7 @@ static int dso_set_relays(const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-int dso_set_voffsets(const struct sr_dev_inst *sdi)
+SR_PRIV int dso_set_voffsets(const struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
        struct sr_usb_dev_inst *usb;