diff options
-rw-r--r-- | libusb/descriptor.c | 8 | ||||
-rw-r--r-- | libusb/libusbi.h | 69 | ||||
-rw-r--r-- | libusb/os/linux_usbfs.c | 2 | ||||
-rw-r--r-- | libusb/version_nano.h | 2 |
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 |