- libusb_get_device_descriptor(curdev->dev, &usb_desc);
-
- desc = NULL;
- for (unsigned long i = 0; i < ARRAY_SIZE(chip_descs); i++) {
- desc = chip_descs[i];
- if (desc->vendor == usb_desc.idVendor &&
- desc->product == usb_desc.idProduct)
- break;
- }
-
- if (!desc) {
- sr_spew("Unsupported FTDI device 0x%4x:0x%4x.",
- usb_desc.idVendor, usb_desc.idProduct);
- continue;
- }
- devc->usbdev = curdev->dev;
- devc->desc = desc;
-
- vendor = g_malloc(32);
- model = g_malloc(32);
- serial_num = g_malloc(32);
- ftdi_usb_get_strings(devc->ftdic, curdev->dev, vendor, 32,
- model, 32, serial_num, 32);
- sr_dbg("Found an FTDI device: %s.", model);
-
- /* Register the device with libsigrok. */
- sdi = g_malloc0(sizeof(struct sr_dev_inst));
- sdi->status = SR_ST_INITIALIZING;
- sdi->vendor = vendor;
- sdi->model = model;
- sdi->serial_num = serial_num;
- sdi->driver = di;
- sdi->priv = devc;
-
- for (char *const *chan = &(desc->channel_names[0]); *chan; chan++)
- sr_channel_new(sdi, &(desc->channel_names[0]) - chan,
- SR_CHANNEL_LOGIC, TRUE, *chan);
-
- devices = g_slist_append(devices, sdi);
- drvc->instances = g_slist_append(drvc->instances, sdi);
-