X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Flascar-el-usb%2Fprotocol.c;h=1b6a0ad55e5ddf60992a72607d0323129fff1efd;hb=563ba4a5c22475357604bffd1e391a4c53c55e50;hp=e4fae68f5720d4df39e9fbac0d3001d94d43274a;hpb=695dc859c15ba4190f5c1aa2e1a6e2dc6a6e5845;p=libsigrok.git diff --git a/src/hardware/lascar-el-usb/protocol.c b/src/hardware/lascar-el-usb/protocol.c index e4fae68f..1b6a0ad5 100644 --- a/src/hardware/lascar-el-usb/protocol.c +++ b/src/hardware/lascar-el-usb/protocol.c @@ -27,7 +27,7 @@ #include "libsigrok-internal.h" #include "protocol.h" -extern struct sr_dev_driver lascar_el_usb_driver_info; +extern SR_PRIV struct sr_dev_driver lascar_el_usb_driver_info; struct sr_dev_driver *di = &lascar_el_usb_driver_info; static const struct elusb_profile profiles[] = { @@ -327,7 +327,6 @@ static struct sr_dev_inst *lascar_identify(unsigned char *config) sdi->vendor = g_strdup(LASCAR_VENDOR); sdi->model = g_strdup(profile->modelname); sdi->version = g_strdup(firmware); - sdi->driver = di; if (profile->logformat == LOG_TEMP_RH) { /* Model this as two channels: temperature and humidity. */ @@ -354,12 +353,16 @@ SR_PRIV struct sr_dev_inst *lascar_scan(int bus, int address) struct libusb_device **devlist; libusb_device_handle *dev_hdl; int dummy, i; + int ret; unsigned char config[MAX_CONFIGBLOCK_SIZE]; drvc = di->context; sdi = NULL; - libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); + ret = libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); + if (ret < 0) + return NULL; + for (i = 0; devlist[i]; i++) { if (libusb_get_bus_number(devlist[i]) != bus || libusb_get_device_address(devlist[i]) != address) @@ -374,6 +377,7 @@ SR_PRIV struct sr_dev_inst *lascar_scan(int bus, int address) libusb_close(dev_hdl); sdi = lascar_identify(config); } + libusb_free_device_list(devlist, 1); return sdi; } @@ -487,7 +491,7 @@ SR_PRIV int lascar_el_usb_handle_events(int fd, int revents, void *cb_data) if (sdi->status == SR_ST_STOPPING) { usb_source_remove(sdi->session, drvc->sr_ctx); - std_session_send_df_end(sdi, LOG_PREFIX); + std_session_send_df_end(sdi); } memset(&tv, 0, sizeof(struct timeval));