#define CONN_USB_VIDPID "^([0-9a-z]{4})\\.([0-9a-z]{4})$"
#define CONN_USB_BUSADDR "^(\\d+)\\.(\\d+)$"
-/* Some USBTMC-specific enums, as defined in the USBTMC standard. */
-#define SUBCLASS_USBTMC 0x03
-#define USBTMC_USB488 0x01
-
#define LOG_PREFIX "usb"
/**
return devices;
}
-/**
- * Find USB devices supporting the USBTMC class
- *
- * @param usb_ctx libusb context to use while scanning.
- *
- * @return A GSList of struct sr_usb_dev_inst, with bus and address fields
- * indicating devices with USBTMC support.
- */
-SR_PRIV GSList *sr_usb_find_usbtmc(libusb_context *usb_ctx)
-{
- struct sr_usb_dev_inst *usb;
- struct libusb_device **devlist;
- struct libusb_device_descriptor des;
- struct libusb_config_descriptor *confdes;
- const struct libusb_interface_descriptor *intfdes;
- GSList *devices;
- int confidx, intfidx, ret, i;
-
- devices = NULL;
- libusb_get_device_list(usb_ctx, &devlist);
- for (i = 0; devlist[i]; i++) {
- if ((ret = libusb_get_device_descriptor(devlist[i], &des))) {
- sr_err("Failed to get device descriptor: %s.",
- libusb_error_name(ret));
- continue;
- }
-
- for (confidx = 0; confidx < des.bNumConfigurations; confidx++) {
- if (libusb_get_config_descriptor(devlist[i], confidx, &confdes) != 0) {
- sr_err("Failed to get configuration descriptor.");
- break;
- }
- for (intfidx = 0; intfidx < confdes->bNumInterfaces; intfidx++) {
- intfdes = confdes->interface[intfidx].altsetting;
- if (intfdes->bInterfaceClass != LIBUSB_CLASS_APPLICATION
- || intfdes->bInterfaceSubClass != SUBCLASS_USBTMC
- || intfdes->bInterfaceProtocol != USBTMC_USB488)
- continue;
- sr_dbg("Found USBTMC device (VID:PID = %04x:%04x, bus.address = "
- "%d.%d).", des.idVendor, des.idProduct,
- libusb_get_bus_number(devlist[i]),
- libusb_get_device_address(devlist[i]));
-
- usb = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
- libusb_get_device_address(devlist[i]), NULL);
- devices = g_slist_append(devices, usb);
- }
- libusb_free_config_descriptor(confdes);
- }
- }
- libusb_free_device_list(devlist, 1);
-
- sr_dbg("Found %d device(s).", g_slist_length(devices));
-
- return devices;
-}
-
SR_PRIV int sr_usb_open(libusb_context *usb_ctx, struct sr_usb_dev_inst *usb)
{
struct libusb_device **devlist;