aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorKévin Redon <kredon@sysmocom.de>2018-07-01 18:17:06 +0200
committerKing Kévin <kingkevin@cuvoodoo.info>2018-07-04 17:10:08 +0200
commit4d6a4b949c0f9b0ee4cb2b22226f2e74489233a7 (patch)
tree5c73cfd3ec39e1fc12c36c1b7c12a55677dbdabd /host
parenta1012b170adc8630e3b6d1dd8edd277176d7b979 (diff)
host usb_util fix: used provided class, sub-class, and interfave when finding matching interfaces
Diffstat (limited to 'host')
-rw-r--r--host/libusb_util.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/host/libusb_util.c b/host/libusb_util.c
index 3236e41..5ee685e 100644
--- a/host/libusb_util.c
+++ b/host/libusb_util.c
@@ -130,11 +130,11 @@ int dev_find_matching_interfaces(libusb_device *dev, int class, int sub_class, i
for (k = 0; k < intf->num_altsetting; k++) {
const struct libusb_interface_descriptor *if_desc;
if_desc = &intf->altsetting[k];
- if (class > 0 && if_desc->bInterfaceClass != class)
+ if (class >= 0 && if_desc->bInterfaceClass != class)
continue;
- if (sub_class > 0 && if_desc->bInterfaceSubClass != sub_class)
+ if (sub_class >= 0 && if_desc->bInterfaceSubClass != sub_class)
continue;
- if (protocol > 0 && if_desc->bInterfaceProtocol != protocol)
+ if (protocol >= 0 && if_desc->bInterfaceProtocol != protocol)
continue;
/* MATCH! */
out[out_idx].usb_dev = dev;
@@ -197,7 +197,7 @@ int usb_match_interfaces(libusb_context *ctx, const struct dev_id *dev_ids,
dev_desc.idVendor, dev_desc.idProduct, addr);
#endif
- rc = dev_find_matching_interfaces(*dev, 255, 2, -1, out_cur, out_len_remain);
+ rc = dev_find_matching_interfaces(*dev, class, sub_class, protocol, out_cur, out_len_remain);
if (rc < 0)
continue;
out_cur += rc;