fx2lafw: warn on fail to open plausible devices

Instead of silently ignoring all devices that fail to open.

This fixes bug #867.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
This commit is contained in:
Karl Palsson 2016-11-22 13:12:55 +00:00 committed by Uwe Hermann
parent 104f02fda1
commit 7087a8b0fa
1 changed files with 22 additions and 1 deletions

View File

@ -214,6 +214,20 @@ static const uint64_t dslogic_samplerates[] = {
SR_MHZ(400),
};
static gboolean is_plausible(const struct libusb_device_descriptor *des)
{
int i;
for (i = 0; supported_fx2[i].vid; i++) {
if (des->idVendor != supported_fx2[i].vid)
continue;
if (des->idProduct == supported_fx2[i].pid)
return TRUE;
}
return FALSE;
}
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
struct drv_context *drvc;
@ -271,9 +285,16 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
libusb_get_device_descriptor( devlist[i], &des);
if ((ret = libusb_open(devlist[i], &hdl)) < 0)
if (!is_plausible(&des))
continue;
if ((ret = libusb_open(devlist[i], &hdl)) < 0) {
sr_warn("Failed to open potential device with "
"VID:PID %04x:%04x: %s.", des.idVendor,
des.idProduct, libusb_error_name(ret));
continue;
}
if (des.iManufacturer == 0) {
manufacturer[0] = '\0';
} else if ((ret = libusb_get_string_descriptor_ascii(hdl,