#include <IOKit/usb/AppleUSBDefinitions.h>
IOKit/usb/AppleUSBDefinitions.h Kernel.framework
42 typedefs · 39 enums · 31 structs · 17 macros
#define AppleUSBCommon_AppleUSBDefinitions_h
#define IOUSBBit(bit) ((uint32_t)(1) << bit)
#define IOUSBBitRange(start, end) (~(((uint32_t)(1) << start) - 1) & (((uint32_t)(1) << end) | (((uint32_t)(1) << end) - 1)))
#define IOUSBBitRange64(start, end) (~(((uint64_t)(1) << start) - 1) & (((uint64_t)(1) << end) | (((uint64_t)(1) << end) - 1)))
#define IOUSBBitRangePhase(start, end) (start)
underlying type unsigned long
| kIOUSBLinkSpeedLow | 1500000 | |
| kIOUSBLinkSpeedFull | 12000000 | |
| kIOUSBLinkSpeedHigh | 480000000 | |
| kIOUSBLinkSpeed5Gbps | 5000000000 | |
| kIOUSBLinkSpeed10Gbps | 10000000000 | |
| kIOUSBLinkSpeed20Gbps | 20000000000 | |
| kIOUSBLinkSpeed40Gbps | 40000000000 | |
| kIOUSBLinkSpeed80Gbps | 80000000000 | |
@enum kIOUSBAppleVendorID
@discussion Apple's vendor ID, assigned by the USB-IF
underlying type unsigned int
@enum tIOUSBDescriptorType
@brief Descriptor types defined by USB 2.0 Table 9-5 and USB 3.0 Table 9-6
underlying type unsigned int
| kIOUSBDescriptorTypeDevice | 1 | |
| kIOUSBDescriptorTypeConfiguration | 2 | |
| kIOUSBDescriptorTypeString | 3 | |
| kIOUSBDescriptorTypeInterface | 4 | |
| kIOUSBDescriptorTypeEndpoint | 5 | |
| kIOUSBDescriptorTypeDeviceQualifier | 6 | |
| kIOUSBDescriptorTypeOtherSpeedConfiguration | 7 | |
| kIOUSBDescriptorTypeInterfacePower | 8 | |
| kIOUSBDescriptorTypeOTG | 9 | |
| kIOUSBDescriptorTypeDebug | 10 | |
| kIOUSBDescriptorTypeInterfaceAssociation | 11 | |
| kIOUSBDescriptorTypeBOS | 15 | |
| kIOUSBDescriptorTypeDeviceCapability | 16 | |
| kIOUSBDecriptorTypeHID | 33 | |
| kIOUSBDecriptorTypeReport | 34 | |
| kIOUSBDescriptorTypePhysical | 35 | |
| kIOUSBDescriptorTypeHub | 41 | |
| kIOUSBDescriptorTypeSuperSpeedHub | 42 | |
| kIOUSBDescriptorTypeSuperSpeedUSBEndpointCompanion | 48 | |
| kIOUSBDescriptorTypeSuperSpeedPlusIsochronousEndpointCompanion | 49 | |
typedef enum tIOUSBDescriptorType tIOUSBDescriptorType
@enum tIOUSBDescriptorSize
@brief Size in bytes for descriptor structures
underlying type unsigned int
| 2 | |
| kIOUSBDescriptorSizeDevice | 18 | |
| kIOUSBDescriptorSizeConfiguration | 9 | |
| kIOUSBDescriptorSizeInterface | 9 | |
| kIOUSBDescriptorSizeEndpoint | 7 | |
| kIOUSBDescriptorSizeStringMinimum | 2 | |
| kIOUSBDescriptorSizeStringMaximum | 255 | |
| kIOUSBDescriptorSizeDeviceQualifier | 10 | |
| kIOUSBDescriptorSizeInterfaceAssociation | 8 | |
| kIOUSBDescriptorSizeBOS | 5 | |
| kIOUSBDescriptorSizeDeviceCapability | 3 | |
| kIOUSBDescriptorSizeUSB20ExtensionCapability | 7 | |
| kIOUSBDescriptorSizeSuperSpeedUSBDeviceCapability | 10 | |
| kIOUSBDescriptorSizeContainerIDCapability | 20 | |
| kIOUSBDescriptorSizeHubMinimum | 9 | |
| kIOUSBDescriptorSizeHubMaximum | 21 | |
| kIOUSBDescriptorSizeSuperSpeedHub | 12 | |
| kIOUSBDescriptorSizeSuperSpeedUSBEndpointCompanion | 6 | |
| kIOUSBDescriptorSizeSuperSpeedPlusIsochronousEndpointCompanion | 8 | |
| kIOUSBDescriptorSizeBillboardDeviceMinimum | 44 | |
| kIOUSBDescriptorSizeBillboardDeviceMaximum | 256 | |
| kIOUSBDescriptorSizePlatformECIDCapability | 28 | |
| kIOUSBDescriptorSizePlatformCapability | 20 | |
typedef enum tIOUSBDescriptorSize tIOUSBDescriptorSize
@brief Base descriptor defined by USB 2.0 9.5
@discussion Used to represent generic descriptor definitions
typedef IOUSBDescriptorHeader IOUSBDescriptor
@typedef IOUSBDeviceDescriptor
@discussion Descriptor for a USB Device.
See the USB Specification at <a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
size 18, align 1 · packed
| 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 | |
typedef struct IOUSBDeviceDescriptor IOUSBDeviceDescriptor
@typedef IOUSBDeviceQualifierDescriptor
@discussion USB Device Qualifier Descriptor.
See the USB Specification at <a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 2.0 9.6.2: Device Qualifier
size 10, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint16_t | bcdUSB | |
| uint8_t | bDeviceClass | |
| uint8_t | bDeviceSubClass | |
| uint8_t | bDeviceProtocol | |
| uint8_t | bMaxPacketSize0 | |
| uint8_t | bNumConfigurations | |
| uint8_t | bReserved | |
typedef struct IOUSBDeviceQualifierDescriptor IOUSBDeviceQualifierDescriptor
@typedef IOUSBConfigurationDescriptor
@discussion Standard USB Configuration Descriptor. It is variable length, so this only specifies
the known fields. We use the wTotalLength field to read the whole descriptor.
See the USB Specification at <a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 2.0 9.6.3: Configuration
size 9, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint16_t | wTotalLength | |
| uint8_t | bNumInterfaces | |
| uint8_t | bConfigurationValue | |
| uint8_t | iConfiguration | |
| uint8_t | bmAttributes | |
| uint8_t | MaxPower | |
typedef struct IOUSBConfigurationDescriptor IOUSBConfigurationDescriptor
underlying type unsigned int
| kIOUSBConfigurationDescriptorAttributeRemoteWakeCapable | 32 | |
| kIOUSBConfigurationDescriptorAttributeSelfPowered | 64 | |
@typedef IOUSBInterfaceDescriptor
@discussion Descriptor for a USB Interface. See the USB Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 2.0 9.6.5: Interface
size 9, align 1 · packed
| 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 | |
typedef struct IOUSBInterfaceDescriptor IOUSBInterfaceDescriptor
@typedef IOUSBEndpointDescriptor
@discussion Descriptor for a USB Endpoint. See the USB Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 2.0 9.6.6: Endpoint
size 7, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bEndpointAddress | |
| uint8_t | bmAttributes | |
| uint16_t | wMaxPacketSize | |
| uint8_t | bInterval | |
typedef struct IOUSBEndpointDescriptor IOUSBEndpointDescriptor
underlying type unsigned int
| kIOUSBEndpointDescriptorNumber | 15 | |
| kIOUSBEndpointDescriptorNumberPhase | 0 | |
| kIOUSBEndpointDescriptorEndpointAddressReserved | 112 | |
| kIOUSBEndpointDescriptorDirection | 128 | |
| kIOUSBEndpointDescriptorDirectionPhase | 7 | |
| kIOUSBEndpointDescriptorDirectionOut | 0 | |
| kIOUSBEndpointDescriptorDirectionIn | 128 | |
| kIOUSBEndpointDescriptorTransferType | 3 | |
| kIOUSBEndpointDescriptorTransferTypePhase | 0 | |
| kIOUSBEndpointDescriptorTransferTypeControl | 0 | |
| kIOUSBEndpointDescriptorTransferTypeIsochronous | 1 | |
| kIOUSBEndpointDescriptorTransferTypeBulk | 2 | |
| kIOUSBEndpointDescriptorTransferTypeInterrupt | 3 | |
| kIOUSBEndpointDescriptorSynchronizationType | 12 | |
| kIOUSBEndpointDescriptorSynchronizationTypePhase | 2 | |
| kIOUSBEndpointDescriptorSynchronizationTypeNone | 0 | |
| kIOUSBEndpointDescriptorSynchronizationTypeAsynchronous | 4 | |
| kIOUSBEndpointDescriptorSynchronizationTypeAdaptive | 8 | |
| kIOUSBEndpointDescriptorSynchronizationTypeSynchronous | 12 | |
| kIOUSBEndpointDescriptorUsageType | 48 | |
| kIOUSBEndpointDescriptorUsageTypePhase | 4 | |
| kIOUSBEndpointDescriptorUsageTypeInterruptPeriodic | 0 | |
| kIOUSBEndpointDescriptorUsageTypeInterruptNotification | 16 | |
| kIOUSBEndpointDescriptorUsageTypeInterruptReserved1 | 32 | |
| kIOUSBEndpointDescriptorUsageTypeInterruptReserved2 | 48 | |
| kIOUSBEndpointDescriptorUsageTypeIsocData | 0 | |
| kIOUSBEndpointDescriptorUsageTypeIsocFeedback | 16 | |
| kIOUSBEndpointDescriptorUsageTypeIsocImplicit | 32 | |
| kIOUSBEndpointDescriptorUsageTypeIsocReserved | 48 | |
| kIOUSBEndpointDescriptorPacketSize | 2047 | |
| kIOUSBEndpointDescriptorPacketSizePhase | 0 | |
| kIOUSBEndpointDescriptorPacketSizeMult | 6144 | |
| kIOUSBEndpointDescriptorPacketSizeMultPhase | 11 | |
| kIOUSBEndpointDescriptorReserved | 57344 | |
| kIOUSBEndpointDescriptorReservedPhase | 13 | |
@enum tIOUSBEndpointDirection
@brief IO Direction of an endpoint
@constant kIOUSBEndpointDirectionOut endpoint direction is host-to-device
@constant kIOUSBEndpointDirectionIn endpoint direction is device-to-host
@constant kIOUSBEndpointDirectionUnknown the direction is unknown
underlying type unsigned int
| kIOUSBEndpointDirectionOut | 0 | |
| kIOUSBEndpointDirectionIn | 1 | |
| kIOUSBEndpointDirectionUnknown | 2 | |
typedef enum tIOUSBEndpointDirection tIOUSBEndpointDirection
@enum tIOUSBEndpointType
@brief Describes the type of endpoint
@constant kIOUSBEndpointTypeControl endpoint is a control endpoint
@constant kIOUSBEndpointTypeIsochronous endpoint is an isochronous endpoint
@constant kIOUSBEndpointTypeBulk is a bulk endpoint
@constant kIOUSBEndpointTypeInterrupt is an interrupt endpoint
underlying type unsigned int
| kIOUSBEndpointTypeControl | 0 | |
| kIOUSBEndpointTypeIsochronous | 1 | |
| kIOUSBEndpointTypeBulk | 2 | |
| kIOUSBEndpointTypeInterrupt | 3 | |
typedef enum tIOUSBEndpointType tIOUSBEndpointType
underlying type unsigned int
| kIOUSBEndpointSynchronizationTypeNone | 0 | |
| kIOUSBEndpointSynchronizationTypeAsynchronous | 1 | |
| kIOUSBEndpointSynchronizationTypeAdaptive | 2 | |
| kIOUSBEndpointSynchronizationTypeSynchronous | 3 | |
typedef enum tIOUSBEndpointSynchronizationType tIOUSBEndpointSynchronizationType
underlying type unsigned int
| kIOUSBEndpointUsageTypeIsocData | 0 | |
| kIOUSBEndpointUsageTypeIsocFeedback | 1 | |
| kIOUSBEndpointUsageTypeIsocImplicit | 2 | |
typedef enum tIOUSBEndpointUsageType tIOUSBEndpointUsageType
@enum tIOUSBLanguageID
@brief USB Language Identifiers 1.0
underlying type unsigned int
| kIOUSBLanguageIDEnglishUS | 1033 | |
typedef enum tIOUSBLanguageID tIOUSBLanguageID
@typedef IOUSBStringDescriptor
@discussion Descriptor for a USB Strings. See the USB Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 2.0 9.6.7: String
size 3, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t[1] | bString | |
typedef struct IOUSBStringDescriptor IOUSBStringDescriptor
underlying type unsigned int
| kIOUSBDeviceCapabilityTypeWireless | 1 | USB 3.0 Table 9-13 |
| kIOUSBDeviceCapabilityTypeUSB20Extension | 2 | |
| kIOUSBDeviceCapabilityTypeSuperSpeed | 3 | |
| kIOUSBDeviceCapabilityTypeContainerID | 4 | |
| kIOUSBDeviceCapabilityTypePlatform | 5 | USB 3.1 Table 9-14 |
| kIOUSBDeviceCapabilityTypePowerDelivery | 6 | |
| kIOUSBDeviceCapabilityTypeBatteryInfo | 7 | |
| kIOUSBDeviceCapabilityTypePdConsumerPort | 8 | |
| kIOUSBDeviceCapabilityTypePdProviderPort | 9 | |
| kIOUSBDeviceCapabilityTypeSuperSpeedPlus | 10 | |
| kIOUSBDeviceCapabilityTypePrecisionMeasurement | 11 | |
| kIOUSBDeviceCapabilityTypeWirelessExt | 12 | |
| kIOUSBDeviceCapabilityTypeBillboard | 13 | |
| kIOUSBDeviceCapabilityTypeBillboardAltMode | 15 | |
typedef enum tIOUSBDeviceCapabilityType tIOUSBDeviceCapabilityType
@typedef IOUSBBOSDescriptor
@discussion USB BOS descriptor. See the USB Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 3.0 9.6.2: Binary Device Object Store (BOS)
size 5, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint16_t | wTotalLength | |
| uint8_t | bNumDeviceCaps | |
typedef struct IOUSBBOSDescriptor IOUSBBOSDescriptor
@typedef IOUSBDeviceCapabilityUSB2Extension
@discussion Device Capability USB 2.0 Extension.
USB 3.0 9.6.2.1: USB 2.0 Extension
size 7, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint32_t | bmAttributes | |
typedef struct IOUSBDeviceCapabilityUSB2Extension IOUSBDeviceCapabilityUSB2Extension
underlying type unsigned int
| kIOUSBUSB20ExtensionCapabilityLPM | 2 | |
| kIOUSBUSB20ExtensionCapabilityBESLSupport | 4 | From USB 2.0 ECN Errata for Link Power Management. |
| kIOUSBUSB20ExtensionCapabilityBESLValid | 8 | |
| kIOUSBUSB20ExtensionCapabilityBESLDValid | 16 | |
| kIOUSBUSB20ExtensionCapabilityBESL | 3840 | |
| kIOUSBUSB20ExtensionCapabilityBESLPhase | 8 | |
| kIOUSBUSB20ExtensionCapabilityBESLD | 61440 | |
| kIOUSBUSB20ExtensionCapabilityBESLDPhase | 12 | |
@typedef IOUSBDeviceCapabilitySuperSpeedUSB
@discussion Device Capability SuperSpeed USB. USB 3.0 9.6.2.2: SuperSpeed USB Device Capability
size 10, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint8_t | bmAttributes | |
| uint16_t | wSpeedsSupported | |
| uint8_t | bFunctionalitySupport | |
| uint8_t | bU1DevExitLat | |
| uint16_t | wU2DevExitLat | |
typedef struct IOUSBDeviceCapabilitySuperSpeedUSB IOUSBDeviceCapabilitySuperSpeedUSB
underlying type unsigned int
| kIOUSBSuperSpeedDeviceCapabilityLTM | 2 | |
| kIOUSBSuperSpeedDeviceCapabilityLowSpeed | 1 | |
| kIOUSBSuperSpeedDeviceCapabilityFullSpeed | 2 | |
| kIOUSBSuperSpeedDeviceCapabilityHighSpeed | 4 | |
| kIOUSBSuperSpeedDeviceCapability5Gb | 8 | |
| kIOUSBSuperSpeedDeviceCapabilitySupportLowSpeed | 0 | |
| kIOUSBSuperSpeedDeviceCapabilitySupportFullSpeed | 1 | |
| kIOUSBSuperSpeedDeviceCapabilitySupportHighSpeed | 2 | |
| kIOUSBSuperSpeedDeviceCapabilitySupport5Gb | 3 | |
| kIOUSBSuperSpeedDeviceCapabilityU1DevExitLatMax | 10 | |
| kIOUSBSuperSpeedDeviceCapabilityU2DevExitLatMax | 2047 | |
@typedef IOUSBDeviceCapabilitySuperSpeedPlusUSB
@discussion Device Capability SuperSpeedPlus USB.
USB 3.1 9.6.2.5: SuperSpeedPlus USB Device Capability
size 12, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint8_t | bReserved | |
| uint32_t | bmAttributes | |
| uint16_t | wFunctionalitySupport | |
| uint16_t | wReserved | |
| uint32_t[] | bmSublinkSpeedAttr | |
typedef struct IOUSBDeviceCapabilitySuperSpeedPlusUSB IOUSBDeviceCapabilitySuperSpeedPlusUSB
underlying type unsigned int
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedAttrCount | 31 | bmAttributes |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedAttrCountPhase | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedIdCount | 480 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedIdCountPhase | 5 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkMinSpeedId | 15 | wFunctionalitySupport |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkMinSpeedIdPhase | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityReserved | 240 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityReservedPhase | 4 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityMinRxLaneCount | 3840 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityMinRxLaneCountPhase | 8 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityMinTxLaneCount | 61440 | |
| kIOUSBSuperSpeedPlusDeviceCapabilityMinTxLaneCountPhase | 12 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedId | 15 | bmSublinkSpeedAttr |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedIdPhase | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSE | 48 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSEPhase | 4 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSEBits | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSEKbits | 16 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSEMbits | 32 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkLSEGbits | 48 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkType | 192 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkTypePhase | 6 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSymmetry | 64 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSymmetryPhase | 6 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSymmetric | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkAsymmetric | 64 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkDirection | 128 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkDirectionPhase | 7 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkDirectionRx | 0 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkDirectionTx | 128 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkReserved | 16128 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkReservedPhase | 8 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkProtocol | 49152 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkProtocolPhase | 14 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedMantissa | 4294901760 | |
| kIOUSBSuperSpeedPlusDeviceCapabilitySublinkSpeedMantissaPhase | 16 | |
@typedef IOUSBDeviceCapabilityContainerID
@discussion Device Capability Container ID.
USB 3.0 9.6.2.3: Container ID
size 20, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint8_t | bReservedID | |
| uint8_t[16] | containerID | |
typedef struct IOUSBDeviceCapabilityContainerID IOUSBDeviceCapabilityContainerID
@typedef IOUSBDeviceCapabilityBillboardAltConfig
@discussion Device Capability Billboard Alternate Setting Info.
USB Billboard 3.1.6.2: Billboard Capability Descriptor V1.2
size 7, align 1 · packed
| uint16_t | wSVID | |
| uint32_t | dwAlternateMode | |
| uint8_t | iAlternateModeString | |
typedef struct IOUSBDeviceCapabilityBillboardAltConfigCompatibility IOUSBDeviceCapabilityBillboardAltConfigCompatibility
@typedef IOUSBDeviceCapabilityBillboardAltConfig
@discussion Device Capability Billboard Alternate Setting Info.
USB Billboard 3.1.6.2: Billboard Capability Descriptor V1.1 and 1.21+
size 4, align 1 · packed
| uint16_t | wSVID | |
| uint8_t | bAltenateMode | |
| uint8_t | iAlternateModeString | |
typedef struct IOUSBDeviceCapabilityBillboardAltConfig IOUSBDeviceCapabilityBillboardAltConfig
@typedef IOUSBDeviceCapabilityBillboard
@discussion Device Capability Billboard.
USB Billboard 3.1.6.2: Billboard Capability Descriptor
size 44, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint8_t | iAdditionalInfoURL | |
| uint8_t | bNumberOfAlternateModes | |
| uint8_t | bPreferredAlternateMode | |
| uint16_t | vCONNPower | |
| uint8_t[32] | bmConfigured | |
| uint16_t | bcdVersion | |
| uint8_t | bAdditionalFailureInfo | |
| uint8_t | bReserved | |
| IOUSBDeviceCapabilityBillboardAltConfig[] | pAltConfigurations | |
typedef struct IOUSBDeviceCapabilityBillboard IOUSBDeviceCapabilityBillboard
@typedef IOUSBDeviceCapabilityBillboardAltMode
@discussion Device Capability Billboard Alternate mode.
USB Billboard 3.1.6.3: Billboard Capability Descriptor V1.21
size 8, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bDevCapabilityType | |
| uint8_t | bIndex | |
| uint32_t | dwAlternateModeVdo | |
typedef struct IOUSBDeviceCapabilityBillboardAltMode IOUSBDeviceCapabilityBillboardAltMode
@typedef IOUSBInterfaceAssociationDescriptor
@discussion USB Inerface Association Descriptor. ECN to the USB 2.0 Spec.
See the USB Specification at <a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
USB 3.0 9.6.4: Interface Association
size 8, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bFirstInterface | |
| uint8_t | bInterfaceCount | |
| uint8_t | bFunctionClass | |
| uint8_t | bFunctionSubClass | |
| uint8_t | bFunctionProtocol | |
| uint8_t | iFunction | |
typedef struct IOUSBInterfaceAssociationDescriptor IOUSBInterfaceAssociationDescriptor
@typedef IOUSBSuperSpeedEndpointCompanionDescriptor
@discussion Descriptor for a SuperSpeed USB Endpoint Companion.
See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 3.1 9.6.7: SuperSpeed Endpoint Companion
size 6, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bMaxBurst | |
| uint8_t | bmAttributes | |
| uint16_t | wBytesPerInterval | |
typedef struct IOUSBSuperSpeedEndpointCompanionDescriptor IOUSBSuperSpeedEndpointCompanionDescriptor
underlying type unsigned int
| kIOUSBSuperSpeedEndpointCompanionDescriptorMaxBurst | 255 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorMaxBurstPhase | 0 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorBulkMaxStreams | 31 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorBulkMaxStreamsPhase | 0 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorBulkReserved | 224 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorBulkReservedPhase | 5 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorIsocMult | 3 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorIsocMultPhase | 0 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorIsocReserved | 124 | |
| kIOUSBSuperSpeedEndpointCompanionDescriptorIsocReservedPhase | 2 | |
| 128 | |
@typedef IOUSBSuperSpeedPlusIsochronousEndpointCompanionDescriptor
@discussion Descriptor for a SuperSpeedPlus Isochronout USB Endpoint Companion.
See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 3.1 9.6.8: SuperSpeedPlus Isochronous Endpoint Companion
size 8, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint16_t | wReserved | |
| uint32_t | dwBytesPerInterval | |
typedef struct IOUSBSuperSpeedPlusIsochronousEndpointCompanionDescriptor IOUSBSuperSpeedPlusIsochronousEndpointCompanionDescriptor
@typedef IOUSB20HubDescriptor
@discussion Descriptor for a USB hub.
See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 2.0 11.23.2.1: Hub Descriptor
size 11, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bNumberPorts | |
| uint16_t | wHubCharacteristics | |
| uint8_t | bPowerOnToPowerGood | |
| uint8_t | bHubControllerCurrent | |
| uint8_t[2] | deviceRemovable | Technically variable size |
| uint8_t[2] | reserved | Unused |
typedef struct IOUSB20HubDescriptor IOUSB20HubDescriptor
@typedef IOUSBSuperSpeedHubDescriptor
@discussion Descriptor for a Super Speed USB hub.
See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 3.0 10.13.2.1: SuperSpeed Hub Descriptor
size 12, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bNumberPorts | |
| uint16_t | wHubCharacteristics | |
| uint8_t | bPowerOnToPowerGood | |
| uint8_t | bHubControllerCurrent | |
| uint8_t | bHubDecodeLatency | |
| uint16_t | wHubDelay | |
| uint16_t | deviceRemovable | |
typedef struct IOUSBSuperSpeedHubDescriptor IOUSBSuperSpeedHubDescriptor
underlying type unsigned int
| kIOUSBSuperSpeedHubCharacteristicsPowerSwitchingMask | 3 | |
| kIOUSBSuperSpeedHubCharacteristicsPowerSwitchingGanged | 0 | |
| kIOUSBSuperSpeedHubCharacteristicsPowerSwitchingIndividual | 1 | |
| kIOUSBSuperSpeedHubCharacteristicsCompoundDevice | 4 | |
| kIOUSBSuperSpeedHubCharacteristicsOverCurrentMask | 24 | |
| kIOUSBSuperSpeedHubCharacteristicsOverCurrentGlobal | 0 | |
| kIOUSBSuperSpeedHubCharacteristicsOverCurrentIndividual | 8 | |
| kIOUSBSuperSpeedHubCharacteristicsReserved | 65504 | |
| kIOUSBSuperSpeedHubDecodeLatencyMax | 10 | |
| kIOUSBSuperSpeedHubDelayMax | 400 | |
@typedef UASPipeDescriptor
@discussion Structure used to specify the Mass Storage Specific UAS pipe usage descriptor
size 4, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bPipeID | |
| uint8_t | bReserved | |
typedef struct UASPipeDescriptor UASPipeDescriptor
@typedef IOUSBHIDDescriptor
@discussion USB HID Descriptor. See the USB HID Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
size 9, align 1 · packed
| uint8_t | descLen | |
| uint8_t | descType | |
| uint16_t | descVersNum | |
| uint8_t | hidCountryCode | |
| uint8_t | hidNumDescriptors | |
| uint8_t | hidDescriptorType | |
| uint8_t | hidDescriptorLengthLo | |
| uint8_t | hidDescriptorLengthHi | |
typedef struct IOUSBHIDDescriptor IOUSBHIDDescriptor
@typedef IOUSBHIDReportDesc
@discussion USB HID Report Descriptor header. See the USB HID Specification at
<a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
size 3, align 1 · packed
| uint8_t | hidDescriptorType | |
| uint8_t | hidDescriptorLengthLo | |
| uint8_t | hidDescriptorLengthHi | |
typedef struct IOUSBHIDReportDesc IOUSBHIDReportDesc
@typedef IOUSBDFUDescriptor
@discussion USB Device Firmware Update Descriptor. See the USB Device Firmware Update
Specification at <a href="http://www.usb.org" target="_blank">http://www.usb.org</a>.
size 7, align 1 · packed
| uint8_t | bLength | |
| uint8_t | bDescriptorType | |
| uint8_t | bmAttributes | |
| uint16_t | wDetachTimeout | |
| uint16_t | wTransferSize | |
typedef struct IOUSBDFUDescriptor IOUSBDFUDescriptor
@typedef IOUSBDeviceRequest
@discussion Standard device request.
See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 2.0 9.3: USB Device Requests
size 8, align 1 · packed
| uint8_t | bmRequestType | |
| uint8_t | bRequest | |
| uint16_t | wValue | |
| uint16_t | wIndex | |
| uint16_t | wLength | |
typedef struct IOUSBDeviceRequest IOUSBDeviceRequest
@typedef IOUSBDeviceRequestSetSELData
@discussion See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 3.0 9.4.12: Set SEL Standard Device Request
size 6, align 1 · packed
| uint8_t | u1Sel | Time in μs for U1 System Exit Latency |
| uint8_t | u1Pel | Time in μs for U1 Device to Host Exit Latency |
| uint16_t | u2Sel | Time in μs for U2 System Exit Latency |
| uint16_t | u2Pel | Time in μs for U2 Device to Host Exit Latency |
typedef struct IOUSBDeviceRequestSetSELData IOUSBDeviceRequestSetSELData
@enum tIOUSBDeviceRequestDirectionValue
@brief Values of 'direction' field of a device request
@constant kIOUSBDeviceRequestDirectionValueOut the device request data phase direction is host-to-device
@constant kIOUSBDeviceRequestDirectionValueIn the device request data phase direction is device-to-host
underlying type unsigned int
| kIOUSBDeviceRequestDirectionValueOut | 0 | |
| kIOUSBDeviceRequestDirectionValueIn | 1 | |
typedef enum tIOUSBDeviceRequestDirectionValue tIOUSBDeviceRequestDirectionValue
@enum tIOUSBDeviceRequestType
@brief Values of 'type' field of a device request
@constant kIOUSBDeviceRequestTypeValueStandard the device request is a standard device request
@constant kIOUSBDeviceRequestTypeValueClass the device request is a class specified device request
@constant kIOUSBDeviceRequestTypeValueVendor the device request is a vendor specified device request
underlying type unsigned int
| kIOUSBDeviceRequestTypeValueStandard | 0 | |
| kIOUSBDeviceRequestTypeValueClass | 1 | |
| kIOUSBDeviceRequestTypeValueVendor | 2 | |
typedef enum tIOUSBDeviceRequestTypeValue tIOUSBDeviceRequestTypeValue
@enum tIOUSBDeviceRequestRecipientValue
@brief Values of 'recipient' field of a device request
@constant kIOUSBDeviceRequestRecipientValueDevice the device request's recipient is a device
@constant kIOUSBDeviceRequestRecipientValueInterface the device request's recipient is an interface
@constant kIOUSBDeviceRequestRecipientValueEndpoint the device request's recipient is an endpoint
@constant kIOUSBDeviceRequestRecipientValueOther the device request's recipient is an other type
underlying type unsigned int
| kIOUSBDeviceRequestRecipientValueDevice | 0 | |
| kIOUSBDeviceRequestRecipientValueInterface | 1 | |
| kIOUSBDeviceRequestRecipientValueEndpoint | 2 | |
| kIOUSBDeviceRequestRecipientValueOther | 3 | |
typedef enum tIOUSBDeviceRequestRecipientValue tIOUSBDeviceRequestRecipientValue
underlying type unsigned int
| kIOUSBDeviceRequestSize | 8 | |
| kIOUSBDeviceRequestDirectionMask | 128 | |
| kIOUSBDeviceRequestDirectionPhase | 7 | |
| kIOUSBDeviceRequestDirectionOut | 0 | |
| kIOUSBDeviceRequestDirectionIn | 128 | |
| kIOUSBDeviceRequestTypeMask | 96 | |
| kIOUSBDeviceRequestTypePhase | 5 | |
| kIOUSBDeviceRequestTypeStandard | 0 | |
| kIOUSBDeviceRequestTypeClass | 32 | |
| kIOUSBDeviceRequestTypeVendor | 64 | |
| kIOUSBDeviceRequestRecipientMask | 31 | |
| kIOUSBDeviceRequestRecipientPhase | 0 | |
| kIOUSBDeviceRequestRecipientDevice | 0 | |
| kIOUSBDeviceRequestRecipientInterface | 1 | |
| kIOUSBDeviceRequestRecipientEndpoint | 2 | |
| kIOUSBDeviceRequestRecipientOther | 3 | |
USB 2.0 9.4: Standard Device Requests
USB 3.0 9.4: Standard Device Requests
underlying type unsigned int
| kIOUSBDeviceRequestGetStatus | 0 | |
| kIOUSBDeviceRequestClearFeature | 1 | |
| kIOUSBDeviceRequestGetState | 2 | |
| kIOUSBDeviceRequestSetFeature | 3 | |
| kIOUSBDeviceRequestSetAddress | 5 | |
| kIOUSBDeviceRequestGetDescriptor | 6 | |
| kIOUSBDeviceRequestSetDescriptor | 7 | |
| kIOUSBDeviceRequestGetConfiguration | 8 | |
| kIOUSBDeviceRequestSetConfiguration | 9 | |
| kIOUSBDeviceRequestGetInterface | 10 | |
| kIOUSBDeviceRequestSetInterface | 11 | |
| kIOUSBDeviceRequestSynchFrame | 12 | |
| kIOUSBDeviceRequestSetSel | 48 | |
| kIOUSBDeviceRequestSetIsochronousDelay | 49 | |
USB 2.0 9.4.5: Get Status
USB 3.0 9.4.5: Get Status
underlying type unsigned int
| kIOUSBDeviceStatusSelfPowered | 1 | |
| kIOUSBDeviceStatusRemoteWakeEnable | 2 | |
| kIOUSBDeviceStatusU1Enable | 4 | |
| kIOUSBDeviceStatusU2Enable | 8 | |
| kIOUSBDeviceStatusLTMEnable | 16 | |
| kIOUSBInterfaceStatusRemoteWakeCapable | 1 | |
| kIOUSBInterfaceStatusRemoteWakeEnable | 2 | |
| IOUSBEndpointStatusHalt | 1 | |
USB 2.0 Table 9-6: Standard Feature Selectors
USB 3.0 Table 9-7: Standard Feature Selectors
underlying type unsigned int
| kIOUSBDeviceFeatureSelectorRemoteWakeup | 1 | |
| kIOUSBDeviceFeatureSelectorTestMode | 2 | |
| kIOUSBDeviceFeatureSelectorU1Enable | 48 | |
| kIOUSBDeviceFeatureSelectorU2Enable | 49 | |
| kIOUSBDeviceFeatureSelectorLTMEnable | 50 | |
| kIOUSBInterfaceFeatureSelectorSuspend | 0 | |
| IOUSBEndpointFeatureSelectorStall | 0 | |
USB 3.0 Table 9-8: Suspend Options
underlying type unsigned int
| kIOUSBInterfaceSuspendLowPower | 1 | |
| kIOUSBInterfaceSuspendRemoteWakeEnable | 2 | |
USB 3.0 Table 10-16: Hub Parameters
underlying type unsigned int
| kIOUSBHubPort2PortExitLatencyNs | 1000 | |
| kIOUSBHubDelayNs | 400 | |
USB 3.0 Table 8-33: Timing Parameters
underlying type unsigned int
| kIOUSBPingResponseTimeNs | 400 | |
underlying type unsigned int
underlying type unsigned int
| kIOUSB20BusCurrentMinimum | 100 | |
| kIOUSB20BusCurrentDefault | 500 | |
| kIOUSB20BusCurrentMaxPowerUnits | 2 | |
underlying type unsigned int
| kIOUSB30BusCurrentMinimum | 150 | |
| kIOUSB30BusCurrentDefault | 900 | |
| kIOUSB30BusCurrentMaxPowerUnits | 8 | |
USB 2.0 4.1.1
underlying type unsigned int
| kIOUSBTopologyHost | 1 | |
| kIOUSBTopologyRootPort | 2 | |
| kIOUSBTopology1Hub | 3 | |
| kIOUSBTopology2Hub | 4 | |
| kIOUSBTopology3Hub | 5 | |
| kIOUSBTopology4Hub | 6 | |
| kIOUSBTopology5Hub | 7 | |
| kIOUSBTopologyTierLimit | 7 | |
USB 3.0 Table 6-21
underlying type unsigned int
| kIOUSB30ResetMinimumTimeout | 80 | |
| kIOUSB30ResetTypicalTimeout | 100 | |
| kIOUSB30ResetMaximumTimeout | 120 | |
| kIOUSB30ResetMaximumWithMarginTimeout | 150 | |
USB 3.0 Table 7-12
underlying type unsigned int
| kIOUSB30LinkStateSSInactiveQuietTimeout | 12 | |
| kIOUSB30LinkStateRxDetectQuietTimeout | 12 | |
| kIOUSB30LinkStatePollingLFPSTimeout | 360 | |
| kIOUSB30LinkStatePollingActiveTimeout | 12 | |
| kIOUSB30LinkStatePollingConfigurationTimeout | 12 | |
| kIOUSB30LinkStatePollingIdleTimeout | 2 | |
| kIOUSB30LinkStateU0RecoveryTimeout | 1 | |
| kIOUSB30LinkStateU0LTimeout | 0 | 10 microseconds |
| kIOUSB30LinkStateU1NoLFPSResponseTimeout | 2 | |
| kIOUSB30LinkStateU1PingTimeout | 300 | |
| kIOUSB30LinkStateU2NoLFPSResponseTimeout | 2 | |
| kIOUSB30LinKStateU2RxDetectDelay | 100 | |
| kIOUSB30LinkStateU3NoLFPSResponseTimeout | 10 | |
| kIOUSB30LinkStateU3WakeupRetryDelay | 100 | |
| kIOUSB30LinkStateU3RxDetectDelay | 100 | |
| kIOUSB30LinkStateRecoveryActiveTimeout | 12 | |
| kIOUSB30LinkStateRecoveryConfigurationTimeout | 6 | |
| kIOUSB30LinkStateRecoveryIdleTimeout | 2 | |
| kIOUSB30LinkStateLoopbackExitTimeout | 2 | |
| kIOUSB30LinkStateHotResetActiveTimeout | 12 | |
| kIOUSB30LinkStateHotResetExitTimeout | 2 | |
| kIOUSB30LinkStatePollingDeadline | 387 | USB 3.0 7.5.4 |
| kIOUSB30LinkStateSSResumeDeadline | 130 | USB 3.0 7.5.9 and 7.5.10 |
| kIOUSB30LinkStateRecoveryDeadline | 21 | USB 3.0 7.5.10 |
| kIOUSB30LinkStateHotResetDeadline | 15 | USB 3.0 7.5.12 margin |
USB 3.1 Table 8-18
underlying type unsigned int
| kIOUSB30DeviceNotificationTypeFunctionWake | 1 | |
| kIOUSB30DeviceNotificationTypeLatencyTolerance | 2 | |
| kIOUSB30DeviceNotificationTypeBusIntervalAdjustment | 3 | |
| kIOUSB30DeviceNotificationTypeHostRoleRequest | 4 | |
| kIOUSB30DeviceNotificationTypeSublinkSpeed | 5 | |
USB 3.1 Table 8-36
underlying type unsigned int
| kIOUSB30TimingParameterBELTDefaultNs | 1000000 | |
| kIOUSB30TimingParameterBELTMinNs | 125000 | |
USB 3.1 Table 10-12 Port Status Type Codes
underlying type unsigned int
| kIOUSB30HubPortStatusCodeStandard | 0 | |
| kIOUSB30HubPortStatusCodePD | 1 | |
| kIOUSB30HubPortStatusCodeExt | 2 | |
| kIOUSB30HubPortStatusCodeCount | 3 | |
USB 3.2 E.1.2
underlying type unsigned int
| kIOUSB30RetimerDepthLimit | 4 | |
@typedef IOUSB30HubPortStatusExt
@discussion See the USB Specification at <a href="http://www.usb.org"TARGET="_blank">http://www.usb.org</a>.
USB 3.1 10.16.2.6 Get Port Status
size 8, align 1 · packed
| uint16_t | wPortStatus | |
| uint16_t | wPortChange | |
| uint32_t | dwExtPortStatus | |
USB 3.1 Table 10-11. Note, offsets are specific to dwExtPortStatus
underlying type unsigned int
| kIOUSB30HubExtStatusRxSublinkSpeedID | 15 | |
| kIOUSB30HubExtStatusRxSublinkSpeedIDPhase | 0 | |
| kIOUSB30HubExtStatusTxSublinkSpeedID | 240 | |
| kIOUSB30HubExtStatusTxSublinkSpeedIDPhase | 4 | |
| kIOUSB30HubExtStatusRxLaneCount | 3840 | |
| kIOUSB30HubExtStatusRxLaneCountPhase | 8 | |
| kIOUSB30HubExtStatusTxLaneCount | 61440 | |
| kIOUSB30HubExtStatusTxLaneCountPhase | 12 | |
USB 4.0 V2 Table 9-12
underlying type unsigned int
| kPortReadyTimeout | 1100 | ms |
| kKeepAliveTimeout | 20 | us |