Standard USB Descriptors
The following are the descriptors of the game pad used for this implementation.
(HID class REPORT descriptor, returned by Get_Report_Request, is not shown.)
Device Descriptor
| Byte |
Field |
Value(HEX) |
| 0 |
bLength |
12 |
| 1 |
bDescriptor |
1 |
| 2 |
bcdUSB0 |
10 |
| 3 |
bcdUSB1 |
1 |
| 4 |
bDeviceClass |
0 |
| 5 |
bDeviceSubClass |
0 |
| 6 |
bDeviceProtocol |
0 |
| 7 |
bMaxPacketSize0 |
8 |
| 8 |
idVendor0 |
95 |
| 9 |
idVendor1 |
9 |
| 10 |
idProduct0 |
13 |
| 11 |
idProduct1 |
0 |
| 12 |
bcdDevice0 |
88 |
| 13 |
bcdDevice1 |
2 |
| 14 |
iManufacturer |
1 |
| 15 |
iProduct |
2 |
| 16 |
iSerialNumber |
0 |
| 17 |
bNumConfigurations |
1 |
Configuration Descriptor
| Byte |
Field |
Value(HEX) |
| 0 |
bLength |
9 |
| 1 |
bDescriptor |
2 |
| 2 |
wTotalLength0 |
22 |
| 3 |
wTotalLength1 |
0 |
| 4 |
bNumInterface |
1 |
| 5 |
bConfigurationValue |
1 |
| 6 |
iConfiguration |
0 |
| 7 |
bmAttributes |
80 |
| 8 |
bMaxPower |
32 |
Interface Descriptor
| Byte |
Field |
Value(HEX) |
| 0 |
bLength |
9 |
| 1 |
bDescriptorType |
4 |
| 2 |
bInterfaceNumber |
0 |
| 3 |
bAttributeSetting |
0 |
| 4 |
bNumEndpoints |
1 |
| 5 |
bInterfaceClass |
3 |
| 6 |
bInterfaceSubClass |
0 |
| 7 |
bInterfaceProtocol |
0 |
| 8 |
iInterface |
0 |
HID Descriptor
| Byte |
Field |
Value(HEX) |
| 0 |
bLength |
9 |
| 1 |
bDescriptorType |
21 |
| 2 |
bcdHID[0] |
10 |
| 3 |
bcdHID[1] |
1 |
| 4 |
bCountryCode |
0 |
| 5 |
bNumDescriptors |
1 |
| 6 |
bDescriptorType |
22 |
| 7 |
wDescriptorLength[0] |
40 |
| 8 |
wDescriptorLength[1] |
0 |
Endpoint Descriptor
| Byte |
Field |
Value(HEX) |
| 0 |
bLength |
7 |
| 1 |
bDescriptorType |
5 |
| 2 |
bEndpointAddress |
81 |
| 3 |
bmAttributes |
3 |
| 4 |
wMaxPacketSize0 |
4 |
| 5 |
wMaxPacketSize1 |
0 |
| 6 |
bInterval |
a |