Skip to content

Commit b9be7d0

Browse files
committed
Read bcdUSB from ioregistry
Seems like there is a bcdUSB property from SDK 10.11 and on. Signed-off-by: Tormod Volden <[email protected]>
1 parent 7f188ac commit b9be7d0

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

libusb/os/darwin_usb.c

+7-5
Original file line numberDiff line numberDiff line change
@@ -1105,16 +1105,18 @@ static enum libusb_error darwin_cache_device_descriptor (struct libusb_context *
11051105
(*device)->GetDeviceProduct (device, &idProduct);
11061106
(*device)->GetDeviceVendor (device, &idVendor);
11071107

1108-
/* Try synthesize a device descriptor from OS cached values */
1108+
/* Try synthesize a device descriptor from OS cached values.
1109+
If anything fails, fall back to requesting descriptor from device. */
11091110
do {
11101111
IOUSBDeviceDescriptor *desc = &dev->dev_descriptor;
1111-
UInt16 bcdDevice;
1112+
UInt16 bcdDevice, bcdUSB;
11121113

1113-
/* If anything fails, fall back to requesting descriptor from device */
1114-
if (!get_ioregistry_value_number (dev->service, CFSTR("bMaxPacketSize0"), kCFNumberSInt8Type, &desc->bMaxPacketSize0))
1114+
if (!get_ioregistry_value_number (dev->service, CFSTR("bcdUSB"), kCFNumberSInt16Type, &bcdUSB))
11151115
break;
1116+
desc->bcdUSB = libusb_cpu_to_le16(bcdUSB); // TODO: verify on BE
11161117

1117-
desc->bcdUSB = libusb_cpu_to_le16(0x0200); // FIXME get from somewhere
1118+
if (!get_ioregistry_value_number (dev->service, CFSTR("bMaxPacketSize0"), kCFNumberSInt8Type, &desc->bMaxPacketSize0))
1119+
break;
11181120

11191121
desc->bDeviceClass = bDeviceClass;
11201122
(*device)->GetDeviceSubClass (device, &desc->bDeviceSubClass);

0 commit comments

Comments
 (0)