X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fikalogic-scanalogic2%2Fapi.c;h=3b8175c80c2ee323d3ae6f4219d12b5b60a79de1;hb=91057d2fc24c0ca058aa08c8ea6ada4eadf05ffd;hp=1ce3b91c9d771b97a450561dda2d08615b796c68;hpb=efa9840222f2925c187715377e3646679fd8496c;p=libsigrok.git diff --git a/src/hardware/ikalogic-scanalogic2/api.c b/src/hardware/ikalogic-scanalogic2/api.c index 1ce3b91c..3b8175c8 100644 --- a/src/hardware/ikalogic-scanalogic2/api.c +++ b/src/hardware/ikalogic-scanalogic2/api.c @@ -52,13 +52,6 @@ static const char *channel_names[] = { "0", "1", "2", "3", }; -SR_PRIV struct sr_dev_driver ikalogic_scanalogic2_driver_info; - -static int init(struct sr_dev_driver *di, struct sr_context *sr_ctx) -{ - return std_init(sr_ctx, di, LOG_PREFIX); -} - static GSList *scan(struct sr_dev_driver *di, GSList *options) { GSList *usb_devices, *devices, *l; @@ -74,7 +67,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) devices = NULL; drvc = di->context; - drvc->instances = NULL; usb_devices = sr_usb_find(drvc->sr_ctx->libusb_ctx, USB_VID_PID); @@ -84,7 +76,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) for (l = usb_devices; l; l = l->next) { usb = l->data; - if ((ret = sl2_get_device_info(*usb, &dev_info)) < 0) { + if ((ret = sl2_get_device_info(di, *usb, &dev_info)) < 0) { sr_warn("Failed to get device information: %d.", ret); sr_usb_dev_inst_free(usb); continue; @@ -114,7 +106,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) sdi->version = g_strdup_printf("%u.%u", dev_info.fw_ver_major, dev_info.fw_ver_minor); sdi->serial_num = g_strdup_printf("%d", dev_info.serial); sdi->priv = devc; - sdi->driver = di; sdi->inst_type = SR_INST_USB; sdi->conn = usb; @@ -153,13 +144,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) devc->xfer_data_out = devc->xfer_buf_out + LIBUSB_CONTROL_SETUP_SIZE; - drvc->instances = g_slist_append(drvc->instances, sdi); devices = g_slist_append(devices, sdi); } g_slist_free(usb_devices); - return devices; + return std_scan_complete(di, devices); } static void clear_dev_context(void *priv) @@ -242,8 +232,6 @@ static int dev_open(struct sr_dev_inst *sdi) return SR_ERR; } - sdi->status = SR_ST_ACTIVE; - return SR_OK; } @@ -254,13 +242,12 @@ static int dev_close(struct sr_dev_inst *sdi) usb = sdi->conn; if (!usb->devhdl) - return SR_OK; + return SR_ERR_BUG; libusb_release_interface(usb->devhdl, USB_INTERFACE); libusb_close(usb->devhdl); usb->devhdl = NULL; - sdi->status = SR_ST_INACTIVE; return SR_OK; } @@ -298,9 +285,6 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd (void)cg; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - switch (key) { case SR_CONF_LIMIT_SAMPLES: limit_samples = g_variant_get_uint64(data); @@ -371,9 +355,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) unsigned int i, j; int ret; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; drvc = di->context; @@ -442,9 +423,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) usb_source_add(sdi->session, drvc->sr_ctx, 100, ikalogic_scanalogic2_receive_data, (void *)sdi); - sr_dbg("Acquisition started successfully."); - - std_session_send_df_header(sdi, LOG_PREFIX); + std_session_send_df_header(sdi); devc->next_state = STATE_SAMPLE; @@ -453,21 +432,16 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) static int dev_acquisition_stop(struct sr_dev_inst *sdi) { - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - - sr_dbg("Stopping acquisition."); - sdi->status = SR_ST_STOPPING; return SR_OK; } -SR_PRIV struct sr_dev_driver ikalogic_scanalogic2_driver_info = { +static struct sr_dev_driver ikalogic_scanalogic2_driver_info = { .name = "ikalogic-scanalogic2", .longname = "IKALOGIC Scanalogic-2", .api_version = 1, - .init = init, + .init = std_init, .cleanup = std_cleanup, .scan = scan, .dev_list = std_dev_list, @@ -481,3 +455,4 @@ SR_PRIV struct sr_dev_driver ikalogic_scanalogic2_driver_info = { .dev_acquisition_stop = dev_acquisition_stop, .context = NULL, }; +SR_REGISTER_DEV_DRIVER(ikalogic_scanalogic2_driver_info);