From 99f1942e81caf3443f47057eba53356046a10238 Mon Sep 17 00:00:00 2001 From: Ryan Metcalfe Date: Wed, 28 Jul 2021 19:32:42 -0400 Subject: xusb: Print info from IAD descriptors Signed-off-by: Ryan Metcalfe --- examples/xusb.c | 26 ++++++++++++++++++++++++++ libusb/version_nano.h | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/examples/xusb.c b/examples/xusb.c index 5c65298..6266111 100644 --- a/examples/xusb.c +++ b/examples/xusb.c @@ -946,6 +946,32 @@ static int test_device(uint16_t vid, uint16_t pid) printf(" no descriptor\n"); } + // Read IADs + printf("\nReading interface association descriptors (IADs) for first configuration:\n"); + struct libusb_interface_association_descriptor_array *iad_array; + r = libusb_get_interface_association_descriptors(dev, 0, &iad_array); + if (r == LIBUSB_SUCCESS) { + printf(" nb IADs: %d\n", iad_array->length); + for (i=0; ilength;i++) { + const struct libusb_interface_association_descriptor *iad = &iad_array->iad[i]; + printf(" IAD %d:\n", i); + printf(" bFirstInterface: %u\n", iad->bFirstInterface); + printf(" bInterfaceCount: %u\n", iad->bInterfaceCount); + printf(" bFunctionClass: %02X\n", iad->bFunctionClass); + printf(" bFunctionSubClass: %02X\n", iad->bFunctionSubClass); + printf(" bFunctionProtocol: %02X\n", iad->bFunctionProtocol); + if (iad->iFunction) { + if (libusb_get_string_descriptor_ascii(handle, iad->iFunction, (unsigned char*)string, sizeof(string)) > 0) + printf(" iFunction: %u (%s)\n", iad->iFunction, string); + else + printf(" iFunction: %u (libusb_get_string_descriptor_ascii failed!)\n", iad->iFunction); + } + else + printf(" iFunction: 0\n"); + } + libusb_free_interface_association_descriptors(iad_array); + } + switch(test_mode) { case USE_PS3: CALL_CHECK_CLOSE(display_ps3_status(handle), handle); diff --git a/libusb/version_nano.h b/libusb/version_nano.h index 6cb280e..259aba6 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11765 +#define LIBUSB_NANO 11766 -- cgit v1.2.1