Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //--------------------------------------------------------------------------------
- // Report descriptor data in hex (length 1365 bytes)
- //--------------------------------------------------------------------------------
- // 05010905 A1018501 05091901 29181500 25017501 95188102 A1000501 09300931
- // 09320933 09340935 09360937 150026FF 00350046 FF007508 95088102 C0050125
- // 07463B01 75049501 65140939 81426500 95018101 0600FF09 20092175 08950281
- // 020A2126 9508B102 0601FF09 49750195 01810275 07810305 0F0992A1 02850209
- // 9F09A009 A409A509 A6150025 01350045 01750195 05810295 03810309 94150025
- // 01350045 01750195 01810209 22150125 28350145 28750795 018102C0 0921A102
- // 85010922 15012528 35014528 75089501 91020925 A1020926 09270930 09310932
- // 09330934 09400941 09420943 09282503 15013501 45037508 95019100 C0095009
- // 54095115 0026FF7F 350046FF 7F660310 55FD7510 95039102 55006600 00095215
- // 0026FF00 35004610 27750895 01910209 53150125 08350145 08750895 01910209
- // 55A10205 01093009 31150025 01750195 029102C0 050F0956 95019102 95059103
- // 0957A102 0B01000A 000B0200 0A006614 0055FE15 0026FF00 350047A0 8C000066
- // 00007508 95029102 55006600 00C0050F 09A76603 1055FD15 0026FF7F 350046FF
- // 7F751095 01910266 00005500 C0050F09 5AA10285 02092215 01252835 01452875
- // 08950191 02095B09 5D150026 FF003500 46102795 02910209 5C095E66 031055FD
- // 26FF7F46 FF7F7510 91024500 66000055 00C0095F A1028503 09221501 25283501
- // 45287508 95019102 09231500 25013500 45017504 95019102 0958A102 0B01000A
- // 000B0200 0A007502 95029102 C0158025 7F36F0D8 46102709 60750895 01910236
- // F0D84610 27096109 62950291 02150026 FF003500 46102709 63096475 08950291
- // 02096546 10279501 9102C009 6EA10285 04092215 01252835 01452875 08950191
- // 02097015 0026FF00 35004610 27750895 01910209 6F158025 7F36F0D8 46102795
- // 01910209 71661400 55FE1500 26FF0035 0047A08C 00009102 097226FF 7F46FF7F
- // 66031055 FD751095 01910266 00005500 C00973A1 02850509 22150125 28350145
- // 28750895 01910209 701601FF 26FF0036 F0D84610 27751095 019102C0 0974A102
- // 85060922 15012528 35014528 75089501 91020975 09761580 257F36F0 D8461027
- // 75089502 9102C009 68A10285 07092215 01252835 01452875 08950191 02096C15
- // 00261027 35004610 27751095 01910209 69158125 7F350046 FF007508 950C9202
- // 01C00966 A1028508 05010930 09311581 257F3500 46FF0075 08950291 02C0050F
- // 0977A102 850A0922 15012528 35014528 75089501 91020978 A1020979 097A097B
- // 15012503 75089501 9100C009 7C150026 FF003500 46FF0091 02C00990 A102850B
- // 09222528 15013501 45287508 95019102 C00996A1 02850C09 97099809 99099A09
- // 9B099C15 01250675 08950191 00C0097D A102850D 097E1500 26FF0035 00461027
- // 75089501 9102C009 6BA10285 0E092215 01252835 01452875 08950191 02096D15
- // 0026FF00 350046FF 00750895 01910209 51660310 55FD1500 26FF7F35 0046FF7F
- // 75109501 91025500 660000C0 09ABA102 850F0925 A1020926 09270930 09310932
- // 09330934 09400941 09420943 09282503 15013501 45037508 9501B100 C0050109
- // 3B150026 FF013500 46FF0175 0A9501B1 027506B1 01C0050F 0989A102 85020922
- // 25281501 35014528 75089501 B102098B A102098C 098D098E 25031501 35014503
- // 75089501 B100C009 AC150027 FFFF0000 350047FF FF000075 109501B1 00C0097F
- // A1028503 09807510 95011500 350027FF FF000047 FFFF0000 B1020983 26FF0046
- // FF007508 9501B102 09A909AA 75019502 15002501 35004501 B1027506 9501B103
- // C0C00600 FF0901A1 01150026 FF007508 85119520 0900B202 01851295 440900B2
- // 02018513 95C00900 B2020185 1495C409 00B20201 C0
- //--------------------------------------------------------------------------------
- // 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 00FF (GLOBAL) USAGE_PAGE 0xFF00 Vendor-defined
- 09 20 (LOCAL) USAGE 0xFF000020 <-- Warning: Undocumented usage
- 09 21 (LOCAL) USAGE 0xFF000021 <-- Warning: Undocumented usage
- 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
- 0A 2126 (LOCAL) USAGE 0xFF002621 <-- Warning: Undocumented usage
- 95 08 (GLOBAL) REPORT_COUNT 0x08 (8) Number of fields
- B1 02 (MAIN) FEATURE 0x00000002 (8 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 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
- 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 5F (LOCAL) USAGE 0x000F005F Set Condition Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F005F: Page=Physical Interface Device Page, Usage=Set Condition Report, Type=CL)
- 85 03 (GLOBAL) REPORT_ID 0x03 (3)
- 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 23 (LOCAL) USAGE 0x000F0023 Parameter Block Offset (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 45 01 (GLOBAL) PHYSICAL_MAXIMUM 0x01 (1)
- 75 04 (GLOBAL) REPORT_SIZE 0x04 (4) 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 4 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
- 09 58 (LOCAL) USAGE 0x000F0058 Type Specific Block Offset (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0058: Page=Physical Interface Device Page, Usage=Type Specific Block Offset, 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)
- 75 02 (GLOBAL) REPORT_SIZE 0x02 (2) Number of bits per field
- 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields
- 91 02 (MAIN) OUTPUT 0x00000002 (2 fields x 2 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=1) UNIT(0x00000000,EXP=0)
- 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)
- 09 60 (LOCAL) USAGE 0x000F0060 CP Offset (DV=Dynamic Value)
- 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
- 36 F0D8 (GLOBAL) PHYSICAL_MINIMUM 0xD8F0 (-10000) <-- Redundant: PHYSICAL_MINIMUM is already -10000
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000) <-- Redundant: PHYSICAL_MAXIMUM is already 10000
- 09 61 (LOCAL) USAGE 0x000F0061 Positive Coefficient (DV=Dynamic Value)
- 09 62 (LOCAL) USAGE 0x000F0062 Negative Coefficient (DV=Dynamic Value)
- 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
- 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) <-- Redundant: PHYSICAL_MAXIMUM is already 10000
- 09 63 (LOCAL) USAGE 0x000F0063 Positive Saturation (DV=Dynamic Value)
- 09 64 (LOCAL) USAGE 0x000F0064 Negative Saturation (DV=Dynamic Value)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields <-- Redundant: REPORT_COUNT is already 2
- 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 65 (LOCAL) USAGE 0x000F0065 Dead Band (DV=Dynamic Value)
- 46 1027 (GLOBAL) PHYSICAL_MAXIMUM 0x2710 (10000) <-- Redundant: PHYSICAL_MAXIMUM is already 10000
- 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
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=10000) UNIT(0x00000000,EXP=0)
- 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 <-- 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 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)
- 09 74 (LOCAL) USAGE 0x000F0074 Set Ramp Force Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0074: Page=Physical Interface Device Page, Usage=Set Ramp Force Report, Type=CL)
- 85 06 (GLOBAL) REPORT_ID 0x06 (6)
- 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 75 (LOCAL) USAGE 0x000F0075 Ramp Start (DV=Dynamic Value)
- 09 76 (LOCAL) USAGE 0x000F0076 Ramp End (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)
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 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
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=-10000,MAX=10000) UNIT(0x00000000,EXP=0)
- 09 68 (LOCAL) USAGE 0x000F0068 Custom Force Data Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0068: Page=Physical Interface Device Page, Usage=Custom Force Data Report, Type=CL)
- 85 07 (GLOBAL) REPORT_ID 0x07 (7)
- 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 <-- Redundant: REPORT_SIZE is already 8
- 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 6C (LOCAL) USAGE 0x000F006C Custom Force Data Offset (DV=Dynamic Value)
- 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14
- 26 1027 (GLOBAL) LOGICAL_MAXIMUM 0x2710 (10000)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34
- 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
- 09 69 (LOCAL) USAGE 0x000F0069 Custom Force Data (DV=Dynamic Value)
- 15 81 (GLOBAL) LOGICAL_MINIMUM 0x81 (-127)
- 25 7F (GLOBAL) LOGICAL_MAXIMUM 0x7F (127)
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 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 0C (GLOBAL) REPORT_COUNT 0x0C (12) Number of fields
- 92 0201 (MAIN) OUTPUT 0x00000102 (12 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 Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=255) UNIT(0x00000000,EXP=0)
- 09 66 (LOCAL) USAGE 0x000F0066 Download Force Sample (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F0066: Page=Physical Interface Device Page, Usage=Download Force Sample, Type=CL)
- 85 08 (GLOBAL) REPORT_ID 0x08 (8)
- 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 81 (GLOBAL) LOGICAL_MINIMUM 0x81 (-127) <-- Redundant: LOGICAL_MINIMUM is already -127
- 25 7F (GLOBAL) LOGICAL_MAXIMUM 0x7F (127) <-- Redundant: LOGICAL_MAXIMUM is already 127
- 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Redundant: PHYSICAL_MINIMUM is already 0 <-- Info: Consider replacing 35 00 with 34
- 46 FF00 (GLOBAL) PHYSICAL_MAXIMUM 0x00FF (255) <-- Redundant: PHYSICAL_MAXIMUM is already 255
- 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8
- 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
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=255) UNIT(0x00000000,EXP=0)
- 05 0F (GLOBAL) USAGE_PAGE 0x000F Physical Interface Device Page
- 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 <-- Redundant: REPORT_SIZE is already 8
- 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 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 6B (LOCAL) USAGE 0x000F006B Set Custom Force Report (CL=Logical Collection)
- A1 02 (MAIN) COLLECTION 0x00000002 Logical (Usage=0x000F006B: Page=Physical Interface Device Page, Usage=Set Custom Force Report, Type=CL)
- 85 0E (GLOBAL) REPORT_ID 0x0E (14)
- 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 <-- 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 6D (LOCAL) USAGE 0x000F006D Sample 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)
- 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 51 (LOCAL) USAGE 0x000F0051 Sample Period (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 <-- 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
- 55 00 (GLOBAL) UNIT_EXPONENT 0x00 (Unit Value x 10⁰)
- 66 0000 (GLOBAL) UNIT 0x00000000 No unit (0=None)
- C0 (MAIN) END_COLLECTION Logical <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=32767) 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
- 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)
- C0 (MAIN) END_COLLECTION Application <-- Warning: Physical units are still in effect PHYSICAL(MIN=0,MAX=1) UNIT(0x00000000,EXP=0)
- */
- //--------------------------------------------------------------------------------
- // Vendor-defined featureReport 01 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x01 (1)
- uint8_t VEN_VendorDefined2621[8]; // Usage 0xFF002621: , Value = 0 to 7, Physical = Value x 45
- } featureReport01_t;
- //--------------------------------------------------------------------------------
- // 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
- // Value 5 = Usage 0x000F0032: ET Triangle <-- Error: Value (5) exceeds LOGICAL_MAXIMUM
- // Value 6 = Usage 0x000F0033: ET Sawtooth Up <-- Error: Value (6) exceeds LOGICAL_MAXIMUM
- // Value 7 = Usage 0x000F0034: ET Sawtooth Down <-- Error: Value (7) exceeds LOGICAL_MAXIMUM
- // Value 8 = Usage 0x000F0040: ET Spring <-- Error: Value (8) exceeds LOGICAL_MAXIMUM
- // Value 9 = Usage 0x000F0041: ET Damper <-- Error: Value (9) exceeds LOGICAL_MAXIMUM
- // Value 10 = Usage 0x000F0042: ET Inertia <-- Error: Value (10) exceeds LOGICAL_MAXIMUM
- // Value 11 = Usage 0x000F0043: ET Friction <-- Error: Value (11) exceeds LOGICAL_MAXIMUM
- // Value 12 = Usage 0x000F0028: ET Custom Force Data <-- Error: Value (12) exceeds LOGICAL_MAXIMUM
- // 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;
- //--------------------------------------------------------------------------------
- // 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_VendorDefined0020; // Usage 0xFF000020: , Value = 0 to 7, Physical = Value x 45
- uint8_t VEN_VendorDefined0021; // Usage 0xFF000021: , Value = 0 to 7, Physical = Value x 45
- 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
- // Value 5 = Usage 0x000F0032: ET Triangle <-- Error: Value (5) exceeds LOGICAL_MAXIMUM
- // Value 6 = Usage 0x000F0033: ET Sawtooth Up <-- Error: Value (6) exceeds LOGICAL_MAXIMUM
- // Value 7 = Usage 0x000F0034: ET Sawtooth Down <-- Error: Value (7) exceeds LOGICAL_MAXIMUM
- // Value 8 = Usage 0x000F0040: ET Spring <-- Error: Value (8) exceeds LOGICAL_MAXIMUM
- // Value 9 = Usage 0x000F0041: ET Damper <-- Error: Value (9) exceeds LOGICAL_MAXIMUM
- // Value 10 = Usage 0x000F0042: ET Inertia <-- Error: Value (10) exceeds LOGICAL_MAXIMUM
- // Value 11 = Usage 0x000F0043: ET Friction <-- Error: Value (11) exceeds LOGICAL_MAXIMUM
- // Value 12 = Usage 0x000F0028: ET Custom Force Data <-- Error: Value (12) exceeds LOGICAL_MAXIMUM
- // 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 03 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x03 (3)
- // Collection: SetConditionReport
- uint8_t PID_SetConditionReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- uint8_t PID_SetConditionReportParameterBlockOffset : 4; // Usage 0x000F0023: Parameter Block Offset, Value = 0 to 1, Physical = Value
- // Collection: SetConditionReport TypeSpecificBlockOffset
- uint8_t ORD_SetConditionReportTypeSpecificBlockOffsetInstance1 : 2; // Usage 0x000A0001: Instance 1, Value = 0 to 1, Physical = Value
- uint8_t ORD_SetConditionReportTypeSpecificBlockOffsetInstance2 : 2; // Usage 0x000A0002: Instance 2, Value = 0 to 1, Physical = Value
- // Collection: SetConditionReport
- int8_t PID_SetConditionReportCpOffset; // Usage 0x000F0060: CP Offset, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- int8_t PID_SetConditionReportPositiveCoefficient; // Usage 0x000F0061: Positive Coefficient, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- int8_t PID_SetConditionReportNegativeCoefficient; // Usage 0x000F0062: Negative Coefficient, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- uint8_t PID_SetConditionReportPositiveSaturation; // Usage 0x000F0063: Positive Saturation, Value = 0 to 255, Physical = Value x 2000 / 51
- uint8_t PID_SetConditionReportNegativeSaturation; // Usage 0x000F0064: Negative Saturation, Value = 0 to 255, Physical = Value x 2000 / 51
- uint8_t PID_SetConditionReportDeadBand; // Usage 0x000F0065: Dead Band, Value = 0 to 255, Physical = Value x 2000 / 51
- } outputReport03_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 06 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x06 (6)
- // Collection: SetRampForceReport
- uint8_t PID_SetRampForceReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- int8_t PID_SetRampForceReportRampStart; // Usage 0x000F0075: Ramp Start, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- int8_t PID_SetRampForceReportRampEnd; // Usage 0x000F0076: Ramp End, Value = -128 to 127, Physical = ((Value + 128) x 4000 / 51 - 10000)
- } outputReport06_t;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 07 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x07 (7)
- // Collection: CustomForceDataReport
- uint8_t PID_CustomForceDataReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- uint16_t PID_CustomForceDataReportCustomForceDataOffset; // Usage 0x000F006C: Custom Force Data Offset, Value = 0 to 10000, Physical = Value
- int8_t PID_CustomForceDataReportCustomForceData[12]; // Usage 0x000F0069: Custom Force Data, Value = -127 to 127, Physical = (Value + 127) x 255 / 254
- } outputReport07_t;
- //--------------------------------------------------------------------------------
- // Generic Desktop Page outputReport 08 (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x08 (8)
- // Collection: DownloadForceSample
- int8_t GD_DownloadForceSampleX; // Usage 0x00010030: X, Value = -127 to 127, Physical = (Value + 127) x 255 / 254
- int8_t GD_DownloadForceSampleY; // Usage 0x00010031: Y, Value = -127 to 127, Physical = (Value + 127) x 255 / 254
- } outputReport08_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;
- //--------------------------------------------------------------------------------
- // Physical Interface Device Page outputReport 0E (Device <-- Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x0E (14)
- // Collection: SetCustomForceReport
- uint8_t PID_SetCustomForceReportEffectBlockIndex; // Usage 0x000F0022: Effect Block Index, Value = 1 to 40, Physical = ((Value - 1) + 1)
- uint8_t PID_SetCustomForceReportSampleCount; // Usage 0x000F006D: Sample Count, Value = 0 to 255, Physical = Value
- uint16_t PID_SetCustomForceReportSamplePeriod; // Usage 0x000F0051: Sample Period, Value = 0 to 32767, Physical = Value in 10⁻³ s units
- } outputReport0E_t;
- //--------------------------------------------------------------------------------
- // Decoded Application Collection
- //--------------------------------------------------------------------------------
- /*
- 06 00FF (GLOBAL) USAGE_PAGE 0xFF00 Vendor-defined
- 09 01 (LOCAL) USAGE 0xFF000001 <-- Warning: Undocumented usage
- A1 01 (MAIN) COLLECTION 0x00000001 Application (Usage=0xFF000001: Page=Vendor-defined, Usage=, Type=)
- 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 11 (GLOBAL) REPORT_ID 0x11 (17)
- 95 20 (GLOBAL) REPORT_COUNT 0x20 (32) Number of fields
- 09 00 (LOCAL) USAGE 0xFF000000 <-- Warning: Undocumented usage
- B2 0201 (MAIN) FEATURE 0x00000102 (32 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 44 (GLOBAL) REPORT_COUNT 0x44 (68) Number of fields
- 09 00 (LOCAL) USAGE 0xFF000000 <-- Warning: Undocumented usage
- B2 0201 (MAIN) FEATURE 0x00000102 (68 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 0xFF000000 <-- Warning: Undocumented usage
- 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 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 0xFF000000 <-- Warning: Undocumented usage
- 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)
- */
- //--------------------------------------------------------------------------------
- // Vendor-defined featureReport 11 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x11 (17)
- uint8_t VEN_VendorDefined0000[32]; // Usage 0xFF000000: , Value = 0 to 255, Physical = Value / 255
- } featureReport11_t;
- //--------------------------------------------------------------------------------
- // Vendor-defined featureReport 12 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x12 (18)
- uint8_t VEN_VendorDefined0000[68]; // Usage 0xFF000000: , Value = 0 to 255, Physical = Value / 255
- } featureReport12_t;
- //--------------------------------------------------------------------------------
- // Vendor-defined featureReport 13 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x13 (19)
- // Usage 0xFF000000 Value = 0 to 255 <-- Ignored: REPORT_COUNT (-64) is too small
- } featureReport13_t;
- //--------------------------------------------------------------------------------
- // Vendor-defined featureReport 14 (Device <-> Host)
- //--------------------------------------------------------------------------------
- typedef struct
- {
- uint8_t reportId; // Report ID = 0x14 (20)
- // Usage 0xFF000000 Value = 0 to 255 <-- Ignored: REPORT_COUNT (-60) is too small
- } featureReport14_t;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement