1 | /*++
|
---|
2 |
|
---|
3 | Copyright (c) 1997-1998 Microsoft Corporation
|
---|
4 |
|
---|
5 | Module Name:
|
---|
6 |
|
---|
7 | USBDESC.H
|
---|
8 |
|
---|
9 | Abstract:
|
---|
10 |
|
---|
11 | This is a header file for USB descriptors which are not yet in
|
---|
12 | a standard system header file.
|
---|
13 |
|
---|
14 | Environment:
|
---|
15 |
|
---|
16 | user mode
|
---|
17 |
|
---|
18 | Revision History:
|
---|
19 |
|
---|
20 | 03-06-1998 : created
|
---|
21 |
|
---|
22 | --*/
|
---|
23 |
|
---|
24 | #include <pshpack1.h>
|
---|
25 |
|
---|
26 | //*****************************************************************************
|
---|
27 | // D E F I N E S
|
---|
28 | //*****************************************************************************
|
---|
29 |
|
---|
30 | #define USB_HID_DESCRIPTOR_TYPE 0x21
|
---|
31 |
|
---|
32 |
|
---|
33 | //
|
---|
34 | // USB Device Class Definition for Audio Devices
|
---|
35 | // Appendix A. Audio Device Class Codes
|
---|
36 | //
|
---|
37 |
|
---|
38 | // A.2 Audio Interface Subclass Codes
|
---|
39 | //
|
---|
40 | #define USB_AUDIO_SUBCLASS_UNDEFINED 0x00
|
---|
41 | #define USB_AUDIO_SUBCLASS_AUDIOCONTROL 0x01
|
---|
42 | #define USB_AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
|
---|
43 | #define USB_AUDIO_SUBCLASS_MIDISTREAMING 0x03
|
---|
44 |
|
---|
45 | // A.4 Audio Class-Specific Descriptor Types
|
---|
46 | //
|
---|
47 | #define USB_AUDIO_CS_UNDEFINED 0x20
|
---|
48 | #define USB_AUDIO_CS_DEVICE 0x21
|
---|
49 | #define USB_AUDIO_CS_CONFIGURATION 0x23
|
---|
50 | #define USB_AUDIO_CS_STRING 0x24
|
---|
51 | #define USB_AUDIO_CS_INTERFACE 0x24
|
---|
52 | #define USB_AUDIO_CS_ENDPOINT 0x25
|
---|
53 |
|
---|
54 | // A.5 Audio Class-Specific AC (Audio Control) Interface Descriptor Subtypes
|
---|
55 | //
|
---|
56 | #define USB_AUDIO_AC_UNDEFINED 0x00
|
---|
57 | #define USB_AUDIO_AC_HEADER 0x01
|
---|
58 | #define USB_AUDIO_AC_INPUT_TERMINAL 0x02
|
---|
59 | #define USB_AUDIO_AC_OUTPUT_TERMINAL 0x03
|
---|
60 | #define USB_AUDIO_AC_MIXER_UNIT 0x04
|
---|
61 | #define USB_AUDIO_AC_SELECTOR_UNIT 0x05
|
---|
62 | #define USB_AUDIO_AC_FEATURE_UNIT 0x06
|
---|
63 | #define USB_AUDIO_AC_PROCESSING_UNIT 0x07
|
---|
64 | #define USB_AUDIO_AC_EXTENSION_UNIT 0x08
|
---|
65 |
|
---|
66 | // A.6 Audio Class-Specific AS (Audio Streaming) Interface Descriptor Subtypes
|
---|
67 | //
|
---|
68 | #define USB_AUDIO_AS_UNDEFINED 0x00
|
---|
69 | #define USB_AUDIO_AS_GENERAL 0x01
|
---|
70 | #define USB_AUDIO_AS_FORMAT_TYPE 0x02
|
---|
71 | #define USB_AUDIO_AS_FORMAT_SPECIFIC 0x03
|
---|
72 |
|
---|
73 | // A.7 Processing Unit Process Types
|
---|
74 | //
|
---|
75 | #define USB_AUDIO_PROCESS_UNDEFINED 0x00
|
---|
76 | #define USB_AUDIO_PROCESS_UPDOWNMIX 0x01
|
---|
77 | #define USB_AUDIO_PROCESS_DOLBYPROLOGIC 0x02
|
---|
78 | #define USB_AUDIO_PROCESS_3DSTEREOEXTENDER 0x03
|
---|
79 | #define USB_AUDIO_PROCESS_REVERBERATION 0x04
|
---|
80 | #define USB_AUDIO_PROCESS_CHORUS 0x05
|
---|
81 | #define USB_AUDIO_PROCESS_DYNRANGECOMP 0x06
|
---|
82 |
|
---|
83 |
|
---|
84 | //*****************************************************************************
|
---|
85 | // T Y P E D E F S
|
---|
86 | //*****************************************************************************
|
---|
87 |
|
---|
88 | // HID Class HID Descriptor
|
---|
89 | //
|
---|
90 | typedef struct _USB_HID_DESCRIPTOR
|
---|
91 | {
|
---|
92 | UCHAR bLength;
|
---|
93 | UCHAR bDescriptorType;
|
---|
94 | USHORT bcdHID;
|
---|
95 | UCHAR bCountryCode;
|
---|
96 | UCHAR bNumDescriptors;
|
---|
97 | struct
|
---|
98 | {
|
---|
99 | UCHAR bDescriptorType;
|
---|
100 | USHORT wDescriptorLength;
|
---|
101 | } OptionalDescriptors[1];
|
---|
102 | } USB_HID_DESCRIPTOR, *PUSB_HID_DESCRIPTOR;
|
---|
103 |
|
---|
104 |
|
---|
105 | // Common Class Endpoint Descriptor
|
---|
106 | //
|
---|
107 | typedef struct _USB_ENDPOINT_DESCRIPTOR2 {
|
---|
108 | UCHAR bLength; // offset 0, size 1
|
---|
109 | UCHAR bDescriptorType; // offset 1, size 1
|
---|
110 | UCHAR bEndpointAddress; // offset 2, size 1
|
---|
111 | UCHAR bmAttributes; // offset 3, size 1
|
---|
112 | USHORT wMaxPacketSize; // offset 4, size 2
|
---|
113 | USHORT wInterval; // offset 6, size 2
|
---|
114 | UCHAR bSyncAddress; // offset 8, size 1
|
---|
115 | } USB_ENDPOINT_DESCRIPTOR2, *PUSB_ENDPOINT_DESCRIPTOR2;
|
---|
116 |
|
---|
117 | // Common Class Interface Descriptor
|
---|
118 | //
|
---|
119 | typedef struct _USB_INTERFACE_DESCRIPTOR2 {
|
---|
120 | UCHAR bLength; // offset 0, size 1
|
---|
121 | UCHAR bDescriptorType; // offset 1, size 1
|
---|
122 | UCHAR bInterfaceNumber; // offset 2, size 1
|
---|
123 | UCHAR bAlternateSetting; // offset 3, size 1
|
---|
124 | UCHAR bNumEndpoints; // offset 4, size 1
|
---|
125 | UCHAR bInterfaceClass; // offset 5, size 1
|
---|
126 | UCHAR bInterfaceSubClass; // offset 6, size 1
|
---|
127 | UCHAR bInterfaceProtocol; // offset 7, size 1
|
---|
128 | UCHAR iInterface; // offset 8, size 1
|
---|
129 | USHORT wNumClasses; // offset 9, size 2
|
---|
130 | } USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;
|
---|
131 |
|
---|
132 |
|
---|
133 | //
|
---|
134 | // USB Device Class Definition for Audio Devices
|
---|
135 | //
|
---|
136 |
|
---|
137 | typedef struct _USB_AUDIO_COMMON_DESCRIPTOR {
|
---|
138 | UCHAR bLength;
|
---|
139 | UCHAR bDescriptorType;
|
---|
140 | UCHAR bDescriptorSubtype;
|
---|
141 | } USB_AUDIO_COMMON_DESCRIPTOR,
|
---|
142 | *PUSB_AUDIO_COMMON_DESCRIPTOR;
|
---|
143 |
|
---|
144 | // 4.3.2 Class-Specific AC (Audio Control) Interface Descriptor
|
---|
145 | //
|
---|
146 | typedef struct _USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR {
|
---|
147 | UCHAR bLength;
|
---|
148 | UCHAR bDescriptorType;
|
---|
149 | UCHAR bDescriptorSubtype;
|
---|
150 | USHORT bcdADC;
|
---|
151 | USHORT wTotalLength;
|
---|
152 | UCHAR bInCollection;
|
---|
153 | UCHAR baInterfaceNr[1];
|
---|
154 | } USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR,
|
---|
155 | *PUSB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR;
|
---|
156 |
|
---|
157 | // 4.3.2.1 Input Terminal Descriptor
|
---|
158 | //
|
---|
159 | typedef struct _USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR {
|
---|
160 | UCHAR bLength;
|
---|
161 | UCHAR bDescriptorType;
|
---|
162 | UCHAR bDescriptorSubtype;
|
---|
163 | UCHAR bTerminalID;
|
---|
164 | USHORT wTerminalType;
|
---|
165 | UCHAR bAssocTerminal;
|
---|
166 | UCHAR bNrChannels;
|
---|
167 | USHORT wChannelConfig;
|
---|
168 | UCHAR iChannelNames;
|
---|
169 | UCHAR iTerminal;
|
---|
170 | } USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR,
|
---|
171 | *PUSB_AUDIO_INPUT_TERMINAL_DESCRIPTOR;
|
---|
172 |
|
---|
173 | // 4.3.2.2 Output Terminal Descriptor
|
---|
174 | //
|
---|
175 | typedef struct _USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR {
|
---|
176 | UCHAR bLength;
|
---|
177 | UCHAR bDescriptorType;
|
---|
178 | UCHAR bDescriptorSubtype;
|
---|
179 | UCHAR bTerminalID;
|
---|
180 | USHORT wTerminalType;
|
---|
181 | UCHAR bAssocTerminal;
|
---|
182 | UCHAR bSoruceID;
|
---|
183 | UCHAR iTerminal;
|
---|
184 | } USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR,
|
---|
185 | *PUSB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR;
|
---|
186 |
|
---|
187 | // 4.3.2.3 Mixer Unit Descriptor
|
---|
188 | //
|
---|
189 | typedef struct _USB_AUDIO_MIXER_UNIT_DESCRIPTOR {
|
---|
190 | UCHAR bLength;
|
---|
191 | UCHAR bDescriptorType;
|
---|
192 | UCHAR bDescriptorSubtype;
|
---|
193 | UCHAR bUnitID;
|
---|
194 | UCHAR bNrInPins;
|
---|
195 | UCHAR baSourceID[1];
|
---|
196 | } USB_AUDIO_MIXER_UNIT_DESCRIPTOR,
|
---|
197 | *PUSB_AUDIO_MIXER_UNIT_DESCRIPTOR;
|
---|
198 |
|
---|
199 | // 4.3.2.4 Selector Unit Descriptor
|
---|
200 | //
|
---|
201 | typedef struct _USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR {
|
---|
202 | UCHAR bLength;
|
---|
203 | UCHAR bDescriptorType;
|
---|
204 | UCHAR bDescriptorSubtype;
|
---|
205 | UCHAR bUnitID;
|
---|
206 | UCHAR bNrInPins;
|
---|
207 | UCHAR baSourceID[1];
|
---|
208 | } USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR,
|
---|
209 | *PUSB_AUDIO_SELECTOR_UNIT_DESCRIPTOR;
|
---|
210 |
|
---|
211 | // 4.3.2.5 Feature Unit Descriptor
|
---|
212 | //
|
---|
213 | typedef struct _USB_AUDIO_FEATURE_UNIT_DESCRIPTOR {
|
---|
214 | UCHAR bLength;
|
---|
215 | UCHAR bDescriptorType;
|
---|
216 | UCHAR bDescriptorSubtype;
|
---|
217 | UCHAR bUnitID;
|
---|
218 | UCHAR bSourceID;
|
---|
219 | UCHAR bControlSize;
|
---|
220 | UCHAR bmaControls[1];
|
---|
221 | } USB_AUDIO_FEATURE_UNIT_DESCRIPTOR,
|
---|
222 | *PUSB_AUDIO_FEATURE_UNIT_DESCRIPTOR;
|
---|
223 |
|
---|
224 | // 4.3.2.6 Processing Unit Descriptor
|
---|
225 | //
|
---|
226 | typedef struct _USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR {
|
---|
227 | UCHAR bLength;
|
---|
228 | UCHAR bDescriptorType;
|
---|
229 | UCHAR bDescriptorSubtype;
|
---|
230 | UCHAR bUnitID;
|
---|
231 | USHORT wProcessType;
|
---|
232 | UCHAR bNrInPins;
|
---|
233 | UCHAR baSourceID[1];
|
---|
234 | } USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR,
|
---|
235 | *PUSB_AUDIO_PROCESSING_UNIT_DESCRIPTOR;
|
---|
236 |
|
---|
237 | // 4.3.2.7 Extension Unit Descriptor
|
---|
238 | //
|
---|
239 | typedef struct _USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR {
|
---|
240 | UCHAR bLength;
|
---|
241 | UCHAR bDescriptorType;
|
---|
242 | UCHAR bDescriptorSubtype;
|
---|
243 | UCHAR bUnitID;
|
---|
244 | USHORT wExtensionCode;
|
---|
245 | UCHAR bNrInPins;
|
---|
246 | UCHAR baSourceID[1];
|
---|
247 | } USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR,
|
---|
248 | *PUSB_AUDIO_EXTENSION_UNIT_DESCRIPTOR;
|
---|
249 |
|
---|
250 | // 4.5.2 Class-Specific AS Interface Descriptor
|
---|
251 | //
|
---|
252 | typedef struct _USB_AUDIO_GENERAL_DESCRIPTOR {
|
---|
253 | UCHAR bLength;
|
---|
254 | UCHAR bDescriptorType;
|
---|
255 | UCHAR bDescriptorSubtype;
|
---|
256 | UCHAR bTerminalLink;
|
---|
257 | UCHAR bDelay;
|
---|
258 | USHORT wFormatTag;
|
---|
259 | } USB_AUDIO_GENERAL_DESCRIPTOR,
|
---|
260 | *PUSB_AUDIO_GENERAL_DESCRIPTOR;
|
---|
261 |
|
---|
262 | // 4.6.1.2 Class-Specific AS Endpoint Descriptor
|
---|
263 | //
|
---|
264 | typedef struct _USB_AUDIO_ENDPOINT_DESCRIPTOR {
|
---|
265 | UCHAR bLength;
|
---|
266 | UCHAR bDescriptorType;
|
---|
267 | UCHAR bDescriptorSubtype;
|
---|
268 | UCHAR bmAttributes;
|
---|
269 | UCHAR bLockDelayUnits;
|
---|
270 | USHORT wLockDelay;
|
---|
271 | } USB_AUDIO_ENDPOINT_DESCRIPTOR,
|
---|
272 | *PUSB_AUDIO_ENDPOINT_DESCRIPTOR;
|
---|
273 |
|
---|
274 |
|
---|
275 | //
|
---|
276 | // USB Device Class Definition for Audio Data Formats
|
---|
277 | //
|
---|
278 |
|
---|
279 | typedef struct _USB_AUDIO_COMMON_FORMAT_DESCRIPTOR {
|
---|
280 | UCHAR bLength;
|
---|
281 | UCHAR bDescriptorType;
|
---|
282 | UCHAR bDescriptorSubtype;
|
---|
283 | UCHAR bFormatType;
|
---|
284 | } USB_AUDIO_COMMON_FORMAT_DESCRIPTOR,
|
---|
285 | *PUSB_AUDIO_COMMON_FORMAT_DESCRIPTOR;
|
---|
286 |
|
---|
287 |
|
---|
288 | // 2.1.5 Type I Format Type Descriptor
|
---|
289 | // 2.3.1 Type III Format Type Descriptor
|
---|
290 | //
|
---|
291 | typedef struct _USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR {
|
---|
292 | UCHAR bLength;
|
---|
293 | UCHAR bDescriptorType;
|
---|
294 | UCHAR bDescriptorSubtype;
|
---|
295 | UCHAR bFormatType;
|
---|
296 | UCHAR bNrChannels;
|
---|
297 | UCHAR bSubframeSize;
|
---|
298 | UCHAR bBitResolution;
|
---|
299 | UCHAR bSamFreqType;
|
---|
300 | } USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR,
|
---|
301 | *PUSB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR;
|
---|
302 |
|
---|
303 |
|
---|
304 | // 2.2.6 Type II Format Type Descriptor
|
---|
305 | //
|
---|
306 | typedef struct _USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR {
|
---|
307 | UCHAR bLength;
|
---|
308 | UCHAR bDescriptorType;
|
---|
309 | UCHAR bDescriptorSubtype;
|
---|
310 | UCHAR bFormatType;
|
---|
311 | USHORT wMaxBitRate;
|
---|
312 | USHORT wSamplesPerFrame;
|
---|
313 | UCHAR bSamFreqType;
|
---|
314 | } USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR,
|
---|
315 | *PUSB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR;
|
---|
316 |
|
---|
317 |
|
---|
318 | #include <poppack.h>
|
---|