]> sigrok.org Git - libsigrok.git/blobdiff - hardware/hantek-dso/api.c
sr/drivers: fix off-by-one if frontend-initiated probe configuration
[libsigrok.git] / hardware / hantek-dso / api.c
index 0c375140b46fe2bb03dbd07044dc9c8405f5908e..fbb84760386b3e9ab58e9e7e44e134e69ec9bc02 100644 (file)
@@ -193,9 +193,9 @@ static int configure_probes(struct context *ctx, const GSList *probes)
        ctx->ch1_enabled = ctx->ch2_enabled = FALSE;
        for (l = probes; l; l = l->next) {
                probe = (struct sr_probe *)l->data;
-               if (probe->index == 1)
+               if (probe->index == 0)
                        ctx->ch1_enabled = probe->enabled;
-               else if (probe->index == 2)
+               else if (probe->index == 1)
                        ctx->ch2_enabled = probe->enabled;
        }
 
@@ -427,16 +427,6 @@ static int hw_info_get(int info_id, const void **data,
        return SR_OK;
 }
 
-static int hw_dev_status_get(int dev_index)
-{
-       struct sr_dev_inst *sdi;
-
-       if (!(sdi = sr_dev_inst_get(hdi->instances, dev_index)))
-               return SR_ST_NOT_FOUND;
-
-       return sdi->status;
-}
-
 static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
                const void *value)
 {
@@ -787,19 +777,16 @@ static int handle_event(int fd, int revents, void *cb_data)
        return TRUE;
 }
 
-static int hw_dev_acquisition_start(int dev_index, void *cb_data)
+static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
+               void *cb_data)
 {
        const struct libusb_pollfd **lupfd;
        struct sr_datafeed_packet packet;
        struct sr_datafeed_header header;
        struct sr_datafeed_meta_analog meta;
-       struct sr_dev_inst *sdi;
        struct context *ctx;
        int i;
 
-       if (!(sdi = sr_dev_inst_get(hdi->instances, dev_index)))
-               return SR_ERR;
-
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR;
 
@@ -838,15 +825,12 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
 /* TODO: doesn't really cancel pending transfers so they might come in after
  * SR_DF_END is sent.
  */
-static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
+static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
+               void *cb_data)
 {
        struct sr_datafeed_packet packet;
-       struct sr_dev_inst *sdi;
        struct context *ctx;
 
-       if (!(sdi = sr_dev_inst_get(hdi->instances, dev_index)))
-               return SR_ERR;
-
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR;
 
@@ -869,7 +853,6 @@ SR_PRIV struct sr_dev_driver hantek_dso_driver_info = {
        .dev_open = hw_dev_open,
        .dev_close = hw_dev_close,
        .info_get = hw_info_get,
-       .dev_status_get = hw_dev_status_get,
        .dev_config_set = hw_dev_config_set,
        .dev_acquisition_start = hw_dev_acquisition_start,
        .dev_acquisition_stop = hw_dev_acquisition_stop,