int usb_get_driver_np(usb_dev_handle * dev, int interface, char *name, int namelen) { struct libusb20_device *pdev; char *ptr; int err; pdev = (void *)dev; if (pdev == NULL) return (-1); if (namelen < 1) return (-1); if (namelen > 255) namelen = 255; err = libusb20_dev_get_iface_desc(pdev, interface, name, namelen); if (err != 0) return (-1); /* we only want the driver name */ ptr = strstr(name, ":"); if (ptr != NULL) *ptr = 0; return (0); }
void dump_device_info(struct libusb20_device *pdev, uint8_t show_ifdrv) { char buf[128]; uint8_t n; unsigned int usage; usage = libusb20_dev_get_power_usage(pdev); printf("%s, cfg=%u md=%s spd=%s pwr=%s (%umA)\n", libusb20_dev_get_desc(pdev), libusb20_dev_get_config_index(pdev), dump_mode(libusb20_dev_get_mode(pdev)), dump_speed(libusb20_dev_get_speed(pdev)), dump_power_mode(libusb20_dev_get_power_mode(pdev)), usage); if (!show_ifdrv) return; for (n = 0; n != 255; n++) { if (libusb20_dev_get_iface_desc(pdev, n, buf, sizeof(buf))) break; if (buf[0] == 0) continue; printf("ugen%u.%u.%u: %s\n", libusb20_dev_get_bus_number(pdev), libusb20_dev_get_address(pdev), n, buf); } }