summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2011-09-06 10:41:00 +0000
committerVitali Lovich <vlovich@aliph.com>2011-09-06 11:09:35 +0100
commit037234078b24a6b509d70c86194ba310bc453a7a (patch)
tree2a8dc33a544fc0287265353ede0fc8ab6f40aef2
parentbf12efb464a87bb52c8e69a98999e88f617865c7 (diff)
downloadlibusb-037234078b24a6b509d70c86194ba310bc453a7a.tar.gz
Darwin: Provide libusb_get_device_speed() data
-rw-r--r--libusb/os/darwin_usb.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c
index 6fcbb33..76eb1e4 100644
--- a/libusb/os/darwin_usb.c
+++ b/libusb/os/darwin_usb.c
@@ -654,6 +654,7 @@ static int process_new_device (struct libusb_context *ctx, usb_device_t **device
struct libusb_device *dev;
struct discovered_devs *discdevs;
UInt16 address;
+ UInt8 devSpeed;
int ret = 0, need_unref = 0;
do {
@@ -686,6 +687,16 @@ static int process_new_device (struct libusb_context *ctx, usb_device_t **device
dev->bus_number = locationID >> 24;
dev->device_address = address;
+ (*device)->GetDeviceSpeed (device, &devSpeed);
+
+ switch (devSpeed) {
+ case kUSBDeviceSpeedLow: dev->speed = LIBUSB_SPEED_LOW; break;
+ case kUSBDeviceSpeedFull: dev->speed = LIBUSB_SPEED_FULL; break;
+ case kUSBDeviceSpeedHigh: dev->speed = LIBUSB_SPEED_HIGH; break;
+ default:
+ usbi_warn (ctx, "Got unknown device speed %d", devSpeed);
+ }
+
/* save our location, we'll need this later */
priv->location = locationID;
snprintf(priv->sys_path, 20, "%03i-%04x-%04x-%02x-%02x", address, priv->dev_descriptor.idVendor, priv->dev_descriptor.idProduct,