X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fhardware%2Fdreamsourcelab-dslogic%2Fapi.c;h=08dded0140364826bd61bf73d45b4affc8c06ab9;hb=55fb76b34826a287240bebeeda688e4c465b4751;hp=c5724c100d1b754589fdb381b9b5e79c1ce95987;hpb=7962b129c3146a907bd765ebb40cf102fd5c2419;p=libsigrok.git diff --git a/src/hardware/dreamsourcelab-dslogic/api.c b/src/hardware/dreamsourcelab-dslogic/api.c index c5724c10..08dded01 100644 --- a/src/hardware/dreamsourcelab-dslogic/api.c +++ b/src/hardware/dreamsourcelab-dslogic/api.c @@ -47,14 +47,14 @@ static const struct dslogic_profile supported_device[] = { ALL_ZERO }; -static const uint32_t drvopts[] = { - SR_CONF_LOGIC_ANALYZER, -}; - static const uint32_t scanopts[] = { SR_CONF_CONN, }; +static const uint32_t drvopts[] = { + SR_CONF_LOGIC_ANALYZER, +}; + static const uint32_t devopts[] = { SR_CONF_CONTINUOUS | SR_CONF_SET | SR_CONF_GET, SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET, @@ -217,10 +217,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) prof = NULL; for (j = 0; supported_device[j].vid; j++) { if (des.idVendor == supported_device[j].vid && - des.idProduct == supported_device[j].pid && - (!strcmp(manufacturer, supported_device[j].usb_manufacturer)) && - (!strcmp(product, "USB-based Instrument") || - !strcmp(product, supported_device[j].usb_product))) { + des.idProduct == supported_device[j].pid) { prof = &supported_device[j]; break; } @@ -286,19 +283,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) return std_scan_complete(di, devices); } -static void clear_dev_context(void *priv) -{ - struct dev_context *devc; - - devc = priv; - g_free(devc); -} - -static int dev_clear(const struct sr_dev_driver *di) -{ - return std_dev_clear(di, clear_dev_context); -} - static int dev_open(struct sr_dev_inst *sdi) { struct sr_dev_driver *di = sdi->driver; @@ -385,14 +369,13 @@ static int dev_close(struct sr_dev_inst *sdi) usb = sdi->conn; if (!usb->devhdl) - return SR_ERR; + return SR_ERR_BUG; sr_info("Closing device on %d.%d (logical) / %s (physical) interface %d.", usb->bus, usb->address, sdi->connection_id, USB_INTERFACE); libusb_release_interface(usb->devhdl, USB_INTERFACE); libusb_close(usb->devhdl); usb->devhdl = NULL; - sdi->status = SR_ST_INACTIVE; return SR_OK; } @@ -508,9 +491,6 @@ static int config_set(uint32_t key, GVariant *data, if (!sdi) return SR_ERR_ARG; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR; - devc = sdi->priv; ret = SR_OK; @@ -573,34 +553,21 @@ static int config_set(uint32_t key, GVariant *data, static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { - struct dev_context *devc = NULL; + struct dev_context *devc; GVariant *gvar, *range[2]; GVariantBuilder gvb; unsigned int i; double v; - (void)cg; + devc = (sdi) ? sdi->priv : NULL; switch (key) { case SR_CONF_SCAN_OPTIONS: - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t)); - break; case SR_CONF_DEVICE_OPTIONS: - if (!sdi) { - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - drvopts, ARRAY_SIZE(drvopts), sizeof(uint32_t)); - } else { - devc = sdi->priv; - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - devopts, ARRAY_SIZE(devopts), sizeof(uint32_t)); - } - break; + return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts); case SR_CONF_VOLTAGE_THRESHOLD: - if (sdi->priv) - devc = sdi->priv; g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY); - if (devc && !strcmp(devc->profile->model, "DSLogic")) { + if (!strcmp(devc->profile->model, "DSLogic")) { for (i = 0; i < ARRAY_SIZE(voltage_thresholds); i++) { range[0] = g_variant_new_double(voltage_thresholds[i].low); range[1] = g_variant_new_double(voltage_thresholds[i].high); @@ -618,7 +585,6 @@ static int config_list(uint32_t key, GVariant **data, *data = g_variant_builder_end(&gvb); break; case SR_CONF_SAMPLERATE: - devc = sdi->priv; g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}")); gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"), devc->samplerates, devc->num_samplerates, sizeof(uint64_t)); @@ -644,7 +610,7 @@ static struct sr_dev_driver dreamsourcelab_dslogic_driver_info = { .cleanup = std_cleanup, .scan = scan, .dev_list = std_dev_list, - .dev_clear = dev_clear, + .dev_clear = std_dev_clear, .config_get = config_get, .config_set = config_set, .config_list = config_list,