
//--------------------------------------------------------------------------------
// Report descriptor data in hex (length 279 bytes)
//--------------------------------------------------------------------------------


// 05010905 A1018501 09300931 09320935 150026FF 00750895 04810209 39150025
// 07350046 3B016514 75049501 81426500 05091901 290E1500 25017501 950E8102
// 75069501 81010501 09330934 150026FF 00750895 02810206 00FF1500 26FF0075
// 08954D85 31093191 02093B81 02853209 32958D91 02853309 3395CD91 02853409
// 34960D01 91028535 0935964D 01910285 36093696 8D019102 85370937 96CD0191
// 02853809 38960D02 91028539 09399622 02910206 80FF8505 09339528 B1028508
// 0934952F B1028509 09249513 B1028520 0926953F B1028522 0940953F B1028580
// 0928953F B1028581 0929953F B1028582 092A9509 B1028583 092B953F B10285F1
// 0931953F B10285F2 0932950F B10285F0 0930953F B102C0  


//--------------------------------------------------------------------------------
// Decoded Application Collection
//--------------------------------------------------------------------------------

/*
05 01        (GLOBAL) USAGE_PAGE         0x0001 Generic Desktop Page 
09 05        (LOCAL)  USAGE              0x00010005 Game Pad (Application Collection)  
A1 01        (MAIN)   COLLECTION         0x01 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=Application Collection)
85 01          (GLOBAL) REPORT_ID          0x01 (1)  
09 30          (LOCAL)  USAGE              0x00010030 X (Dynamic Value)  
09 31          (LOCAL)  USAGE              0x00010031 Y (Dynamic Value)  
09 32          (LOCAL)  USAGE              0x00010032 Z (Dynamic Value)  
09 35          (LOCAL)  USAGE              0x00010035 Rz (Dynamic Value)  
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0)  <-- Info: Consider replacing 15 00 with 14
26 FF00        (GLOBAL) LOGICAL_MAXIMUM    0x00FF (255)  
75 08          (GLOBAL) REPORT_SIZE        0x08 (8) Number of bits per field  
95 04          (GLOBAL) REPORT_COUNT       0x04 (4) Number of fields  
81 02          (MAIN)   INPUT              0x00000002 (4 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
09 39          (LOCAL)  USAGE              0x00010039 Hat switch (Dynamic Value)  
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
25 07          (GLOBAL) LOGICAL_MAXIMUM    0x07 (7)  
35 00          (GLOBAL) PHYSICAL_MINIMUM   0x00 (0)  <-- Info: Consider replacing 35 00 with 34
46 3B01        (GLOBAL) PHYSICAL_MAXIMUM   0x013B (315)  
65 14          (GLOBAL) UNIT               0x14 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees)  
75 04          (GLOBAL) REPORT_SIZE        0x04 (4) Number of bits per field  
95 01          (GLOBAL) REPORT_COUNT       0x01 (1) Number of fields  
81 42          (MAIN)   INPUT              0x00000042 (1 field x 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 
65 00          (GLOBAL) UNIT               0x00 No unit (0=None)  <-- Info: Consider replacing 65 00 with 64
05 09          (GLOBAL) USAGE_PAGE         0x0009 Button Page 
19 01          (LOCAL)  USAGE_MINIMUM      0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control)  
29 0E          (LOCAL)  USAGE_MAXIMUM      0x0009000E Button 14 (Selector, On/Off Control, Momentary Control, or One Shot Control)  
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
25 01          (GLOBAL) LOGICAL_MAXIMUM    0x01 (1)  
75 01          (GLOBAL) REPORT_SIZE        0x01 (1) Number of bits per field  
95 0E          (GLOBAL) REPORT_COUNT       0x0E (14) Number of fields  
81 02          (MAIN)   INPUT              0x00000002 (14 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
75 06          (GLOBAL) REPORT_SIZE        0x06 (6) Number of bits per field  
95 01          (GLOBAL) REPORT_COUNT       0x01 (1) Number of fields  
81 01          (MAIN)   INPUT              0x00000001 (1 field x 6 bits) 1=Constant 0=Array 0=Absolute 
05 01          (GLOBAL) USAGE_PAGE         0x0001 Generic Desktop Page 
09 33          (LOCAL)  USAGE              0x00010033 Rx (Dynamic Value)  
09 34          (LOCAL)  USAGE              0x00010034 Ry (Dynamic Value)  
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
26 FF00        (GLOBAL) LOGICAL_MAXIMUM    0x00FF (255)  
75 08          (GLOBAL) REPORT_SIZE        0x08 (8) Number of bits per field  
95 02          (GLOBAL) REPORT_COUNT       0x02 (2) Number of fields  
81 02          (MAIN)   INPUT              0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
06 00FF        (GLOBAL) USAGE_PAGE         0xFF00 Vendor-defined 
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
26 FF00        (GLOBAL) LOGICAL_MAXIMUM    0x00FF (255) <-- Redundant: LOGICAL_MAXIMUM is already 255 
75 08          (GLOBAL) REPORT_SIZE        0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 
95 4D          (GLOBAL) REPORT_COUNT       0x4D (77) Number of fields  
85 31          (GLOBAL) REPORT_ID          0x31 (49) '1'  
09 31          (LOCAL)  USAGE              0xFF000031 <-- Warning: Undocumented usage (document it by inserting 0031 into file FF00.conf)
91 02          (MAIN)   OUTPUT             0x00000002 (77 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
09 3B          (LOCAL)  USAGE              0xFF00003B <-- Warning: Undocumented usage (document it by inserting 003B into file FF00.conf)
81 02          (MAIN)   INPUT              0x00000002 (77 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 32          (GLOBAL) REPORT_ID          0x32 (50) '2'  
09 32          (LOCAL)  USAGE              0xFF000032 <-- Warning: Undocumented usage (document it by inserting 0032 into file FF00.conf)
95 8D          (GLOBAL) REPORT_COUNT       0x8D (141) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (141 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 33          (GLOBAL) REPORT_ID          0x33 (51) '3'  
09 33          (LOCAL)  USAGE              0xFF000033 <-- Warning: Undocumented usage (document it by inserting 0033 into file FF00.conf)
95 CD          (GLOBAL) REPORT_COUNT       0xCD (205) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (205 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 34          (GLOBAL) REPORT_ID          0x34 (52) '4'  
09 34          (LOCAL)  USAGE              0xFF000034 <-- Warning: Undocumented usage (document it by inserting 0034 into file FF00.conf)
96 0D01        (GLOBAL) REPORT_COUNT       0x010D (269) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (269 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 35          (GLOBAL) REPORT_ID          0x35 (53) '5'  
09 35          (LOCAL)  USAGE              0xFF000035 <-- Warning: Undocumented usage (document it by inserting 0035 into file FF00.conf)
96 4D01        (GLOBAL) REPORT_COUNT       0x014D (333) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (333 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 36          (GLOBAL) REPORT_ID          0x36 (54) '6'  
09 36          (LOCAL)  USAGE              0xFF000036 <-- Warning: Undocumented usage (document it by inserting 0036 into file FF00.conf)
96 8D01        (GLOBAL) REPORT_COUNT       0x018D (397) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (397 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 37          (GLOBAL) REPORT_ID          0x37 (55) '7'  
09 37          (LOCAL)  USAGE              0xFF000037 <-- Warning: Undocumented usage (document it by inserting 0037 into file FF00.conf)
96 CD01        (GLOBAL) REPORT_COUNT       0x01CD (461) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (461 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 38          (GLOBAL) REPORT_ID          0x38 (56) '8'  
09 38          (LOCAL)  USAGE              0xFF000038 <-- Warning: Undocumented usage (document it by inserting 0038 into file FF00.conf)
96 0D02        (GLOBAL) REPORT_COUNT       0x020D (525) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (525 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 39          (GLOBAL) REPORT_ID          0x39 (57) '9'  
09 39          (LOCAL)  USAGE              0xFF000039 <-- Warning: Undocumented usage (document it by inserting 0039 into file FF00.conf)
96 2202        (GLOBAL) REPORT_COUNT       0x0222 (546) Number of fields  
91 02          (MAIN)   OUTPUT             0x00000002 (546 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
06 80FF        (GLOBAL) USAGE_PAGE         0xFF80 Vendor-defined 
85 05          (GLOBAL) REPORT_ID          0x05 (5)  
09 33          (LOCAL)  USAGE              0xFF800033 <-- Warning: Undocumented usage (document it by inserting 0033 into file FF80.conf)
95 28          (GLOBAL) REPORT_COUNT       0x28 (40) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (40 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 08          (GLOBAL) REPORT_ID          0x08 (8)  
09 34          (LOCAL)  USAGE              0xFF800034 <-- Warning: Undocumented usage (document it by inserting 0034 into file FF80.conf)
95 2F          (GLOBAL) REPORT_COUNT       0x2F (47) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (47 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 09          (GLOBAL) REPORT_ID          0x09 (9)  
09 24          (LOCAL)  USAGE              0xFF800024 <-- Warning: Undocumented usage (document it by inserting 0024 into file FF80.conf)
95 13          (GLOBAL) REPORT_COUNT       0x13 (19) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (19 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 20          (GLOBAL) REPORT_ID          0x20 (32)  
09 26          (LOCAL)  USAGE              0xFF800026 <-- Warning: Undocumented usage (document it by inserting 0026 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 22          (GLOBAL) REPORT_ID          0x22 (34)  
09 40          (LOCAL)  USAGE              0xFF800040 <-- Warning: Undocumented usage (document it by inserting 0040 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields <-- Redundant: REPORT_COUNT is already 63 
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 80          (GLOBAL) REPORT_ID          0x80 (128)  
09 28          (LOCAL)  USAGE              0xFF800028 <-- Warning: Undocumented usage (document it by inserting 0028 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields <-- Redundant: REPORT_COUNT is already 63 
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 81          (GLOBAL) REPORT_ID          0x81 (129)  
09 29          (LOCAL)  USAGE              0xFF800029 <-- Warning: Undocumented usage (document it by inserting 0029 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields <-- Redundant: REPORT_COUNT is already 63 
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 82          (GLOBAL) REPORT_ID          0x82 (130)  
09 2A          (LOCAL)  USAGE              0xFF80002A <-- Warning: Undocumented usage (document it by inserting 002A into file FF80.conf)
95 09          (GLOBAL) REPORT_COUNT       0x09 (9) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (9 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 83          (GLOBAL) REPORT_ID          0x83 (131)  
09 2B          (LOCAL)  USAGE              0xFF80002B <-- Warning: Undocumented usage (document it by inserting 002B into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 F1          (GLOBAL) REPORT_ID          0xF1 (241)  
09 31          (LOCAL)  USAGE              0xFF800031 <-- Warning: Undocumented usage (document it by inserting 0031 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields <-- Redundant: REPORT_COUNT is already 63 
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 F2          (GLOBAL) REPORT_ID          0xF2 (242)  
09 32          (LOCAL)  USAGE              0xFF800032 <-- Warning: Undocumented usage (document it by inserting 0032 into file FF80.conf)
95 0F          (GLOBAL) REPORT_COUNT       0x0F (15) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (15 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
85 F0          (GLOBAL) REPORT_ID          0xF0 (240)  
09 30          (LOCAL)  USAGE              0xFF800030 <-- Warning: Undocumented usage (document it by inserting 0030 into file FF80.conf)
95 3F          (GLOBAL) REPORT_COUNT       0x3F (63) Number of fields  
B1 02          (MAIN)   FEATURE            0x00000002 (63 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
C0           (MAIN)   END_COLLECTION     Application  <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=315) UNIT(0x00000000,EXP=0)
*/

//--------------------------------------------------------------------------------
// Vendor-defined featureReport 05 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x05 (5)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0033[40];                      // Usage 0xFF800033: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport05_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 08 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x08 (8)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0034[47];                      // Usage 0xFF800034: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport08_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 09 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x09 (9)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0024[19];                      // Usage 0xFF800024: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport09_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 20 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x20 (32)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0026[63];                      // Usage 0xFF800026: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport20_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 22 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x22 (34)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0040[63];                      // Usage 0xFF800040: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport22_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 80 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x80 (128)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0028[63];                      // Usage 0xFF800028: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport80_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 81 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x81 (129)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0029[63];                      // Usage 0xFF800029: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport81_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 82 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x82 (130)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad002A[9];                       // Usage 0xFF80002A: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport82_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport 83 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x83 (131)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad002B[63];                      // Usage 0xFF80002B: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReport83_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport F1 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0xF1 (241)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0031[63];                      // Usage 0xFF800031: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReportF1_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport F2 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0xF2 (242)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0032[15];                      // Usage 0xFF800032: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReportF2_t;


//--------------------------------------------------------------------------------
// Vendor-defined featureReport F0 (Device <-> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0xF0 (240)
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0030[63];                      // Usage 0xFF800030: , Value = 0 to 255, Physical = Value x 21 / 17
} featureReportF0_t;


//--------------------------------------------------------------------------------
// Generic Desktop Page inputReport 01 (Device --> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x01 (1)
                                                     // Collection: CA:GamePad
  uint8_t  GD_GamePadX;                              // Usage 0x00010030: X, Value = 0 to 255
  uint8_t  GD_GamePadY;                              // Usage 0x00010031: Y, Value = 0 to 255
  uint8_t  GD_GamePadZ;                              // Usage 0x00010032: Z, Value = 0 to 255
  uint8_t  GD_GamePadRz;                             // Usage 0x00010035: Rz, Value = 0 to 255
  uint8_t  GD_GamePadHatSwitch : 4;                  // Usage 0x00010039: Hat switch, Value = 0 to 7, Physical = Value x 45 in degrees
  uint8_t  BTN_GamePadButton1 : 1;                   // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton2 : 1;                   // Usage 0x00090002: Button 2 Secondary, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton3 : 1;                   // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton4 : 1;                   // Usage 0x00090004: Button 4, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton5 : 1;                   // Usage 0x00090005: Button 5, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton6 : 1;                   // Usage 0x00090006: Button 6, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton7 : 1;                   // Usage 0x00090007: Button 7, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton8 : 1;                   // Usage 0x00090008: Button 8, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton9 : 1;                   // Usage 0x00090009: Button 9, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton10 : 1;                  // Usage 0x0009000A: Button 10, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton11 : 1;                  // Usage 0x0009000B: Button 11, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton12 : 1;                  // Usage 0x0009000C: Button 12, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton13 : 1;                  // Usage 0x0009000D: Button 13, Value = 0 to 1, Physical = Value x 315
  uint8_t  BTN_GamePadButton14 : 1;                  // Usage 0x0009000E: Button 14, Value = 0 to 1, Physical = Value x 315
  uint8_t  : 6;                                      // Pad
  uint8_t  GD_GamePadRx;                             // Usage 0x00010033: Rx, Value = 0 to 255, Physical = Value x 21 / 17
  uint8_t  GD_GamePadRy;                             // Usage 0x00010034: Ry, Value = 0 to 255, Physical = Value x 21 / 17
} inputReport01_t;


//--------------------------------------------------------------------------------
// Vendor-defined inputReport 31 (Device --> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x31 (49) '1'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad003B[77];                      // Usage 0xFF00003B: , Value = 0 to 255, Physical = Value x 21 / 17
} inputReport31_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 31 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x31 (49) '1'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0031[77];                      // Usage 0xFF000031: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport31_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 32 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x32 (50) '2'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0032[141];                     // Usage 0xFF000032: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport32_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 33 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x33 (51) '3'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0033[205];                     // Usage 0xFF000033: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport33_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 34 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x34 (52) '4'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0034[269];                     // Usage 0xFF000034: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport34_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 35 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x35 (53) '5'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0035[333];                     // Usage 0xFF000035: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport35_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 36 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x36 (54) '6'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0036[397];                     // Usage 0xFF000036: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport36_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 37 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x37 (55) '7'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0037[461];                     // Usage 0xFF000037: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport37_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 38 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x38 (56) '8'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0038[525];                     // Usage 0xFF000038: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport38_t;


//--------------------------------------------------------------------------------
// Vendor-defined outputReport 39 (Device <-- Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x39 (57) '9'
                                                     // Collection: CA:GamePad
  uint8_t  VEN_GamePad0039[546];                     // Usage 0xFF000039: , Value = 0 to 255, Physical = Value x 21 / 17
} outputReport39_t;

