X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsaleae-logic16%2Fapi.c;h=7a4a331f93754a01ccd3081eb6d6117a6dd0cec1;hb=145d794facd93b182e6c85d7613ce2e6d9a66d48;hp=f33894ea0e0a8f294c4aa5beeaa5c8d191dba14c;hpb=5a971f66a37df7c4dbe7799b3c7fc7eb30055a61;p=libsigrok.git diff --git a/src/hardware/saleae-logic16/api.c b/src/hardware/saleae-logic16/api.c index f33894ea..7a4a331f 100644 --- a/src/hardware/saleae-logic16/api.c +++ b/src/hardware/saleae-logic16/api.c @@ -39,7 +39,6 @@ #define NUM_SIMUL_TRANSFERS 32 SR_PRIV struct sr_dev_driver saleae_logic16_driver_info; -static struct sr_dev_driver *di = &saleae_logic16_driver_info; static const uint32_t scanopts[] = { SR_CONF_CONN, @@ -96,7 +95,7 @@ static const uint64_t samplerates[] = { SR_MHZ(100), }; -static int init(struct sr_context *sr_ctx) +static int init(struct sr_dev_driver *di, struct sr_context *sr_ctx) { return std_init(sr_ctx, di, LOG_PREFIX); } @@ -139,13 +138,12 @@ static gboolean check_conf_profile(libusb_device *dev) return ret; } -static GSList *scan(GSList *options) +static GSList *scan(struct sr_dev_driver *di, GSList *options) { struct drv_context *drvc; struct dev_context *devc; struct sr_dev_inst *sdi; struct sr_usb_dev_inst *usb; - struct sr_channel *ch; struct sr_config *src; GSList *l, *devices, *conn_devices; struct libusb_device_descriptor des; @@ -206,11 +204,9 @@ static GSList *scan(GSList *options) sdi->driver = di; sdi->connection_id = g_strdup(connection_id); - for (j = 0; channel_names[j]; j++) { - ch = sr_channel_new(j, SR_CHANNEL_LOGIC, TRUE, + for (j = 0; channel_names[j]; j++) + sr_channel_new(sdi, j, SR_CHANNEL_LOGIC, TRUE, channel_names[j]); - sdi->channels = g_slist_append(sdi->channels, ch); - } devc = g_malloc0(sizeof(struct dev_context)); devc->selected_voltage_range = VOLTAGE_RANGE_18_33_V; @@ -244,13 +240,14 @@ static GSList *scan(GSList *options) return devices; } -static GSList *dev_list(void) +static GSList *dev_list(const struct sr_dev_driver *di) { return ((struct drv_context *)(di->priv))->instances; } static int logic16_dev_open(struct sr_dev_inst *sdi) { + struct sr_dev_driver *di; libusb_device **devlist; struct sr_usb_dev_inst *usb; struct libusb_device_descriptor des; @@ -258,6 +255,7 @@ static int logic16_dev_open(struct sr_dev_inst *sdi) int ret, i, device_count; char connection_id[64]; + di = sdi->driver; drvc = di->priv; usb = sdi->conn; @@ -413,7 +411,7 @@ static int dev_close(struct sr_dev_inst *sdi) return SR_OK; } -static int cleanup(void) +static int cleanup(const struct sr_dev_driver *di) { int ret; struct drv_context *drvc; @@ -424,7 +422,6 @@ static int cleanup(void) ret = std_dev_clear(di, NULL); g_free(drvc); - di->priv = NULL; return ret; } @@ -683,11 +680,13 @@ static int receive_data(int fd, int revents, void *cb_data) struct dev_context *devc; struct drv_context *drvc; const struct sr_dev_inst *sdi; + struct sr_dev_driver *di; (void)fd; (void)revents; sdi = cb_data; + di = sdi->driver; drvc = di->priv; devc = sdi->priv; @@ -704,6 +703,7 @@ static int receive_data(int fd, int revents, void *cb_data) static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) { + struct sr_dev_driver *di = sdi->driver; struct dev_context *devc; struct drv_context *drvc; struct sr_usb_dev_inst *usb;