- if ((ret = ftdi_usb_close(ftdic)) < 0)
- sr_dbg("Failed to close FTDI device (%d): %s.",
- ret, ftdi_get_error_string(ftdic));
+ if (des.iSerialNumber == 0) {
+ serial_num[0] = '\0';
+ } else if ((ret = libusb_get_string_descriptor_ascii(hdl,
+ des.iSerialNumber, (unsigned char *)serial_num,
+ sizeof(serial_num))) < 0) {
+ sr_warn("Failed to get serial number string descriptor: %s.",
+ libusb_error_name(ret));
+ continue;
+ }
+
+ usb_get_port_path(devlist[i], connection_id, sizeof(connection_id));
+
+ libusb_close(hdl);
+
+ if (!strcmp(product, "ChronoVu LA8")) {
+ model = 0;
+ } else if (!strcmp(product, "ChronoVu LA16")) {
+ model = 1;
+ } else {
+ sr_spew("Unknown iProduct string '%s'.", product);
+ continue;
+ }
+
+ sr_dbg("Found %s (%04x:%04x, %d.%d, %s).",
+ product, des.idVendor, des.idProduct,
+ libusb_get_bus_number(devlist[i]),
+ libusb_get_device_address(devlist[i]), connection_id);
+
+ if ((ret = add_device(model, &des, serial_num, connection_id,
+ devlist[i], &devices)) < 0) {
+ sr_dbg("Failed to add device: %d.", ret);
+ }