X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fikalogic-scanalogic2%2Fapi.c;h=c82422a553ed38dc1a6bf7c810130e6812727643;hb=d53295e69edda62f966488bb6e4c05c1c842c6fe;hp=f7480db3d4c06ac3e80ba3d3691453c2cf428b8d;hpb=695dc859c15ba4190f5c1aa2e1a6e2dc6a6e5845;p=libsigrok.git diff --git a/src/hardware/ikalogic-scanalogic2/api.c b/src/hardware/ikalogic-scanalogic2/api.c index f7480db3..c82422a5 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,18 +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; -} - -static GSList *dev_list(const struct sr_dev_driver *di) -{ - return ((struct drv_context *)(di->context))->instances; + return std_scan_complete(di, devices); } static void clear_dev_context(void *priv) @@ -188,17 +173,12 @@ static int dev_clear(const struct sr_dev_driver *di) static int dev_open(struct sr_dev_inst *sdi) { struct sr_dev_driver *di = sdi->driver; - struct drv_context *drvc; + struct drv_context *drvc = di->context; struct dev_context *devc; struct sr_usb_dev_inst *usb; uint8_t buffer[PACKET_LENGTH]; int ret; - if (!(drvc = di->context)) { - sr_err("Driver was not initialized."); - return SR_ERR; - } - usb = sdi->conn; devc = sdi->priv; @@ -259,14 +239,8 @@ static int dev_open(struct sr_dev_inst *sdi) static int dev_close(struct sr_dev_inst *sdi) { - struct sr_dev_driver *di = sdi->driver; struct sr_usb_dev_inst *usb; - if (!di->context) { - sr_err("Driver was not initialized."); - return SR_ERR; - } - usb = sdi->conn; if (!usb->devhdl) @@ -281,11 +255,6 @@ static int dev_close(struct sr_dev_inst *sdi) return SR_OK; } -static int cleanup(const struct sr_dev_driver *di) -{ - return dev_clear(di); -} - static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { @@ -465,7 +434,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *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; @@ -484,14 +453,14 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) 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, - .cleanup = cleanup, + .init = std_init, + .cleanup = std_cleanup, .scan = scan, - .dev_list = dev_list, + .dev_list = std_dev_list, .dev_clear = dev_clear, .config_get = config_get, .config_set = config_set, @@ -502,3 +471,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);