-static int open_usb(struct sr_dev_inst *sdi)
-{
- libusb_device **devlist;
- struct libusb_device_descriptor des;
- struct dev_context *devc;
- int ret, tmp, cnt, i;
-
- /* TODO: Use common code later, refactor. */
-
- devc = sdi->priv;
-
- if ((cnt = libusb_get_device_list(NULL, &devlist)) < 0) {
- sr_err("Error getting USB device list: %d.", cnt);
- return SR_ERR;
- }
-
- ret = SR_ERR;
- for (i = 0; i < cnt; i++) {
- if ((tmp = libusb_get_device_descriptor(devlist[i], &des))) {
- sr_err("Failed to get device descriptor: %d.", tmp);
- continue;
- }
-
- if (libusb_get_bus_number(devlist[i]) != devc->usb->bus
- || libusb_get_device_address(devlist[i]) != devc->usb->address)
- continue;
-
- if ((tmp = libusb_open(devlist[i], &devc->usb->devhdl))) {
- sr_err("Failed to open device: %d.", tmp);
- break;
- }
-
- sr_info("Opened USB device on %d.%d.",
- devc->usb->bus, devc->usb->address);
- ret = SR_OK;
- break;
- }
- libusb_free_device_list(devlist, 1);
-
- return ret;
-}
-
-static GSList *connect_usb(const char *conn)
-{
- struct sr_dev_inst *sdi;
- struct drv_context *drvc;
- struct dev_context *devc;
- struct sr_probe *probe;
- libusb_device **devlist;
- struct libusb_device_descriptor des;
- GSList *devices;
- int vid, pid, devcnt, err, i;
-
- (void)conn;
-
- /* TODO: Use common code later, refactor. */
-
- drvc = di->priv;
-
- /* Hardcoded for now. */
- vid = UT_D04_CABLE_USB_VID;
- pid = UT_D04_CABLE_USB_DID;
-
- devices = NULL;
- libusb_get_device_list(NULL, &devlist);
- for (i = 0; devlist[i]; i++) {
- if ((err = libusb_get_device_descriptor(devlist[i], &des))) {
- sr_err("Failed to get device descriptor: %d", err);
- continue;
- }
-
- if (des.idVendor != vid || des.idProduct != pid)
- continue;
-
- if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
- sr_err("Device context malloc failed.");
- return NULL;
- }
-
- devcnt = g_slist_length(drvc->instances);
- if (!(sdi = sr_dev_inst_new(devcnt, SR_ST_INACTIVE,
- di->longname, NULL, NULL))) {
- sr_err("sr_dev_inst_new returned NULL.");
- return NULL;
- }
- sdi->priv = devc;
- if (!(probe = sr_probe_new(0, SR_PROBE_ANALOG, TRUE, "P1")))
- return NULL;
- sdi->probes = g_slist_append(sdi->probes, probe);
- devc->usb = sr_usb_dev_inst_new(
- libusb_get_bus_number(devlist[i]),
- libusb_get_device_address(devlist[i]), NULL);
- devices = g_slist_append(devices, sdi);
- }
- libusb_free_device_list(devlist, 1);
-
- return devices;
-}
-