X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fchronovu-la%2Fapi.c;h=f855f8e804fa90037b912d52f68fc8365aba4d41;hb=caeb8d7a9d2d5a2497692a23caf066f33f7a34c3;hp=b6c3af47a10ac83c19dc350869940bd1b5b7f48c;hpb=709468baf7626b162b5559c101516289d9bbb258;p=libsigrok.git diff --git a/src/hardware/chronovu-la/api.c b/src/hardware/chronovu-la/api.c index b6c3af47..f855f8e8 100644 --- a/src/hardware/chronovu-la/api.c +++ b/src/hardware/chronovu-la/api.c @@ -21,9 +21,6 @@ #include #include "protocol.h" -SR_PRIV struct sr_dev_driver chronovu_la_driver_info; -static struct sr_dev_driver *di = &chronovu_la_driver_info; - static const uint32_t drvopts[] = { SR_CONF_LOGIC_ANALYZER, }; @@ -65,19 +62,16 @@ static int dev_clear(const struct sr_dev_driver *di) } static int add_device(int model, struct libusb_device_descriptor *des, - const char *serial_num, const char *connection_id, - libusb_device *usbdev, GSList **devices) + const char *serial_num, const char *connection_id, libusb_device *usbdev, + GSList **devices) { int ret; unsigned int i; struct sr_dev_inst *sdi; - struct drv_context *drvc; struct dev_context *devc; ret = SR_OK; - drvc = di->context; - /* Allocate memory for our private device context. */ devc = g_malloc0(sizeof(struct dev_context)); @@ -119,7 +113,6 @@ static int add_device(int model, struct libusb_device_descriptor *des, sdi->connection_id = g_strdup(connection_id); sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(usbdev), libusb_get_device_address(usbdev), NULL); - sdi->driver = di; sdi->priv = devc; for (i = 0; i < devc->prof->num_channels; i++) @@ -127,7 +120,6 @@ static int add_device(int model, struct libusb_device_descriptor *des, cv_channel_names[i]); *devices = g_slist_append(*devices, sdi); - drvc->instances = g_slist_append(drvc->instances, sdi); if (ret == SR_OK) return SR_OK; @@ -152,7 +144,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) char product[64], serial_num[64], connection_id[64]; drvc = di->context; - drvc->instances = NULL; conn = NULL; for (l = options; l; l = l->next) { @@ -237,7 +228,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) libusb_free_device_list(devlist, 1); g_slist_free_full(conn_devices, (GDestroyNotify)sr_usb_dev_inst_free); - return devices; + return std_scan_complete(di, devices); } static int dev_open(struct sr_dev_inst *sdi) @@ -399,8 +390,9 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * devopts, ARRAY_SIZE(devopts), sizeof(uint32_t)); break; case SR_CONF_SAMPLERATE: - if (!sdi || !sdi->priv || !(devc = sdi->priv)) + if (!sdi) return SR_ERR_BUG; + devc = sdi->priv; cv_fill_samplerates_if_needed(sdi); g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}")); gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"), @@ -545,7 +537,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) sr_dbg("Hardware acquisition started successfully."); - std_session_send_df_header(sdi, LOG_PREFIX); + std_session_send_df_header(sdi); /* Time when we should be done (for detecting trigger timeouts). */ devc->done = (devc->divcount + 1) * devc->prof->trigger_constant + @@ -563,12 +555,12 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) { sr_dbg("Stopping acquisition."); sr_session_source_remove(sdi->session, -1); - std_session_send_df_end(sdi, LOG_PREFIX); + std_session_send_df_end(sdi); return SR_OK; } -SR_PRIV struct sr_dev_driver chronovu_la_driver_info = { +static struct sr_dev_driver chronovu_la_driver_info = { .name = "chronovu-la", .longname = "ChronoVu LA8/LA16", .api_version = 1, @@ -586,3 +578,4 @@ SR_PRIV struct sr_dev_driver chronovu_la_driver_info = { .dev_acquisition_stop = dev_acquisition_stop, .context = NULL, }; +SR_REGISTER_DEV_DRIVER(chronovu_la_driver_info);