diff options
author | Pete Batard <pete@akeo.ie> | 2011-09-06 11:44:00 +0100 |
---|---|---|
committer | Vitali Lovich <vlovich@aliph.com> | 2011-09-06 12:00:42 +0100 |
commit | 50ba04d3ece76da1b62a56fdf44a229437a293c7 (patch) | |
tree | 488a3a94a900f7f2fcbdd5fcef3d554ac4054635 | |
parent | 48c695606e37ebeeed6d37494e8f8ad6d56c5b5d (diff) | |
download | libusb-50ba04d3ece76da1b62a56fdf44a229437a293c7.tar.gz |
get_device_speed fixes and addons
* fixed typos and missing breaks
* device_speed in .def
* device_speed in xusb
-rw-r--r-- | examples/xusb.c | 5 | ||||
-rw-r--r-- | libusb/libusb-1.0.def | 10 | ||||
-rw-r--r-- | libusb/libusbi.h | 2 | ||||
-rw-r--r-- | libusb/os/windows_usb.c | 7 |
4 files changed, 20 insertions, 4 deletions
diff --git a/examples/xusb.c b/examples/xusb.c index a499d2e..42093b9 100644 --- a/examples/xusb.c +++ b/examples/xusb.c @@ -540,6 +540,8 @@ int test_device(uint16_t vid, uint16_t pid) int iface_detached = -1; #endif struct libusb_device_descriptor dev_desc; + char* speed_name[5] = { "Unknown", "1.5 Mbit/s (USB 1.0 LowSpeed)", "12 Mbit/s (USB 1.0 FullSpeed)", + "480 Mbit/s (USB 2.0 HighSpeed)", "5000 Mbit/s (USB 3.0 SuperSpeed)"}; char string[128]; uint8_t string_index[3]; // indexes of the string descriptors uint8_t endpoint_in = 0, endpoint_out = 0; // default IN and OUT endpoints @@ -562,6 +564,9 @@ int test_device(uint16_t vid, uint16_t pid) } printf("\n"); } + r = libusb_get_device_speed(dev); + if ((r<0) || (r>4)) r=0; + printf("speed: %s\n", speed_name[r]); printf("\nReading device descriptor:\n"); CALL_CHECK(libusb_get_device_descriptor(dev, &dev_desc)); diff --git a/libusb/libusb-1.0.def b/libusb/libusb-1.0.def index 1ae2756..b2f3861 100644 --- a/libusb/libusb-1.0.def +++ b/libusb/libusb-1.0.def @@ -240,6 +240,16 @@ EXPORTS libusb_get_device_list@32 = libusb_get_device_list libusb_get_device_list@4 = libusb_get_device_list libusb_get_device_list@8 = libusb_get_device_list + libusb_get_device_speed + libusb_get_device_speed@0 = libusb_get_device_speed + libusb_get_device_speed@12 = libusb_get_device_speed + libusb_get_device_speed@16 = libusb_get_device_speed + libusb_get_device_speed@20 = libusb_get_device_speed + libusb_get_device_speed@24 = libusb_get_device_speed + libusb_get_device_speed@28 = libusb_get_device_speed + libusb_get_device_speed@32 = libusb_get_device_speed + libusb_get_device_speed@4 = libusb_get_device_speed + libusb_get_device_speed@8 = libusb_get_device_speed libusb_get_max_iso_packet_size libusb_get_max_iso_packet_size@0 = libusb_get_max_iso_packet_size libusb_get_max_iso_packet_size@12 = libusb_get_max_iso_packet_size diff --git a/libusb/libusbi.h b/libusb/libusbi.h index 0ea4878..aa7ed76 100644 --- a/libusb/libusbi.h +++ b/libusb/libusbi.h @@ -336,7 +336,7 @@ enum usbi_transfer_flags { USBI_TRANSFER_TIMED_OUT = 1 << 0, /* Set by backend submit_transfer() if the OS handles timeout */ - USBI_TRANSFER_OS_HANDLES_TIMEOUT = 1 << 1 + USBI_TRANSFER_OS_HANDLES_TIMEOUT = 1 << 1, /* Cancellation was requested via libusb_cancel_transfer() */ USBI_TRANSFER_CANCELLING = 1 << 2, diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c index 460352c..e9cb175 100644 --- a/libusb/os/windows_usb.c +++ b/libusb/os/windows_usb.c @@ -1079,11 +1079,12 @@ static int init_device(struct libusb_device* dev, struct libusb_device* parent_d } dev->device_address = (uint8_t)conn_info.DeviceAddress; switch (conn_info.Speed) { - case 0: dev->speed = LIBUSB_SPEED_LOW; - case 1: dev->speed = LIBUSB_SPEED_FULL; - case 2: dev->speed = LIBUSB_SPEED_HIGH; + case 0: dev->speed = LIBUSB_SPEED_LOW; break; + case 1: dev->speed = LIBUSB_SPEED_FULL; break; + case 2: dev->speed = LIBUSB_SPEED_HIGH; break; default: usbi_warn(ctx, "Got unknown device speed %d", conn_info.Speed); + break; } memcpy(&priv->dev_descriptor, &(conn_info.DeviceDescriptor), sizeof(USB_DEVICE_DESCRIPTOR)); dev->num_configurations = priv->dev_descriptor.bNumConfigurations; |