summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pete@akeo.ie>2011-09-06 11:44:00 +0100
committerVitali Lovich <vlovich@aliph.com>2011-09-06 12:00:42 +0100
commit50ba04d3ece76da1b62a56fdf44a229437a293c7 (patch)
tree488a3a94a900f7f2fcbdd5fcef3d554ac4054635
parent48c695606e37ebeeed6d37494e8f8ad6d56c5b5d (diff)
downloadlibusb-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.c5
-rw-r--r--libusb/libusb-1.0.def10
-rw-r--r--libusb/libusbi.h2
-rw-r--r--libusb/os/windows_usb.c7
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;