libusb_device **devlist;
struct libusb_device_descriptor des;
struct dev_context *devc;
+ struct drv_context *drvc = fdi->priv;
struct version_info vi;
int ret, skip, i;
uint8_t revid;
return SR_ERR;
skip = 0;
- const int device_count = libusb_get_device_list(NULL, &devlist);
+ const int device_count = libusb_get_device_list(
+ drvc->sr_ctx->libusb_ctx, &devlist);
if (device_count < 0) {
sr_err("fx2lafw: Failed to retrieve device list (%d)",
device_count);
return SR_ERR_MALLOC;
}
- if (libusb_init(NULL) != 0) {
- g_free(drvc);
- sr_warn("fx2lafw: Failed to initialize libusb.");
- return SR_ERR;
- }
-
drvc->sr_ctx = sr_ctx;
fdi->priv = drvc;
/* Find all fx2lafw compatible devices and upload firmware to them. */
devices = NULL;
- libusb_get_device_list(NULL, &devlist);
+ libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist);
for (i = 0; devlist[i]; i++) {
if ((ret = libusb_get_device_descriptor(
ret = clear_instances();
- libusb_exit(NULL);
-
g_free(drvc);
fdi->priv = NULL;
static int receive_data(int fd, int revents, void *cb_data)
{
struct timeval tv;
+ struct drv_context *drvc = fdi->priv;
(void)fd;
(void)revents;
(void)cb_data;
tv.tv_sec = tv.tv_usec = 0;
- libusb_handle_events_timeout(NULL, &tv);
+ libusb_handle_events_timeout(drvc->sr_ctx->libusb_ctx, &tv);
return TRUE;
}
static void finish_acquisition(struct dev_context *devc)
{
struct sr_datafeed_packet packet;
+ struct drv_context *drvc = fdi->priv;
int i;
/* Remove fds from polling */
const struct libusb_pollfd **const lupfd =
- libusb_get_pollfds(NULL);
+ libusb_get_pollfds(drvc->sr_ctx->libusb_ctx);
for (i = 0; lupfd[i]; i++)
sr_source_remove(lupfd[i]->fd);
free(lupfd); /* NOT g_free()! */
struct sr_datafeed_header header;
struct sr_datafeed_meta_logic meta;
struct dev_context *devc;
+ struct drv_context *drvc = fdi->priv;
struct libusb_transfer *transfer;
const struct libusb_pollfd **lupfd;
unsigned int i;
devc->submitted_transfers++;
}
- lupfd = libusb_get_pollfds(NULL);
+ lupfd = libusb_get_pollfds(drvc->sr_ctx->libusb_ctx);
for (i = 0; lupfd[i]; i++)
sr_source_add(lupfd[i]->fd, lupfd[i]->events,
timeout, receive_data, NULL);