libusb: pass libusb_device to scan_for_bt_endpoints

This commit is contained in:
Milanka Ringwald 2018-12-06 21:18:46 +01:00
parent 3d45f2d56b
commit 696b00c829

View File

@ -157,7 +157,6 @@ static void (*packet_handler)(uint8_t packet_type, uint8_t *packet, uint16_t siz
// libusb // libusb
#ifndef HAVE_USB_VENDOR_ID_AND_PRODUCT_ID #ifndef HAVE_USB_VENDOR_ID_AND_PRODUCT_ID
static struct libusb_device_descriptor desc; static struct libusb_device_descriptor desc;
static libusb_device * dev;
#endif #endif
static libusb_device_handle * handle; static libusb_device_handle * handle;
@ -600,7 +599,7 @@ static int is_known_bt_device(uint16_t vendor_id, uint16_t product_id){
return 0; return 0;
} }
static void scan_for_bt_endpoints(void) { static int scan_for_bt_endpoints(libusb_device *dev) {
int r; int r;
event_in_addr = 0; event_in_addr = 0;
@ -612,6 +611,7 @@ static void scan_for_bt_endpoints(void) {
// get endpoints from interface descriptor // get endpoints from interface descriptor
struct libusb_config_descriptor *config_descriptor; struct libusb_config_descriptor *config_descriptor;
r = libusb_get_active_config_descriptor(dev, &config_descriptor); r = libusb_get_active_config_descriptor(dev, &config_descriptor);
if (r < 0) return r;
int num_interfaces = config_descriptor->bNumInterfaces; int num_interfaces = config_descriptor->bNumInterfaces;
log_info("active configuration has %u interfaces", num_interfaces); log_info("active configuration has %u interfaces", num_interfaces);
@ -661,13 +661,14 @@ static void scan_for_bt_endpoints(void) {
} }
} }
libusb_free_config_descriptor(config_descriptor); libusb_free_config_descriptor(config_descriptor);
return 0;
} }
// returns index of found device or -1 // returns index of found device or -1
static int scan_for_bt_device(libusb_device **devs, int start_index) { static int scan_for_bt_device(libusb_device **devs, int start_index) {
int i; int i;
for (i = start_index; devs[i] ; i++){ for (i = start_index; devs[i] ; i++){
dev = devs[i]; libusb_device * dev = devs[i];
int r = libusb_get_device_descriptor(dev, &desc); int r = libusb_get_device_descriptor(dev, &desc);
if (r < 0) { if (r < 0) {
log_error("failed to get device descriptor"); log_error("failed to get device descriptor");
@ -944,6 +945,8 @@ static int usb_open(void){
// configure debug level // configure debug level
libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_WARNING); libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_WARNING);
libusb_device * dev = NULL;
#ifdef HAVE_USB_VENDOR_ID_AND_PRODUCT_ID #ifdef HAVE_USB_VENDOR_ID_AND_PRODUCT_ID
// Use a specified device // Use a specified device
@ -963,6 +966,9 @@ static int usb_open(void){
return -1; return -1;
} }
dev = libusb_get_device(aHandle);
scan_for_bt_endpoints(dev);
#else #else
// Scan system for an appropriate devices // Scan system for an appropriate devices
libusb_device **devs; libusb_device **devs;
@ -975,8 +981,6 @@ static int usb_open(void){
return -1; return -1;
} }
dev = NULL;
if (usb_path_len){ if (usb_path_len){
int i; int i;
for (i=0;i<num_devices;i++){ for (i=0;i<num_devices;i++){
@ -1030,7 +1034,7 @@ static int usb_open(void){
return -1; return -1;
} }
scan_for_bt_endpoints(); scan_for_bt_endpoints(dev);
#endif #endif