static struct avl_tree devices;
-static struct libusb_context *usb;
+struct libusb_context *usb;
static struct libusb_device **usbdevs;
static int n_usbdevs;
alt = &iface->altsetting[0];
data->interface = alt->bInterfaceNumber;
+ data->dev_class = alt->bInterfaceClass;
for (i = 0; i < alt->bNumEndpoints; i++) {
const struct libusb_endpoint_descriptor *ep = &alt->endpoint[i];
if (libusb_open(usbdevs[i], &data.devh))
continue;
+ data.dev = usbdevs[i];
+
libusb_get_string_descriptor_ascii(
data.devh, data.desc.iManufacturer,
(void *) data.mfg, sizeof(data.mfg));
if (data.config)
libusb_free_config_descriptor(data.config);
- libusb_close(data.devh);
+ if (data.devh)
+ libusb_close(data.devh);
}
}