usb.c: Moved in usb_match_manuf_product
This commit is contained in:
parent
e40ee26b45
commit
69f7d9b4a9
|
@ -412,13 +412,13 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
||||||
devc->dslogic = TRUE;
|
devc->dslogic = TRUE;
|
||||||
devc->samplerates = dslogic_samplerates;
|
devc->samplerates = dslogic_samplerates;
|
||||||
devc->num_samplerates = ARRAY_SIZE(dslogic_samplerates);
|
devc->num_samplerates = ARRAY_SIZE(dslogic_samplerates);
|
||||||
has_firmware = match_manuf_prod(devlist[i], "DreamSourceLab", "DSLogic")
|
has_firmware = usb_match_manuf_prod(devlist[i], "DreamSourceLab", "DSLogic")
|
||||||
|| match_manuf_prod(devlist[i], "DreamSourceLab", "DSCope");
|
|| usb_match_manuf_prod(devlist[i], "DreamSourceLab", "DSCope");
|
||||||
} else {
|
} else {
|
||||||
devc->dslogic = FALSE;
|
devc->dslogic = FALSE;
|
||||||
devc->samplerates = samplerates;
|
devc->samplerates = samplerates;
|
||||||
devc->num_samplerates = ARRAY_SIZE(samplerates);
|
devc->num_samplerates = ARRAY_SIZE(samplerates);
|
||||||
has_firmware = match_manuf_prod(devlist[i],
|
has_firmware = usb_match_manuf_prod(devlist[i],
|
||||||
"sigrok", "fx2lafw");
|
"sigrok", "fx2lafw");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,49 +141,6 @@ SR_PRIV int fx2lafw_command_start_acquisition(const struct sr_dev_inst *sdi)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check the USB configuration to determine if this is an fx2lafw device.
|
|
||||||
*
|
|
||||||
* @return TRUE if the device's configuration profile matches fx2lafw
|
|
||||||
* configuration, FALSE otherwise.
|
|
||||||
*/
|
|
||||||
SR_PRIV gboolean match_manuf_prod(libusb_device *dev, const char *manufacturer,
|
|
||||||
const char *product)
|
|
||||||
{
|
|
||||||
struct libusb_device_descriptor des;
|
|
||||||
struct libusb_device_handle *hdl;
|
|
||||||
gboolean ret;
|
|
||||||
unsigned char strdesc[64];
|
|
||||||
|
|
||||||
hdl = NULL;
|
|
||||||
ret = FALSE;
|
|
||||||
while (!ret) {
|
|
||||||
/* Assume the FW has not been loaded, unless proven wrong. */
|
|
||||||
libusb_get_device_descriptor(dev, &des);
|
|
||||||
|
|
||||||
if (libusb_open(dev, &hdl) != 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (libusb_get_string_descriptor_ascii(hdl,
|
|
||||||
des.iManufacturer, strdesc, sizeof(strdesc)) < 0)
|
|
||||||
break;
|
|
||||||
if (strcmp((const char *)strdesc, manufacturer))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (libusb_get_string_descriptor_ascii(hdl,
|
|
||||||
des.iProduct, strdesc, sizeof(strdesc)) < 0)
|
|
||||||
break;
|
|
||||||
if (strcmp((const char *)strdesc, product))
|
|
||||||
break;
|
|
||||||
|
|
||||||
ret = TRUE;
|
|
||||||
}
|
|
||||||
if (hdl)
|
|
||||||
libusb_close(hdl);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di)
|
SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di)
|
||||||
{
|
{
|
||||||
libusb_device **devlist;
|
libusb_device **devlist;
|
||||||
|
|
|
@ -145,8 +145,6 @@ struct dev_context {
|
||||||
};
|
};
|
||||||
|
|
||||||
SR_PRIV int fx2lafw_command_start_acquisition(const struct sr_dev_inst *sdi);
|
SR_PRIV int fx2lafw_command_start_acquisition(const struct sr_dev_inst *sdi);
|
||||||
SR_PRIV gboolean match_manuf_prod(libusb_device *dev, const char *manufacturer,
|
|
||||||
const char *product);
|
|
||||||
SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di);
|
SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di);
|
||||||
SR_PRIV struct dev_context *fx2lafw_dev_new(void);
|
SR_PRIV struct dev_context *fx2lafw_dev_new(void);
|
||||||
SR_PRIV void fx2lafw_abort_acquisition(struct dev_context *devc);
|
SR_PRIV void fx2lafw_abort_acquisition(struct dev_context *devc);
|
||||||
|
|
|
@ -1050,6 +1050,8 @@ SR_PRIV int usb_source_add(struct sr_session *session, struct sr_context *ctx,
|
||||||
int timeout, sr_receive_data_callback cb, void *cb_data);
|
int timeout, sr_receive_data_callback cb, void *cb_data);
|
||||||
SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx);
|
SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx);
|
||||||
SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len);
|
SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len);
|
||||||
|
SR_PRIV gboolean usb_match_manuf_prod(libusb_device *dev,
|
||||||
|
const char *manufacturer, const char *product);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
44
src/usb.c
44
src/usb.c
|
@ -510,3 +510,47 @@ SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len)
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check the USB configuration to determine if this device has a given
|
||||||
|
* manufacturer and product string.
|
||||||
|
*
|
||||||
|
* @return TRUE if the device's configuration profile strings
|
||||||
|
* configuration, FALSE otherwise.
|
||||||
|
*/
|
||||||
|
SR_PRIV gboolean usb_match_manuf_prod(libusb_device *dev,
|
||||||
|
const char *manufacturer, const char *product)
|
||||||
|
{
|
||||||
|
struct libusb_device_descriptor des;
|
||||||
|
struct libusb_device_handle *hdl;
|
||||||
|
gboolean ret;
|
||||||
|
unsigned char strdesc[64];
|
||||||
|
|
||||||
|
hdl = NULL;
|
||||||
|
ret = FALSE;
|
||||||
|
while (!ret) {
|
||||||
|
/* Assume the FW has not been loaded, unless proven wrong. */
|
||||||
|
libusb_get_device_descriptor(dev, &des);
|
||||||
|
|
||||||
|
if (libusb_open(dev, &hdl) != 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (libusb_get_string_descriptor_ascii(hdl,
|
||||||
|
des.iManufacturer, strdesc, sizeof(strdesc)) < 0)
|
||||||
|
break;
|
||||||
|
if (strcmp((const char *)strdesc, manufacturer))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (libusb_get_string_descriptor_ascii(hdl,
|
||||||
|
des.iProduct, strdesc, sizeof(strdesc)) < 0)
|
||||||
|
break;
|
||||||
|
if (strcmp((const char *)strdesc, product))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
if (hdl)
|
||||||
|
libusb_close(hdl);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue