Standard USB Descriptor definitions. More...
Modules | |
Configuration Descriptor Parser | |
USB Configuration Descriptor definitions. | |
Data Structures | |
struct | USB_Descriptor_Configuration_Header_t |
Standard USB Configuration Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_Device_t |
Standard USB Device Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_DeviceQualifier_t |
Standard USB Device Qualifier Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_Endpoint_t |
Standard USB Endpoint Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_Header_t |
Standard USB Descriptor Header (LUFA naming conventions). More... | |
struct | USB_Descriptor_Interface_Association_t |
Standard USB Interface Association Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_Interface_t |
Standard USB Interface Descriptor (LUFA naming conventions). More... | |
struct | USB_Descriptor_String_t |
Standard USB String Descriptor (LUFA naming conventions). More... | |
struct | USB_StdDescriptor_Configuration_Header_t |
Standard USB Configuration Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_Device_t |
Standard USB Device Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_DeviceQualifier_t |
Standard USB Device Qualifier Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_Endpoint_t |
Standard USB Endpoint Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_Header_t |
Standard USB Descriptor Header (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_Interface_Association_t |
Standard USB Interface Association Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_Interface_t |
Standard USB Interface Descriptor (USB-IF naming conventions). More... | |
struct | USB_StdDescriptor_String_t |
Standard USB String Descriptor (USB-IF naming conventions). More... | |
Macros | |
#define | LANGUAGE_ID_ENG 0x0409 |
#define | NO_DESCRIPTOR 0 |
#define | USB_CONFIG_POWER_MA(mA) ((mA) >> 1) |
#define | USB_STRING_DESCRIPTOR(String) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + (sizeof(String) - 2), .Type = DTYPE_String}, .UnicodeString = String } |
#define | USB_STRING_DESCRIPTOR_ARRAY(...) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + sizeof((uint16_t){__VA_ARGS__}), .Type = DTYPE_String}, .UnicodeString = {__VA_ARGS__} } |
#define | USB_STRING_LEN(UnicodeChars) (sizeof(USB_Descriptor_Header_t) + ((UnicodeChars) << 1)) |
#define | VERSION_BCD(Major, Minor, Revision) |
Enumerations | |
enum | USB_Descriptor_ClassSubclassProtocol_t { USB_CSCP_NoDeviceClass = 0x00, USB_CSCP_NoDeviceSubclass = 0x00, USB_CSCP_NoDeviceProtocol = 0x00, USB_CSCP_VendorSpecificClass = 0xFF, USB_CSCP_VendorSpecificSubclass = 0xFF, USB_CSCP_VendorSpecificProtocol = 0xFF, USB_CSCP_IADDeviceClass = 0xEF, USB_CSCP_IADDeviceSubclass = 0x02, USB_CSCP_IADDeviceProtocol = 0x01 } |
enum | USB_DescriptorTypes_t { DTYPE_Device = 0x01, DTYPE_Configuration = 0x02, DTYPE_String = 0x03, DTYPE_Interface = 0x04, DTYPE_Endpoint = 0x05, DTYPE_DeviceQualifier = 0x06, DTYPE_Other = 0x07, DTYPE_InterfacePower = 0x08, DTYPE_InterfaceAssociation = 0x0B, DTYPE_CSInterface = 0x24, DTYPE_CSEndpoint = 0x25 } |
USB Configuration Descriptor Attribute Masks | |
#define | USB_CONFIG_ATTR_RESERVED 0x80 |
#define | USB_CONFIG_ATTR_SELFPOWERED 0x40 |
#define | USB_CONFIG_ATTR_REMOTEWAKEUP 0x20 |
Endpoint Descriptor Attribute Masks | |
#define | ENDPOINT_ATTR_NO_SYNC (0 << 2) |
#define | ENDPOINT_ATTR_ASYNC (1 << 2) |
#define | ENDPOINT_ATTR_ADAPTIVE (2 << 2) |
#define | ENDPOINT_ATTR_SYNC (3 << 2) |
Endpoint Descriptor Usage Masks | |
#define | ENDPOINT_USAGE_DATA (0 << 4) |
#define | ENDPOINT_USAGE_FEEDBACK (1 << 4) |
#define | ENDPOINT_USAGE_IMPLICIT_FEEDBACK (2 << 4) |
Standard USB device descriptor defines and retrieval routines, for USB devices. This module contains structures and macros for the easy creation of standard USB descriptors in USB device projects.
#define ENDPOINT_ATTR_ADAPTIVE (2 << 2) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is adaptive.
#define ENDPOINT_ATTR_ASYNC (1 << 2) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is asynchronous.
#define ENDPOINT_ATTR_NO_SYNC (0 << 2) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is not synchronized.
#define ENDPOINT_ATTR_SYNC (3 << 2) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is synchronized.
#define ENDPOINT_USAGE_DATA (0 << 4) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is used for data transfers.
#define ENDPOINT_USAGE_FEEDBACK (1 << 4) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is used for feedback.
#define ENDPOINT_USAGE_IMPLICIT_FEEDBACK (2 << 4) |
Can be masked with other endpoint descriptor attributes for a USB_Descriptor_Endpoint_t descriptor's Attributes
value to indicate that the specified endpoint is used for implicit feedback.
#define LANGUAGE_ID_ENG 0x0409 |
String language ID for the English language. Should be used in USB_Descriptor_String_t descriptors to indicate that the English language is supported by the device in its string descriptors.
#define NO_DESCRIPTOR 0 |
Indicates that a given descriptor does not exist in the device. This can be used inside descriptors for string descriptor indexes, or may be use as a return value for GetDescriptor when the specified descriptor does not exist.
#define USB_CONFIG_ATTR_REMOTEWAKEUP 0x20 |
Can be masked with other configuration descriptor attributes for a USB_Descriptor_Configuration_Header_t descriptor's ConfigAttributes
value to indicate that the specified configuration supports the remote wakeup feature of the USB standard, allowing a suspended USB device to wake up the host upon request.
#define USB_CONFIG_ATTR_RESERVED 0x80 |
Mask for the reserved bit in the Configuration Descriptor's ConfigAttributes
field, which must be set on all devices for historical purposes.
#define USB_CONFIG_ATTR_SELFPOWERED 0x40 |
Can be masked with other configuration descriptor attributes for a USB_Descriptor_Configuration_Header_t descriptor's ConfigAttributes
value to indicate that the specified configuration can draw its power from the device's own power source.
#define USB_CONFIG_POWER_MA | ( | mA | ) | ((mA) >> 1) |
Macro to calculate the power value for the configuration descriptor, from a given number of milliamperes.
[in] | mA | Maximum number of milliamps the device consumes when the given configuration is selected. |
#define USB_STRING_DESCRIPTOR | ( | String | ) | { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + (sizeof(String) - 2), .Type = DTYPE_String}, .UnicodeString = String } |
Convenience macro to easily create USB_Descriptor_String_t instances from a wide character string.
[in] | String | String to initialize a USB String Descriptor structure with. |
#define USB_STRING_DESCRIPTOR_ARRAY | ( | ... | ) | { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + sizeof((uint16_t){__VA_ARGS__}), .Type = DTYPE_String}, .UnicodeString = {__VA_ARGS__} } |
Convenience macro to easily create USB_Descriptor_String_t instances from an array of characters.
[in] | ... | Characters to initialize a USB String Descriptor structure with. |
#define USB_STRING_LEN | ( | UnicodeChars | ) | (sizeof(USB_Descriptor_Header_t) + ((UnicodeChars) << 1)) |
Macro to calculate the Unicode length of a string with a given number of Unicode characters. Should be used in string descriptor's headers for giving the string descriptor's byte length.
[in] | UnicodeChars | Number of Unicode characters in the string text. |
#define VERSION_BCD | ( | Major, | |
Minor, | |||
Revision | |||
) |
Macro to encode a given major/minor/revision version number into Binary Coded Decimal format for descriptor fields requiring BCD encoding, such as the USB version number in the standard device descriptor.
[in] | Major | Major version number to encode. |
[in] | Minor | Minor version number to encode. |
[in] | Revision | Revision version number to encode. |
Enum for possible Class, Subclass and Protocol values of device and interface descriptors.
Enum for the possible standard descriptor types, as given in each descriptor's header.