summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libusb/descriptor.c8
-rw-r--r--libusb/libusbi.h69
-rw-r--r--libusb/os/linux_usbfs.c2
-rw-r--r--libusb/version_nano.h2
4 files changed, 71 insertions, 10 deletions
diff --git a/libusb/descriptor.c b/libusb/descriptor.c
index 44237dd..5124494 100644
--- a/libusb/descriptor.c
+++ b/libusb/descriptor.c
@@ -96,7 +96,7 @@ static int parse_endpoint(struct libusb_context *ctx,
struct libusb_endpoint_descriptor *endpoint, unsigned char *buffer,
int size, int host_endian)
{
- struct usb_descriptor_header header;
+ struct usbi_descriptor_header header;
unsigned char *extra;
unsigned char *begin;
int parsed = 0;
@@ -214,7 +214,7 @@ static int parse_interface(libusb_context *ctx,
int r;
int parsed = 0;
int interface_number = -1;
- struct usb_descriptor_header header;
+ struct usbi_descriptor_header header;
struct libusb_interface_descriptor *ifp;
unsigned char *begin;
@@ -369,7 +369,7 @@ static int parse_configuration(struct libusb_context *ctx,
{
int i;
int r;
- struct usb_descriptor_header header;
+ struct usbi_descriptor_header header;
struct libusb_interface *usb_interface;
if (size < LIBUSB_DT_CONFIG_SIZE) {
@@ -750,7 +750,7 @@ int API_EXPORTED libusb_get_ss_endpoint_companion_descriptor(
const struct libusb_endpoint_descriptor *endpoint,
struct libusb_ss_endpoint_companion_descriptor **ep_comp)
{
- struct usb_descriptor_header header;
+ struct usbi_descriptor_header header;
int size = endpoint->extra_length;
const unsigned char *buffer = endpoint->extra;
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 2fa4e11..9622768 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -536,11 +536,72 @@ enum usbi_transfer_timeout_flags {
((unsigned char *)(transfer) \
- PTR_ALIGN(sizeof(struct usbi_transfer))))
+#ifdef _MSC_VER
+#pragma pack(push, 1)
+#endif
+
/* All standard descriptors have these 2 fields in common */
-struct usb_descriptor_header {
- uint8_t bLength;
- uint8_t bDescriptorType;
-};
+struct usbi_descriptor_header {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+} LIBUSB_PACKED;
+
+struct usbi_device_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint16_t bcdUSB;
+ uint8_t bDeviceClass;
+ uint8_t bDeviceSubClass;
+ uint8_t bDeviceProtocol;
+ uint8_t bMaxPacketSize0;
+ uint16_t idVendor;
+ uint16_t idProduct;
+ uint16_t bcdDevice;
+ uint8_t iManufacturer;
+ uint8_t iProduct;
+ uint8_t iSerialNumber;
+ uint8_t bNumConfigurations;
+} LIBUSB_PACKED;
+
+struct usbi_configuration_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint16_t wTotalLength;
+ uint8_t bNumInterfaces;
+ uint8_t bConfigurationValue;
+ uint8_t iConfiguration;
+ uint8_t bmAttributes;
+ uint8_t bMaxPower;
+} LIBUSB_PACKED;
+
+struct usbi_interface_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint8_t bInterfaceNumber;
+ uint8_t bAlternateSetting;
+ uint8_t bNumEndpoints;
+ uint8_t bInterfaceClass;
+ uint8_t bInterfaceSubClass;
+ uint8_t bInterfaceProtocol;
+ uint8_t iInterface;
+} LIBUSB_PACKED;
+
+struct usbi_string_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint16_t wData[];
+} LIBUSB_PACKED;
+
+struct usbi_bos_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint16_t wTotalLength;
+ uint8_t bNumDeviceCaps;
+} LIBUSB_PACKED;
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif
/* shared data and functions */
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index e1b25b0..31304d6 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -613,7 +613,7 @@ int linux_get_device_address(struct libusb_context *ctx, int detached,
static int seek_to_next_descriptor(struct libusb_context *ctx,
uint8_t descriptor_type, unsigned char *buffer, int size)
{
- struct usb_descriptor_header header;
+ struct usbi_descriptor_header header;
int i;
for (i = 0; size >= 0; i += header.bLength, size -= header.bLength) {
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index be32d4f..a2f78dc 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11501
+#define LIBUSB_NANO 11502