summaryrefslogtreecommitdiff
path: root/usb/usbview/usbdesc.h
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /usb/usbview/usbdesc.h
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'usb/usbview/usbdesc.h')
-rw-r--r--usb/usbview/usbdesc.h388
1 files changed, 388 insertions, 0 deletions
diff --git a/usb/usbview/usbdesc.h b/usb/usbview/usbdesc.h
new file mode 100644
index 00000000..5b2622a2
--- /dev/null
+++ b/usb/usbview/usbdesc.h
@@ -0,0 +1,388 @@
+/*++
+
+Copyright (c) 1997-2008 Microsoft Corporation
+
+Module Name:
+
+ USBDESC.H
+
+Abstract:
+
+ This is a header file for USB descriptors which are not yet in
+ a standard system header file.
+
+Environment:
+
+ user mode
+
+Revision History:
+
+ 03-06-1998 : created
+ 03-28-2003 : minor changes to support UVC and USB200
+
+--*/
+
+#pragma pack(push, 1)
+
+/*****************************************************************************
+ D E F I N E S
+*****************************************************************************/
+
+//
+//Device Descriptor bDeviceClass values
+//
+#define USB_INTERFACE_CLASS_DEVICE 0x00
+#define USB_COMMUNICATION_DEVICE 0x02
+#define USB_HUB_DEVICE 0x09
+#define USB_DIAGNOSTIC_DEVICE 0xDC
+#define USB_WIRELESS_CONTROLLER_DEVICE 0xE0
+#define USB_MISCELLANEOUS_DEVICE 0xEF
+#define USB_VENDOR_SPECIFIC_DEVICE 0xFF
+
+//
+//Device Descriptor bDeviceSubClass values
+//
+#define USB_COMMON_SUB_CLASS 0x02
+
+//
+//Interface Descriptor bInterfaceClass values:
+//
+//#define USB_AUDIO_INTERFACE 0x01
+//#define USB_CDC_CONTROL_INTERFACE 0x02
+//#define USB_HID_INTERFACE 0x03
+//#define USB_PHYSICAL_INTERFACE 0x05
+//#define USB_IMAGE_INTERFACE 0x06
+//#define USB_PRINTER_INTERFACE 0x07
+//#define USB_MASS_STORAGE_INTERFACE 0x08
+//#define USB_HUB_INTERFACE 0x09
+#define USB_CDC_DATA_INTERFACE 0x0A
+#define USB_CHIP_SMART_CARD_INTERFACE 0x0B
+#define USB_CONTENT_SECURITY_INTERFACE 0x0D
+#define USB_DIAGNOSTIC_DEVICE_INTERFACE 0xDC
+#define USB_WIRELESS_CONTROLLER_INTERFACE 0xE0
+#define USB_APPLICATION_SPECIFIC_INTERFACE 0xFE
+//#define USB_VENDOR_SPECIFIC_INTERFACE 0xFF
+#define USB_HID_DESCRIPTOR_TYPE 0x21
+
+//
+//IAD protocol values
+//
+#define USB_IAD_PROTOCOL 0x01
+
+//
+//USB 2.0 Specification Changes - New Descriptors
+//
+#define USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07
+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
+#define USB_OTG_DESCRIPTOR_TYPE 0x09
+#define USB_DEBUG_DESCRIPTOR_TYPE 0x0A
+#define USB_IAD_DESCRIPTOR_TYPE 0x0B
+
+//
+// USB Device Class Definition for Audio Devices
+// Appendix A. Audio Device Class Codes
+//
+
+// A.2 Audio Interface Subclass Codes
+//
+#define USB_AUDIO_SUBCLASS_UNDEFINED 0x00
+#define USB_AUDIO_SUBCLASS_AUDIOCONTROL 0x01
+#define USB_AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
+#define USB_AUDIO_SUBCLASS_MIDISTREAMING 0x03
+
+// A.4 Audio Class-Specific Descriptor Types
+//
+#define USB_AUDIO_CS_UNDEFINED 0x20
+#define USB_AUDIO_CS_DEVICE 0x21
+#define USB_AUDIO_CS_CONFIGURATION 0x22
+#define USB_AUDIO_CS_STRING 0x23
+#define USB_AUDIO_CS_INTERFACE 0x24
+#define USB_AUDIO_CS_ENDPOINT 0x25
+
+// A.5 Audio Class-Specific AC (Audio Control) Interface Descriptor Subtypes
+//
+#define USB_AUDIO_AC_UNDEFINED 0x00
+#define USB_AUDIO_AC_HEADER 0x01
+#define USB_AUDIO_AC_INPUT_TERMINAL 0x02
+#define USB_AUDIO_AC_OUTPUT_TERMINAL 0x03
+#define USB_AUDIO_AC_MIXER_UNIT 0x04
+#define USB_AUDIO_AC_SELECTOR_UNIT 0x05
+#define USB_AUDIO_AC_FEATURE_UNIT 0x06
+#define USB_AUDIO_AC_PROCESSING_UNIT 0x07
+#define USB_AUDIO_AC_EXTENSION_UNIT 0x08
+
+// A.6 Audio Class-Specific AS (Audio Streaming) Interface Descriptor Subtypes
+//
+#define USB_AUDIO_AS_UNDEFINED 0x00
+#define USB_AUDIO_AS_GENERAL 0x01
+#define USB_AUDIO_AS_FORMAT_TYPE 0x02
+#define USB_AUDIO_AS_FORMAT_SPECIFIC 0x03
+
+// A.7 Processing Unit Process Types
+//
+#define USB_AUDIO_PROCESS_UNDEFINED 0x00
+#define USB_AUDIO_PROCESS_UPDOWNMIX 0x01
+#define USB_AUDIO_PROCESS_DOLBYPROLOGIC 0x02
+#define USB_AUDIO_PROCESS_3DSTEREOEXTENDER 0x03
+#define USB_AUDIO_PROCESS_REVERBERATION 0x04
+#define USB_AUDIO_PROCESS_CHORUS 0x05
+#define USB_AUDIO_PROCESS_DYNRANGECOMP 0x06
+
+
+/*****************************************************************************
+ T Y P E D E F S
+*****************************************************************************/
+
+// HID Class HID Descriptor
+//
+typedef struct _USB_HID_DESCRIPTOR
+{
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ USHORT bcdHID;
+ UCHAR bCountryCode;
+ UCHAR bNumDescriptors;
+ struct
+ {
+ UCHAR bDescriptorType;
+ USHORT wDescriptorLength;
+ } OptionalDescriptors[1];
+} USB_HID_DESCRIPTOR, *PUSB_HID_DESCRIPTOR;
+
+
+// OTG Descriptor
+//
+typedef struct _USB_OTG_DESCRIPTOR
+{
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bmAttributes;
+} USB_OTG_DESCRIPTOR, *PUSB_OTG_DESCRIPTOR;
+
+// IAD Descriptor
+//
+typedef struct _USB_IAD_DESCRIPTOR
+{
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bFirstInterface;
+ UCHAR bInterfaceCount;
+ UCHAR bFunctionClass;
+ UCHAR bFunctionSubClass;
+ UCHAR bFunctionProtocol;
+ UCHAR iFunction;
+} USB_IAD_DESCRIPTOR, *PUSB_IAD_DESCRIPTOR;
+
+
+// Common Class Endpoint Descriptor
+//
+typedef struct _USB_ENDPOINT_DESCRIPTOR2 {
+ UCHAR bLength; // offset 0, size 1
+ UCHAR bDescriptorType; // offset 1, size 1
+ UCHAR bEndpointAddress; // offset 2, size 1
+ UCHAR bmAttributes; // offset 3, size 1
+ USHORT wMaxPacketSize; // offset 4, size 2
+ USHORT wInterval; // offset 6, size 2
+ UCHAR bSyncAddress; // offset 8, size 1
+} USB_ENDPOINT_DESCRIPTOR2, *PUSB_ENDPOINT_DESCRIPTOR2;
+
+// Common Class Interface Descriptor
+//
+typedef struct _USB_INTERFACE_DESCRIPTOR2 {
+ UCHAR bLength; // offset 0, size 1
+ UCHAR bDescriptorType; // offset 1, size 1
+ UCHAR bInterfaceNumber; // offset 2, size 1
+ UCHAR bAlternateSetting; // offset 3, size 1
+ UCHAR bNumEndpoints; // offset 4, size 1
+ UCHAR bInterfaceClass; // offset 5, size 1
+ UCHAR bInterfaceSubClass; // offset 6, size 1
+ UCHAR bInterfaceProtocol; // offset 7, size 1
+ UCHAR iInterface; // offset 8, size 1
+ USHORT wNumClasses; // offset 9, size 2
+} USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;
+
+
+//
+// USB Device Class Definition for Audio Devices
+//
+
+typedef struct _USB_AUDIO_COMMON_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+} USB_AUDIO_COMMON_DESCRIPTOR,
+*PUSB_AUDIO_COMMON_DESCRIPTOR;
+
+// 4.3.2 Class-Specific AC (Audio Control) Interface Descriptor
+//
+typedef struct _USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ USHORT bcdADC;
+ USHORT wTotalLength;
+ UCHAR bInCollection;
+ UCHAR baInterfaceNr[1];
+} USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR,
+*PUSB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR;
+
+// 4.3.2.1 Input Terminal Descriptor
+//
+typedef struct _USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR bNrChannels;
+ USHORT wChannelConfig;
+ UCHAR iChannelNames;
+ UCHAR iTerminal;
+} USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR,
+*PUSB_AUDIO_INPUT_TERMINAL_DESCRIPTOR;
+
+// 4.3.2.2 Output Terminal Descriptor
+//
+typedef struct _USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR bSourceID;
+ UCHAR iTerminal;
+} USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR,
+*PUSB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR;
+
+// 4.3.2.3 Mixer Unit Descriptor
+//
+typedef struct _USB_AUDIO_MIXER_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ UCHAR bNrInPins;
+ UCHAR baSourceID[1];
+} USB_AUDIO_MIXER_UNIT_DESCRIPTOR,
+*PUSB_AUDIO_MIXER_UNIT_DESCRIPTOR;
+
+// 4.3.2.4 Selector Unit Descriptor
+//
+typedef struct _USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ UCHAR bNrInPins;
+ UCHAR baSourceID[1];
+} USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR,
+*PUSB_AUDIO_SELECTOR_UNIT_DESCRIPTOR;
+
+// 4.3.2.5 Feature Unit Descriptor
+//
+typedef struct _USB_AUDIO_FEATURE_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ UCHAR bSourceID;
+ UCHAR bControlSize;
+ UCHAR bmaControls[1];
+} USB_AUDIO_FEATURE_UNIT_DESCRIPTOR,
+*PUSB_AUDIO_FEATURE_UNIT_DESCRIPTOR;
+
+// 4.3.2.6 Processing Unit Descriptor
+//
+typedef struct _USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ USHORT wProcessType;
+ UCHAR bNrInPins;
+ UCHAR baSourceID[1];
+} USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR,
+*PUSB_AUDIO_PROCESSING_UNIT_DESCRIPTOR;
+
+// 4.3.2.7 Extension Unit Descriptor
+//
+typedef struct _USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ USHORT wExtensionCode;
+ UCHAR bNrInPins;
+ UCHAR baSourceID[1];
+} USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR,
+*PUSB_AUDIO_EXTENSION_UNIT_DESCRIPTOR;
+
+// 4.5.2 Class-Specific AS Interface Descriptor
+//
+typedef struct _USB_AUDIO_GENERAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalLink;
+ UCHAR bDelay;
+ USHORT wFormatTag;
+} USB_AUDIO_GENERAL_DESCRIPTOR,
+*PUSB_AUDIO_GENERAL_DESCRIPTOR;
+
+// 4.6.1.2 Class-Specific AS Endpoint Descriptor
+//
+typedef struct _USB_AUDIO_ENDPOINT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bmAttributes;
+ UCHAR bLockDelayUnits;
+ USHORT wLockDelay;
+} USB_AUDIO_ENDPOINT_DESCRIPTOR,
+*PUSB_AUDIO_ENDPOINT_DESCRIPTOR;
+
+//
+// USB Device Class Definition for Audio Data Formats
+//
+
+typedef struct _USB_AUDIO_COMMON_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatType;
+} USB_AUDIO_COMMON_FORMAT_DESCRIPTOR,
+*PUSB_AUDIO_COMMON_FORMAT_DESCRIPTOR;
+
+
+// 2.1.5 Type I Format Type Descriptor
+// 2.3.1 Type III Format Type Descriptor
+//
+typedef struct _USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatType;
+ UCHAR bNrChannels;
+ UCHAR bSubframeSize;
+ UCHAR bBitResolution;
+ UCHAR bSamFreqType;
+} USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR,
+*PUSB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR;
+
+
+// 2.2.6 Type II Format Type Descriptor
+//
+typedef struct _USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatType;
+ USHORT wMaxBitRate;
+ USHORT wSamplesPerFrame;
+ UCHAR bSamFreqType;
+} USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR,
+*PUSB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR;
+
+#pragma pack(pop)