Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //--------------------------------------------------------------------------------
- // Decoded Application Collection
- //--------------------------------------------------------------------------------
- /*
- 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page
- 09 05 (LOCAL) USAGE 0x00010005 Game Pad (CA=Application Collection)
- A1 01 (MAIN) COLLECTION 0x00000001 Application (Usage=0x00010005: Page=Generic Desktop Page, Usage=Game Pad, Type=CA)
- 85 01 (GLOBAL) REPORT_ID 0x01 (1)
- 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page
- 19 01 (LOCAL) USAGE_MINIMUM 0x00090001 Button 1 Primary/trigger (MULTI=Selector, On/Off, Momentary, or One Shot)
- 29 18 (LOCAL) USAGE_MAXIMUM 0x00090018 Button 24 (MULTI=Selector, On/Off, Momentary, or One Shot)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (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 18 (GLOBAL) REPORT_COUNT 0x18 (24) Number of fields
- 81 02 (MAIN) INPUT 0x00000002 (24 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- A1 00 (MAIN) COLLECTION 0x00000000 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Warning: USAGE type should be CP (Physical)
- 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page
- 09 30 (LOCAL) USAGE 0x00010030 X (DV=Dynamic Value)
- 09 31 (LOCAL) USAGE 0x00010031 Y (DV=Dynamic Value)
- 09 32 (LOCAL) USAGE 0x00010032 Z (DV=Dynamic Value)
- 09 33 (LOCAL) USAGE 0x00010033 Rx (DV=Dynamic Value)
- 09 34 (LOCAL) USAGE 0x00010034 Ry (DV=Dynamic Value)
- 09 35 (LOCAL) USAGE 0x00010035 Rz (DV=Dynamic Value)
- 09 36 (LOCAL) USAGE 0x00010036 Slider (DV=Dynamic Value)
- 09 37 (LOCAL) USAGE 0x00010037 Dial (DV=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)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 FF00 (GLOBAL) PHYSICAL_MAXIMUM 0x00FF (255)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 08 (GLOBAL) REPORT_COUNT 0x08 (8) Number of fields
- 81 02 (MAIN) INPUT 0x00000002 (8 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 Physical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=255) UNIT(0x,EXP=0)
- 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page <-- Redundant: USAGE_PAGE is already 0x0001
- 25 07 (GLOBAL) LOGICAL_MAXIMUM 0x07 (7)
- 46 3B01 (GLOBAL) PHYSICAL_MAXIMUM 0x013B (315)
- 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 65 14 (GLOBAL) UNIT 0x00000014 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees)
- 09 39 (LOCAL) USAGE 0x00010039 Hat switch (DV=Dynamic Value)
- 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 0x00000000 No unit (0=None)
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 81 01 (MAIN) INPUT 0x00000001 (1 field x 4 bits) 1=Constant 0=Array 0=Absolute
- 06 01FF (GLOBAL) USAGE_PAGE 0xFF01 Vendor-defined
- 09 49 (LOCAL) USAGE 0xFF010049 <-- Warning: Undocumented usage
- 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: REPORT_SIZE (1) is too small for LOGICAL_MAXIMUM (7) which needs 3 bits.
- 75 07 (GLOBAL) REPORT_SIZE 0x07 (7) Number of bits per field
- 81 03 (MAIN) INPUT 0x00000003 (1 field x 7 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page
- 09 92 (LOCAL) USAGE 0x000F0092 PID State Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0092: Page=Physical Interface Device Page, Usage=PID State Report, Type=CL)
- 85 02 (GLOBAL) REPORT_ID 0x02 (2)
- 09 9F (LOCAL) USAGE 0x000F009F Device Paused (DF=Dynamic Flag)
- 09 A0 (LOCAL) USAGE 0x000F00A0 Actuators Enabled (DF=Dynamic Flag)
- 09 A4 (LOCAL) USAGE 0x000F00A4 Safety Switch (DF=Dynamic Flag)
- 09 A5 (LOCAL) USAGE 0x000F00A5 Actuator Override Switch (DF=Dynamic Flag)
- 09 A6 (LOCAL) USAGE 0x000F00A6 Actuator Power (DF=Dynamic Flag)
- 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)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 45 01 (GLOBAL) PHYSICAL_MAXIMUM 0x01 (1)
- 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field
- 95 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields
- 81 02 (MAIN) INPUT 0x00000002 (5 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 95 03 (GLOBAL) REPORT_COUNT 0x03 (3) Number of fields
- 81 03 (MAIN) INPUT 0x00000003 (3 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 94 (LOCAL) USAGE 0x000F0094 Effect Playing (DF=Dynamic Flag)
- 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) <-- Redundant: LOGICAL_MAXIMUM is already 1
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 45 01 (GLOBAL) PHYSICAL_MAXIMUM 0x01 (1) <-- Redundant: PHYSICAL_MAXIMUM is already 1
- 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field <-- Redundant: REPORT_SIZE is already 1
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 07 (GLOBAL) REPORT_SIZE 0x07 (7) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 81 02 (MAIN) INPUT 0x00000002 (1 field x 7 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=40) UNIT(0x00000000,EXP=0)
- 09 21 (LOCAL) USAGE 0x000F0021 Set Effect Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0021: Page=Physical Interface Device Page, Usage=Set Effect Report, Type=CL)
- 85 01 (GLOBAL) REPORT_ID 0x01 (1)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) <-- Redundant: LOGICAL_MINIMUM is already 1
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40) <-- Redundant: LOGICAL_MAXIMUM is already 40
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1) <-- Redundant: PHYSICAL_MINIMUM is already 1
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40) <-- Redundant: PHYSICAL_MAXIMUM is already 40
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 25 (LOCAL) USAGE 0x000F0025 Effect Type (NAry=Named Array)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0025: Page=Physical Interface Device Page, Usage=Effect Type, Type=NAry) <-- Warning: USAGE type should be CL (Logical)
- 09 26 (LOCAL) USAGE 0x000F0026 ET Constant Force (Sel=Selector)
- 09 27 (LOCAL) USAGE 0x000F0027 ET Ramp (Sel=Selector)
- 09 30 (LOCAL) USAGE 0x000F0030 ET Square (Sel=Selector)
- 09 31 (LOCAL) USAGE 0x000F0031 ET Sine (Sel=Selector)
- 09 32 (LOCAL) USAGE 0x000F0032 ET Triangle (Sel=Selector)
- 09 33 (LOCAL) USAGE 0x000F0033 ET Sawtooth Up (Sel=Selector)
- 09 34 (LOCAL) USAGE 0x000F0034 ET Sawtooth Down (Sel=Selector)
- 09 40 (LOCAL) USAGE 0x000F0040 ET Spring (Sel=Selector)
- 09 41 (LOCAL) USAGE 0x000F0041 ET Damper (Sel=Selector)
- 09 42 (LOCAL) USAGE 0x000F0042 ET Inertia (Sel=Selector)
- 09 43 (LOCAL) USAGE 0x000F0043 ET Friction (Sel=Selector)
- 09 28 (LOCAL) USAGE 0x000F0028 ET Custom Force Data (Sel=Selector)
- 25 03 (GLOBAL) LOGICAL_MAXIMUM 0x03 (3)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) <-- Redundant: LOGICAL_MINIMUM is already 1
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1) <-- Redundant: PHYSICAL_MINIMUM is already 1
- 45 03 (GLOBAL) PHYSICAL_MAXIMUM 0x03 (3)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 00 (MAIN) OUTPUT 0x00000000 (1 field x 8 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=3) UNIT(0x00000000,EXP=0)
- 09 50 (LOCAL) USAGE 0x000F0050 Duration (DV=Dynamic Value)
- 09 54 (LOCAL) USAGE 0x000F0054 Trigger Repeat Interval (DV=Dynamic Value)
- 09 51 (LOCAL) USAGE 0x000F0051 Sample Period (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF7F (GLOBAL) LOGICAL_MAXIMUM 0x7FFF (32767)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 FF7F (GLOBAL) PHYSICAL_MAXIMUM 0x7FFF (32767)
- 66 0310 (GLOBAL) UNIT 0x00001003 Time in seconds [1 s units] (3=System=English Linear, 1=Time=Seconds)
- 55 FD (GLOBAL) UNIT_EXPONENT 0xFD (Unit Value x 10⁻³)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 95 03 (GLOBAL) REPORT_COUNT 0x03 (3) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (3 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- 09 52 (LOCAL) USAGE 0x000F0052 Gain (DV=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)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 53 (LOCAL) USAGE 0x000F0053 Trigger Button (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 08 (GLOBAL) LOGICAL_MAXIMUM 0x08 (8)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 08 (GLOBAL) PHYSICAL_MAXIMUM 0x08 (8)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 55 (LOCAL) USAGE 0x000F0055 Axes Enable (US=Usage Switch)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0055: Page=Physical Interface Device Page, Usage=Axes Enable, Type=US) <-- Warning: USAGE type should be CL (Logical)
- 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page
- 09 30 (LOCAL) USAGE 0x00010030 X (DV=Dynamic Value)
- 09 31 (LOCAL) USAGE 0x00010031 Y (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (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 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=8) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page
- 09 56 (LOCAL) USAGE 0x000F0056 Direction Enable (DF=Dynamic Flag)
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 95 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields
- 91 03 (MAIN) OUTPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 57 (LOCAL) USAGE 0x000F0057 Direction (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0057: Page=Physical Interface Device Page, Usage=Direction, Type=CL)
- 0B 01000A00 (LOCAL) USAGE 0x000A0001 Ordinal Page: Instance 1 (UM=Usage Modifier)
- 0B 02000A00 (LOCAL) USAGE 0x000A0002 Ordinal Page: Instance 2 (UM=Usage Modifier)
- 66 1400 (GLOBAL) UNIT 0x00000014 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees)
- 55 FE (GLOBAL) UNIT_EXPONENT 0xFE (Unit Value x 10⁻²)
- 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)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 47 A08C0000 (GLOBAL) PHYSICAL_MAXIMUM 0x00008CA0 (36000)
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None) <-- Redundant: UNIT is already 0x00000000
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=36000) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page <-- Redundant: USAGE_PAGE is already 0x000F
- 09 A7 (LOCAL) USAGE 0x000F00A7 Start Delay (DV=Dynamic Value)
- 66 0310 (GLOBAL) UNIT 0x00001003 Time in seconds [1 s units] (3=System=English Linear, 1=Time=Seconds)
- 55 FD (GLOBAL) UNIT_EXPONENT 0xFD (Unit Value x 10⁻³)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
- 26 FF7F (GLOBAL) LOGICAL_MAXIMUM 0x7FFF (32767)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 46 FF7F (GLOBAL) PHYSICAL_MAXIMUM 0x7FFF (32767)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=32767) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page <-- Redundant: USAGE_PAGE is already 0x000F
- 09 5A (LOCAL) USAGE 0x000F005A Set Envelope Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F005A: Page=Physical Interface Device Page, Usage=Set Envelope Report, Type=CL)
- 85 02 (GLOBAL) REPORT_ID 0x02 (2)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 5B (LOCAL) USAGE 0x000F005B Attack Level (DV=Dynamic Value)
- 09 5D (LOCAL) USAGE 0x000F005D Fade Level (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000)
- 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 5C (LOCAL) USAGE 0x000F005C Attack Time (DV=Dynamic Value)
- 09 5E (LOCAL) USAGE 0x000F005E Fade Time (DV=Dynamic Value)
- 66 0310 (GLOBAL) UNIT 0x00001003 Time in seconds [1 s units] (3=System=English Linear, 1=Time=Seconds)
- 55 FD (GLOBAL) UNIT_EXPONENT 0xFD (Unit Value x 10⁻³)
- 26 FF7F (GLOBAL) LOGICAL_MAXIMUM 0x7FFF (32767)
- 46 FF7F (GLOBAL) PHYSICAL_MAXIMUM 0x7FFF (32767)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 45 00 (GLOBAL) PHYSICAL_MAXIMUM 0x00 (0) <-- Info: Consider replacing 45 00 with 44
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- C0 (MAIN) END_COLLECTION Logical
- 09 6E (LOCAL) USAGE 0x000F006E Set Periodic Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F006E: Page=Physical Interface Device Page, Usage=Set Periodic Report, Type=CL)
- 85 04 (GLOBAL) REPORT_ID 0x04 (4)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 70 (LOCAL) USAGE 0x000F0070 Magnitude (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 6F (LOCAL) USAGE 0x000F006F Offset (DV=Dynamic Value)
- 15 80 (GLOBAL) LOGICAL_MINIMUM 0x80 (-128)
- 25 7F (GLOBAL) LOGICAL_MAXIMUM 0x7F (127)
- 36 F0D8 (GLOBAL) PHYSICAL_MINIMUM 0xD8F0 (-10000)
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000) <-- Redundant: PHYSICAL_MAXIMUM is already 10000
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 71 (LOCAL) USAGE 0x000F0071 Phase (DV=Dynamic Value)
- 66 1400 (GLOBAL) UNIT 0x00000014 Rotation in degrees [1° units] (4=System=English Rotation, 1=Rotation=Degrees)
- 55 FE (GLOBAL) UNIT_EXPONENT 0xFE (Unit Value x 10⁻²)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 47 A08C0000 (GLOBAL) PHYSICAL_MAXIMUM 0x00008CA0 (36000)
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 72 (LOCAL) USAGE 0x000F0072 Period (DV=Dynamic Value)
- 26 FF7F (GLOBAL) LOGICAL_MAXIMUM 0x7FFF (32767)
- 46 FF7F (GLOBAL) PHYSICAL_MAXIMUM 0x7FFF (32767)
- 66 0310 (GLOBAL) UNIT 0x00001003 Time in seconds [1 s units] (3=System=English Linear, 1=Time=Seconds)
- 55 FD (GLOBAL) UNIT_EXPONENT 0xFD (Unit Value x 10⁻³)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=32767) UNIT(0x00000000,EXP=0)
- 09 73 (LOCAL) USAGE 0x000F0073 Set Constant Force Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0073: Page=Physical Interface Device Page, Usage=Set Constant Force Report, Type=CL)
- 85 05 (GLOBAL) REPORT_ID 0x05 (5)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 70 (LOCAL) USAGE 0x000F0070 Magnitude (DV=Dynamic Value)
- 16 01FF (GLOBAL) LOGICAL_MINIMUM 0xFF01 (-255)
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 36 F0D8 (GLOBAL) PHYSICAL_MINIMUM 0xD8F0 (-10000)
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=-10000,MAX=10000) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page <-- Redundant: USAGE_PAGE is already 0x000F
- 09 77 (LOCAL) USAGE 0x000F0077 Effect Operation Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0077: Page=Physical Interface Device Page, Usage=Effect Operation Report, Type=CL)
- 85 0A (GLOBAL) REPORT_ID 0x0A (10)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 78 (LOCAL) USAGE 0x000F0078 Effect Operation (NAry=Named Array)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0078: Page=Physical Interface Device Page, Usage=Effect Operation, Type=NAry) <-- Warning: USAGE type should be CL (Logical)
- 09 79 (LOCAL) USAGE 0x000F0079 Op Effect Start (Sel=Selector)
- 09 7A (LOCAL) USAGE 0x000F007A Op Effect Start Solo (Sel=Selector)
- 09 7B (LOCAL) USAGE 0x000F007B Op Effect Stop (Sel=Selector)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) <-- Redundant: LOGICAL_MINIMUM is already 1
- 25 03 (GLOBAL) LOGICAL_MAXIMUM 0x03 (3)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 00 (MAIN) OUTPUT 0x00000000 (1 field x 8 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=40) UNIT(0x00000000,EXP=0)
- 09 7C (LOCAL) USAGE 0x000F007C Loop Count (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 FF00 (GLOBAL) PHYSICAL_MAXIMUM 0x00FF (255)
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field 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 Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=255) UNIT(0x00000000,EXP=0)
- 09 90 (LOCAL) USAGE 0x000F0090 PID Block Free Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0090: Page=Physical Interface Device Page, Usage=PID Block Free Report, Type=CL)
- 85 0B (GLOBAL) REPORT_ID 0x0B (11)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field 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 Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=40) UNIT(0x00000000,EXP=0)
- 09 96 (LOCAL) USAGE 0x000F0096 PID Device Control (NAry=Named Array)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0096: Page=Physical Interface Device Page, Usage=PID Device Control, Type=NAry) <-- Warning: USAGE type should be CL (Logical)
- 85 0C (GLOBAL) REPORT_ID 0x0C (12)
- 09 97 (LOCAL) USAGE 0x000F0097 DC Enable Actuators (Sel=Selector)
- 09 98 (LOCAL) USAGE 0x000F0098 DC Disable Actuators (Sel=Selector)
- 09 99 (LOCAL) USAGE 0x000F0099 DC Stop All Effects (Sel=Selector)
- 09 9A (LOCAL) USAGE 0x000F009A DC Device Reset (Sel=Selector)
- 09 9B (LOCAL) USAGE 0x000F009B DC Device Pause (Sel=Selector)
- 09 9C (LOCAL) USAGE 0x000F009C DC Device Continue (Sel=Selector)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) <-- Redundant: LOGICAL_MINIMUM is already 1
- 25 06 (GLOBAL) LOGICAL_MAXIMUM 0x06 (6)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 00 (MAIN) OUTPUT 0x00000000 (1 field x 8 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=40) UNIT(0x00000000,EXP=0)
- 09 7D (LOCAL) USAGE 0x000F007D Device Gain Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F007D: Page=Physical Interface Device Page, Usage=Device Gain Report, Type=CL)
- 85 0D (GLOBAL) REPORT_ID 0x0D (13)
- 09 7E (LOCAL) USAGE 0x000F007E Device Gain (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 91 02 (MAIN) OUTPUT 0x00000002 (1 field 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 Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=10000) UNIT(0x00000000,EXP=0)
- 09 AB (LOCAL) USAGE 0x000F00AB Create New Effect Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F00AB: Page=Physical Interface Device Page, Usage=Create New Effect Report, Type=CL)
- 85 0F (GLOBAL) REPORT_ID 0x0F (15)
- 09 25 (LOCAL) USAGE 0x000F0025 Effect Type (NAry=Named Array)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0025: Page=Physical Interface Device Page, Usage=Effect Type, Type=NAry) <-- Warning: USAGE type should be CL (Logical)
- 09 26 (LOCAL) USAGE 0x000F0026 ET Constant Force (Sel=Selector)
- 09 27 (LOCAL) USAGE 0x000F0027 ET Ramp (Sel=Selector)
- 09 30 (LOCAL) USAGE 0x000F0030 ET Square (Sel=Selector)
- 09 31 (LOCAL) USAGE 0x000F0031 ET Sine (Sel=Selector)
- 09 32 (LOCAL) USAGE 0x000F0032 ET Triangle (Sel=Selector)
- 09 33 (LOCAL) USAGE 0x000F0033 ET Sawtooth Up (Sel=Selector)
- 09 34 (LOCAL) USAGE 0x000F0034 ET Sawtooth Down (Sel=Selector)
- 09 40 (LOCAL) USAGE 0x000F0040 ET Spring (Sel=Selector)
- 09 41 (LOCAL) USAGE 0x000F0041 ET Damper (Sel=Selector)
- 09 42 (LOCAL) USAGE 0x000F0042 ET Inertia (Sel=Selector)
- 09 43 (LOCAL) USAGE 0x000F0043 ET Friction (Sel=Selector)
- 09 28 (LOCAL) USAGE 0x000F0028 ET Custom Force Data (Sel=Selector)
- 25 03 (GLOBAL) LOGICAL_MAXIMUM 0x03 (3)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 03 (GLOBAL) PHYSICAL_MAXIMUM 0x03 (3)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 00 (MAIN) FEATURE 0x00000000 (1 field x 8 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=3) UNIT(0x00000000,EXP=0)
- 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page
- 09 3B (LOCAL) USAGE 0x0001003B Byte Count (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 FF01 (GLOBAL) LOGICAL_MAXIMUM 0x01FF (511)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 46 FF01 (GLOBAL) PHYSICAL_MAXIMUM 0x01FF (511)
- 75 0A (GLOBAL) REPORT_SIZE 0x0A (10) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 02 (MAIN) FEATURE 0x00000002 (1 field x 10 bits) 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
- B1 01 (MAIN) FEATURE 0x00000001 (1 field x 6 bits) 1=Constant 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=511) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page
- 09 89 (LOCAL) USAGE 0x000F0089 PID Block Load Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0089: Page=Physical Interface Device Page, Usage=PID Block Load Report, Type=CL)
- 85 02 (GLOBAL) REPORT_ID 0x02 (2)
- 09 22 (LOCAL) USAGE 0x000F0022 Effect Block Index (DV=Dynamic Value)
- 25 28 (GLOBAL) LOGICAL_MAXIMUM 0x28 (40)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1)
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1)
- 45 28 (GLOBAL) PHYSICAL_MAXIMUM 0x28 (40)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 02 (MAIN) FEATURE 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 8B (LOCAL) USAGE 0x000F008B Block Load Status (NAry=Named Array)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F008B: Page=Physical Interface Device Page, Usage=Block Load Status, Type=NAry) <-- Warning: USAGE type should be CL (Logical)
- 09 8C (LOCAL) USAGE 0x000F008C Block Load Success (Sel=Selector)
- 09 8D (LOCAL) USAGE 0x000F008D Block Load Full (Sel=Selector)
- 09 8E (LOCAL) USAGE 0x000F008E Block Load Error (Sel=Selector)
- 25 03 (GLOBAL) LOGICAL_MAXIMUM 0x03 (3)
- 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) <-- Redundant: LOGICAL_MINIMUM is already 1
- 35 01 (GLOBAL) PHYSICAL_MINIMUM 0x01 (1) <-- Redundant: PHYSICAL_MINIMUM is already 1
- 45 03 (GLOBAL) PHYSICAL_MAXIMUM 0x03 (3)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 00 (MAIN) FEATURE 0x00000000 (1 field x 8 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=1,MAX=3) UNIT(0x00000000,EXP=0)
- 09 AC (LOCAL) USAGE 0x000F00AC RAM Pool Available (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 27 FFFF0000 (GLOBAL) LOGICAL_MAXIMUM 0x0000FFFF (65535)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 47 FFFF0000 (GLOBAL) PHYSICAL_MAXIMUM 0x0000FFFF (65535)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 00 (MAIN) FEATURE 0x00000000 (1 field x 16 bits) 0=Data 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=65535) UNIT(0x00000000,EXP=0)
- 09 7F (LOCAL) USAGE 0x000F007F PID Pool Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F007F: Page=Physical Interface Device Page, Usage=PID Pool Report, Type=CL)
- 85 03 (GLOBAL) REPORT_ID 0x03 (3)
- 09 80 (LOCAL) USAGE 0x000F0080 RAM Pool Size (DV=Dynamic Value)
- 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field <-- Redundant: REPORT_SIZE is already 16
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 27 FFFF0000 (GLOBAL) LOGICAL_MAXIMUM 0x0000FFFF (65535) <-- Redundant: LOGICAL_MAXIMUM is already 65535
- 47 FFFF0000 (GLOBAL) PHYSICAL_MAXIMUM 0x0000FFFF (65535) <-- Redundant: PHYSICAL_MAXIMUM is already 65535
- B1 02 (MAIN) FEATURE 0x00000002 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 83 (LOCAL) USAGE 0x000F0083 Simultaneous Effects Max (SV=Static Value)
- 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255)
- 46 FF00 (GLOBAL) PHYSICAL_MAXIMUM 0x00FF (255)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field
- 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1
- B1 02 (MAIN) FEATURE 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 A9 (LOCAL) USAGE 0x000F00A9 Device Managed Pool (SF=Static Flag)
- 09 AA (LOCAL) USAGE 0x000F00AA Shared Parameter Blocks (SF=Static Flag)
- 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field
- 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields
- 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)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 45 01 (GLOBAL) PHYSICAL_MAXIMUM 0x01 (1)
- B1 02 (MAIN) FEATURE 0x00000002 (2 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
- B1 03 (MAIN) FEATURE 0x00000003 (1 field x 6 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=1) UNIT(0x00000000,EXP=0)
- 09 01 (LOCAL) USAGE 0x000F0001 Physical Interface Device (CA=Application Collection)
- A1 01 (MAIN) COLLECTION 0x00000001 Application (Usage=0x000F0001: Page=Physical Interface Device Page, Usage=Physical Interface Device, Type=CA)
- 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
- 85 15 (GLOBAL) REPORT_ID 0x15 (21)
- 95 0D (GLOBAL) REPORT_COUNT 0x0D (13) Number of fields
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (13 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 11 (GLOBAL) REPORT_ID 0x11 (17)
- 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (4 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 17 (GLOBAL) REPORT_ID 0x17 (23)
- 95 30 (GLOBAL) REPORT_COUNT 0x30 (48) Number of fields
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (48 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 13 (GLOBAL) REPORT_ID 0x13 (19)
- 95 C0 (GLOBAL) REPORT_COUNT 0xC0 (-64) Number of fields <-- Error: REPORT_COUNT must be > 0
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (-64 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 16 (GLOBAL) REPORT_ID 0x16 (22)
- 95 22 (GLOBAL) REPORT_COUNT 0x22 (34) Number of fields
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (34 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 12 (GLOBAL) REPORT_ID 0x12 (18)
- 95 24 (GLOBAL) REPORT_COUNT 0x24 (36) Number of fields
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (36 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- 85 14 (GLOBAL) REPORT_ID 0x14 (20)
- 95 C4 (GLOBAL) REPORT_COUNT 0xC4 (-60) Number of fields <-- Error: REPORT_COUNT must be > 0
- 09 00 (LOCAL) USAGE 0x000F0000 Undefined
- B2 0201 (MAIN) FEATURE 0x00000102 (-60 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer
- C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=1) UNIT(0x00000000,EXP=0)
- */
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 0F (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0F (15)
- // Collection: CreateNewEffectReport EffectType
- uint8_t PID_CreateNewEffectReportEffectType; // Value = 1 to 3, Physical = ((Value - 1) + 1)
- // Value 1 = Usage 0x000F0026: ET Constant Force
- // Value 2 = Usage 0x000F0027: ET Ramp
- // Value 3 = Usage 0x000F0030: ET Square
- // Value 4 = Usage 0x000F0031: ET Sine <-- Error: Value (4) exceeds LOGICAL_MAXIMUM (3)
- // Value 5 = Usage 0x000F0032: ET Triangle <-- Error: Value (5) exceeds LOGICAL_MAXIMUM (3)
- // Value 6 = Usage 0x000F0033: ET Sawtooth Up <-- Error: Value (6) exceeds LOGICAL_MAXIMUM (3)
- // Value 7 = Usage 0x000F0034: ET Sawtooth Down <-- Error: Value (7) exceeds LOGICAL_MAXIMUM (3)
- // Value 8 = Usage 0x000F0040: ET Spring <-- Error: Value (8) exceeds LOGICAL_MAXIMUM (3)
- // Value 9 = Usage 0x000F0041: ET Damper <-- Error: Value (9) exceeds LOGICAL_MAXIMUM (3)
- // Value 10 = Usage 0x000F0042: ET Inertia <-- Error: Value (10) exceeds LOGICAL_MAXIMUM (3)
- // Value 11 = Usage 0x000F0043: ET Friction <-- Error: Value (11) exceeds LOGICAL_MAXIMUM (3)
- // Value 12 = Usage 0x000F0028: ET Custom Force Data <-- Error: Value (12) exceeds LOGICAL_MAXIMUM (3)
- // Collection: CreateNewEffectReport
- uint16_t GD_CreateNewEffectReportByteCount : 10; // Usage 0x0001003B: Byte Count, Value = 0 to 511, Physical = Value
- uint8_t : 6; // Pad
- } featureReport0F_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 02 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x02 (2)
- // Collection: PIDBlockLoadReport
- uint8_t PID_PIDBlockLoadReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- // Collection: PIDBlockLoadReport BlockLoadStatus
- uint8_t PID_PIDBlockLoadReportBlockLoadStatus; // Value = 1 to 3, Physical = ((Value - 1) + 1)
- // Value 1 = Usage 0x000F008C: Block Load Success
- // Value 2 = Usage 0x000F008D: Block Load Full
- // Value 3 = Usage 0x000F008E: Block Load Error
- // Collection: PIDBlockLoadReport
- uint16_t PID_PIDBlockLoadReport; // Value = 0 to 65535, Physical = Value
- // Value 0 = Usage 0x000F00AC: RAM Pool Available
- } featureReport02_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 03 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x03 (3)
- // Collection: PIDPoolReport
- uint16_t PID_PIDPoolReportRamPoolSize; // Usage 0x000F0080: RAM Pool Size, Value = 0 to 65535, Physical = Value
- uint8_t PID_PIDPoolReportSimultaneousEffectsMax; // Usage 0x000F0083: Simultaneous Effects Max, Value = 0 to 255, Physical = Value
- uint8_t PID_PIDPoolReportDeviceManagedPool : 1; // Usage 0x000F00A9: Device Managed Pool, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDPoolReportSharedParameterBlocks : 1; // Usage 0x000F00AA: Shared Parameter Blocks, Value = 0 to 1, Physical = Value
- uint8_t : 6; // Pad
- } featureReport03_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 15 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x15 (21)
- // Collection: PhysicalInterfaceDevice
- uint8_t PID_PhysicalInterfaceDeviceUndefined[13]; // Usage 0x000F0000: Undefined, Value = 0 to 255, Physical = Value / 255
- } featureReport15_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 11 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x11 (17)
- uint8_t PID_PhysicalInterfaceDeviceUndefined[4]; // Usage 0x000F0000: Undefined, Value = 0 to 255, Physical = Value / 255
- } featureReport11_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 17 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x17 (23)
- uint8_t PID_PhysicalInterfaceDeviceUndefined[48]; // Usage 0x000F0000: Undefined, Value = 0 to 255, Physical = Value / 255
- } featureReport17_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 13 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x13 (19)
- // Usage 0x000F0000 Undefined Value = 0 to 255 <-- Ignored: REPORT_COUNT (-64) is too small
- } featureReport13_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 16 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x16 (22)
- uint8_t PID_PhysicalInterfaceDeviceUndefined[34]; // Usage 0x000F0000: Undefined, Value = 0 to 255, Physical = Value / 255
- } featureReport16_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 12 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x12 (18)
- uint8_t PID_PhysicalInterfaceDeviceUndefined[36]; // Usage 0x000F0000: Undefined, Value = 0 to 255, Physical = Value / 255
- } featureReport12_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page featureReport 14 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x14 (20)
- // Usage 0x000F0000 Undefined Value = 0 to 255 <-- Ignored: REPORT_COUNT (-60) is too small
- } featureReport14_t;
- //--------------------------------------------------------------------------------
- // Button Page inputReport 01 (Device --> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x01 (1)
- // Collection: GamePad
- uint8_t BTN_GamePadButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 1
- uint8_t BTN_GamePadButton2 : 1; // Usage 0x00090002: Button 2 Secondary, Value = 0 to 1
- uint8_t BTN_GamePadButton3 : 1; // Usage 0x00090003: Button 3 Tertiary, Value = 0 to 1
- uint8_t BTN_GamePadButton4 : 1; // Usage 0x00090004: Button 4, Value = 0 to 1
- uint8_t BTN_GamePadButton5 : 1; // Usage 0x00090005: Button 5, Value = 0 to 1
- uint8_t BTN_GamePadButton6 : 1; // Usage 0x00090006: Button 6, Value = 0 to 1
- uint8_t BTN_GamePadButton7 : 1; // Usage 0x00090007: Button 7, Value = 0 to 1
- uint8_t BTN_GamePadButton8 : 1; // Usage 0x00090008: Button 8, Value = 0 to 1
- uint8_t BTN_GamePadButton9 : 1; // Usage 0x00090009: Button 9, Value = 0 to 1
- uint8_t BTN_GamePadButton10 : 1; // Usage 0x0009000A: Button 10, Value = 0 to 1
- uint8_t BTN_GamePadButton11 : 1; // Usage 0x0009000B: Button 11, Value = 0 to 1
- uint8_t BTN_GamePadButton12 : 1; // Usage 0x0009000C: Button 12, Value = 0 to 1
- uint8_t BTN_GamePadButton13 : 1; // Usage 0x0009000D: Button 13, Value = 0 to 1
- uint8_t BTN_GamePadButton14 : 1; // Usage 0x0009000E: Button 14, Value = 0 to 1
- uint8_t BTN_GamePadButton15 : 1; // Usage 0x0009000F: Button 15, Value = 0 to 1
- uint8_t BTN_GamePadButton16 : 1; // Usage 0x00090010: Button 16, Value = 0 to 1
- uint8_t BTN_GamePadButton17 : 1; // Usage 0x00090011: Button 17, Value = 0 to 1
- uint8_t BTN_GamePadButton18 : 1; // Usage 0x00090012: Button 18, Value = 0 to 1
- uint8_t BTN_GamePadButton19 : 1; // Usage 0x00090013: Button 19, Value = 0 to 1
- uint8_t BTN_GamePadButton20 : 1; // Usage 0x00090014: Button 20, Value = 0 to 1
- uint8_t BTN_GamePadButton21 : 1; // Usage 0x00090015: Button 21, Value = 0 to 1
- uint8_t BTN_GamePadButton22 : 1; // Usage 0x00090016: Button 22, Value = 0 to 1
- uint8_t BTN_GamePadButton23 : 1; // Usage 0x00090017: Button 23, Value = 0 to 1
- uint8_t BTN_GamePadButton24 : 1; // Usage 0x00090018: Button 24, Value = 0 to 1
- uint8_t GD_GamePadX; // Usage 0x00010030: X, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadY; // Usage 0x00010031: Y, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadZ; // Usage 0x00010032: Z, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadRx; // Usage 0x00010033: Rx, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadRy; // Usage 0x00010034: Ry, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadRz; // Usage 0x00010035: Rz, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadSlider; // Usage 0x00010036: Slider, Value = 0 to 255, Physical = Value
- uint8_t GD_GamePadDial; // Usage 0x00010037: Dial, Value = 0 to 255, Physical = Value
- // Collection:
- uint8_t GD_VendorDefinedHatSwitch : 4; // Usage 0x00010039: Hat switch, Value = 0 to 7, Physical = Value x 45 in degrees
- uint8_t : 4; // Pad
- uint8_t VEN_VendorDefined0049 : 1; // Usage 0xFF010049: , Value = 0 to 7, Physical = Value x 45
- uint8_t : 7; // Pad
- } inputReport01_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page inputReport 02 (Device --> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x02 (2)
- // Collection: PIDStateReport
- uint8_t PID_PIDStateReportDevicePaused : 1; // Usage 0x000F009F: Device Paused, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDStateReportActuatorsEnabled : 1; // Usage 0x000F00A0: Actuators Enabled, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDStateReportSafetySwitch : 1; // Usage 0x000F00A4: Safety Switch, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDStateReportActuatorOverrideSwitch : 1; // Usage 0x000F00A5: Actuator Override Switch, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDStateReportActuatorPower : 1; // Usage 0x000F00A6: Actuator Power, Value = 0 to 1, Physical = Value
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- uint8_t PID_PIDStateReportEffectPlaying : 1; // Usage 0x000F0094: Effect Playing, Value = 0 to 1, Physical = Value
- uint8_t PID_PIDStateReportEffectBlockIndex : 7; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- } inputReport02_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 01 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x01 (1)
- // Collection: SetEffectReport
- uint8_t PID_SetEffectReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- // Collection: SetEffectReport EffectType
- uint8_t PID_SetEffectReportEffectType; // Value = 1 to 3, Physical = ((Value - 1) + 1)
- // Value 1 = Usage 0x000F0026: ET Constant Force
- // Value 2 = Usage 0x000F0027: ET Ramp
- // Value 3 = Usage 0x000F0030: ET Square
- // Value 4 = Usage 0x000F0031: ET Sine <-- Error: Value (4) exceeds LOGICAL_MAXIMUM (3)
- // Value 5 = Usage 0x000F0032: ET Triangle <-- Error: Value (5) exceeds LOGICAL_MAXIMUM (3)
- // Value 6 = Usage 0x000F0033: ET Sawtooth Up <-- Error: Value (6) exceeds LOGICAL_MAXIMUM (3)
- // Value 7 = Usage 0x000F0034: ET Sawtooth Down <-- Error: Value (7) exceeds LOGICAL_MAXIMUM (3)
- // Value 8 = Usage 0x000F0040: ET Spring <-- Error: Value (8) exceeds LOGICAL_MAXIMUM (3)
- // Value 9 = Usage 0x000F0041: ET Damper <-- Error: Value (9) exceeds LOGICAL_MAXIMUM (3)
- // Value 10 = Usage 0x000F0042: ET Inertia <-- Error: Value (10) exceeds LOGICAL_MAXIMUM (3)
- // Value 11 = Usage 0x000F0043: ET Friction <-- Error: Value (11) exceeds LOGICAL_MAXIMUM (3)
- // Value 12 = Usage 0x000F0028: ET Custom Force Data <-- Error: Value (12) exceeds LOGICAL_MAXIMUM (3)
- // Collection: SetEffectReport
- uint16_t PID_SetEffectReportDuration; // Usage 0x000F0050: Duration, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- uint16_t PID_SetEffectReportTriggerRepeatInterval; // Usage 0x000F0054: Trigger Repeat Interval, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- uint16_t PID_SetEffectReportSamplePeriod; // Usage 0x000F0051: Sample Period, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- uint8_t PID_SetEffectReportGain; // Usage 0x000F0052: Gain, Value = 0 to 255, Physical = Value x 2000 / 51
- uint8_t PID_SetEffectReportTriggerButton; // Usage 0x000F0053: Trigger Button, Value = 1 to 8, Physical = ((Value - 1) + 1)
- // Collection: SetEffectReport AxesEnable
- uint8_t GD_SetEffectReportAxesEnableX : 1; // Usage 0x00010030: X, Value = 0 to 1, Physical = (Value x 7 + 1)
- uint8_t GD_SetEffectReportAxesEnableY : 1; // Usage 0x00010031: Y, Value = 0 to 1, Physical = (Value x 7 + 1)
- // Collection: SetEffectReport
- uint8_t PID_SetEffectReportDirectionEnable : 1; // Usage 0x000F0056: Direction Enable, Value = 0 to 1, Physical = (Value x 7 + 1)
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- uint8_t : 1; // Pad
- // Collection: SetEffectReport Direction
- uint8_t ORD_SetEffectReportDirectionInstance1; // Usage 0x000A0001: Instance 1, Value = 0 to 255, Physical = Value x 2400 / 17
- uint8_t ORD_SetEffectReportDirectionInstance2; // Usage 0x000A0002: Instance 2, Value = 0 to 255, Physical = Value x 2400 / 17
- // Collection: SetEffectReport
- uint16_t PID_SetEffectReportStartDelay; // Usage 0x000F00A7: Start Delay, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- } outputReport01_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 02 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x02 (2)
- // Collection: SetEnvelopeReport
- uint8_t PID_SetEnvelopeReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- uint8_t PID_SetEnvelopeReportAttackLevel; // Usage 0x000F005B: Attack Level, Value = 0 to 255, Physical = Value x 2000 / 51
- uint8_t PID_SetEnvelopeReportFadeLevel; // Usage 0x000F005D: Fade Level, Value = 0 to 255, Physical = Value x 2000 / 51
- uint16_t PID_SetEnvelopeReportAttackTime; // Usage 0x000F005C: Attack Time, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- uint16_t PID_SetEnvelopeReportFadeTime; // Usage 0x000F005E: Fade Time, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- } outputReport02_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 04 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x04 (4)
- // Collection: SetPeriodicReport
- uint8_t PID_SetPeriodicReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- uint8_t PID_SetPeriodicReportMagnitude; // Usage 0x000F0070: Magnitude, Value = 0 to 255, Physical = Value x 2000 / 51
- int8_t PID_SetPeriodicReportOffset; // Usage 0x000F006F: Offset, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- uint8_t PID_SetPeriodicReportPhase; // Usage 0x000F0071: Phase, Value = 0 to 255, Physical = Value x 2400 / 17 in 10⁻² degrees units
- uint16_t PID_SetPeriodicReportPeriod; // Usage 0x000F0072: Period, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- } outputReport04_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 05 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x05 (5)
- // Collection: SetConstantForceReport
- uint8_t PID_SetConstantForceReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- int16_t PID_SetConstantForceReportMagnitude; // Usage 0x000F0070: Magnitude, Value = -255 to 255, Physical = ((Value + 255) x 2000 / 51 - 10000)
- } outputReport05_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 0A (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0A (10)
- // Collection: EffectOperationReport
- uint8_t PID_EffectOperationReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- // Collection: EffectOperationReport EffectOperation
- uint8_t PID_EffectOperationReportEffectOperation; // Value = 1 to 3, Physical = ((Value - 1) x 39 / 2 + 1)
- // Value 1 = Usage 0x000F0079: Op Effect Start
- // Value 2 = Usage 0x000F007A: Op Effect Start Solo
- // Value 3 = Usage 0x000F007B: Op Effect Stop
- // Collection: EffectOperationReport
- uint8_t PID_EffectOperationReportLoopCount; // Usage 0x000F007C: Loop Count, Value = 0 to 255, Physical = Value
- } outputReport0A_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 0B (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0B (11)
- // Collection: PIDBlockFreeReport
- uint8_t PID_PIDBlockFreeReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- } outputReport0B_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 0C (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0C (12)
- // Collection: PIDDeviceControl
- uint8_t PID_PIDDeviceControl; // Value = 1 to 6, Physical = ((Value - 1) x 39 / 5 + 1)
- // Value 1 = Usage 0x000F0097: DC Enable Actuators
- // Value 2 = Usage 0x000F0098: DC Disable Actuators
- // Value 3 = Usage 0x000F0099: DC Stop All Effects
- // Value 4 = Usage 0x000F009A: DC Device Reset
- // Value 5 = Usage 0x000F009B: DC Device Pause
- // Value 6 = Usage 0x000F009C: DC Device Continue
- } outputReport0C_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 0D (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0D (13)
- // Collection: DeviceGainReport
- uint8_t PID_DeviceGainReportDeviceGain; // Usage 0x000F007E: Device Gain, Value = 0 to 255, Physical = Value x 2000 / 51
- } outputReport0D_t;
- //--------------------------------------------------------------------------------
- // Decoded Application Collection
- //--------------------------------------------------------------------------------
- /*
- C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=1) UNIT(0x00000000,EXP=0)
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement