// generated by https://github.com/abend0c1/hidrdd //-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 09 0E (LOCAL) USAGE 0x0001000E System Multi-axis Controller (Application Collection) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x0001000E: Page=Generic Desktop Page, Usage=System Multi-axis Controller, Type=Application Collection) 85 01 (GLOBAL) REPORT_ID 0x01 (1) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 21 (LOCAL) USAGE 0x000D0021 Puck (Logical Collection) A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x000D0021: Page=Digitizer Device Page, Usage=Puck, Type=Logical Collection) 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 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields A1 00 (MAIN) COLLECTION 0x00 Physical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CP (Physical Collection) 05 09 (GLOBAL) USAGE_PAGE 0x0009 Button Page 09 01 (LOCAL) USAGE 0x00090001 Button 1 Primary/trigger (Selector, On/Off Control, Momentary Control, or One Shot Control) 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 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 33 (LOCAL) USAGE 0x000D0033 Touch (Momentary Control) 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 95 06 (GLOBAL) REPORT_COUNT 0x06 (6) Number of fields 81 03 (MAIN) INPUT 0x00000003 (6 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 09 37 (LOCAL) USAGE 0x00010037 Dial (Dynamic Value) 16 0180 (GLOBAL) LOGICAL_MINIMUM 0x8001 (-32767) 26 FF7F (GLOBAL) LOGICAL_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 81 06 (MAIN) INPUT 0x00000006 (1 field x 16 bits) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 46 100E (GLOBAL) PHYSICAL_MAXIMUM 0x0E10 (3600) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 26 100E (GLOBAL) LOGICAL_MAXIMUM 0x0E10 (3600) 09 48 (LOCAL) USAGE 0x00010048 Resolution Multiplier (Dynamic Value) 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 45 00 (GLOBAL) PHYSICAL_MAXIMUM 0x00 (0) <-- Info: Consider replacing 45 00 with 44 C0 (MAIN) END_COLLECTION Logical 55 0E (GLOBAL) UNIT_EXPONENT 0x0E (Unit Value x 10⁻²) 65 11 (GLOBAL) UNIT 0x11 Distance in metres [1 cm units] (1=System=SI Linear, 1=Length=Centimetre) 46 0000 (GLOBAL) PHYSICAL_MAXIMUM 0x0000 (0) <-- Redundant: PHYSICAL_MAXIMUM is already 0 <-- Info: Consider replacing 46 0000 with 44 26 0000 (GLOBAL) LOGICAL_MAXIMUM 0x0000 (0) <-- Info: Consider replacing 26 0000 with 24 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 42 (MAIN) INPUT 0x00000042 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 09 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 46 0000 (GLOBAL) PHYSICAL_MAXIMUM 0x0000 (0) <-- Redundant: PHYSICAL_MAXIMUM is already 0 <-- Info: Consider replacing 46 0000 with 44 26 0000 (GLOBAL) LOGICAL_MAXIMUM 0x0000 (0) <-- Redundant: LOGICAL_MAXIMUM is already 0 <-- Info: Consider replacing 26 0000 with 24 81 42 (MAIN) INPUT 0x00000042 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 48 (LOCAL) USAGE 0x000D0048 Width (Dynamic Value) 15 3A (GLOBAL) LOGICAL_MINIMUM 0x3A (58) 25 3A (GLOBAL) LOGICAL_MAXIMUM 0x3A (58) 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 55 0F (GLOBAL) UNIT_EXPONENT 0x0F (Unit Value x 10⁻¹) 35 3A (GLOBAL) PHYSICAL_MINIMUM 0x3A (58) 45 3A (GLOBAL) PHYSICAL_MAXIMUM 0x3A (58) 81 03 (MAIN) INPUT 0x00000003 (1 field x 8 bits) 1=Constant 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⁰) <-- Info: Consider replacing 55 00 with 54 65 00 (GLOBAL) UNIT 0x00 No unit (0=None) <-- Info: Consider replacing 65 00 with 64 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 45 00 (GLOBAL) PHYSICAL_MAXIMUM 0x00 (0) <-- Info: Consider replacing 45 00 with 44 05 0E (GLOBAL) USAGE_PAGE 0x000E Haptics Page 09 01 (LOCAL) USAGE 0x000E0001 Simple Haptic Controller (Application or Logical Collection) A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x000E0001: Page=Haptics Page, Usage=Simple Haptic Controller, Type=Application or Logical Collection) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 26 FF00 (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) 09 24 (LOCAL) USAGE 0x000E0024 Repeat Count (Dynamic Value) B1 42 (MAIN) FEATURE 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 09 24 (LOCAL) USAGE 0x000E0024 Repeat Count (Dynamic Value) 91 42 (MAIN) OUTPUT 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 15 01 (GLOBAL) LOGICAL_MINIMUM 0x01 (1) 25 07 (GLOBAL) LOGICAL_MAXIMUM 0x07 (7) 09 20 (LOCAL) USAGE 0x000E0020 Auto Trigger (Dynamic Value) B1 42 (MAIN) FEATURE 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 09 21 (LOCAL) USAGE 0x000E0021 Manual Trigger (Dynamic Value) 91 42 (MAIN) OUTPUT 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 25 0A (GLOBAL) LOGICAL_MAXIMUM 0x0A (10) 09 28 (LOCAL) USAGE 0x000E0028 Waveform Cutoff Time (Static Value) B1 42 (MAIN) FEATURE 0x00000042 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 26 D007 (GLOBAL) LOGICAL_MAXIMUM 0x07D0 (2000) 09 25 (LOCAL) USAGE 0x000E0025 Retrigger Period (Dynamic Value) B1 42 (MAIN) FEATURE 0x00000042 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 09 25 (LOCAL) USAGE 0x000E0025 Retrigger Period (Dynamic Value) 91 42 (MAIN) OUTPUT 0x00000042 (1 field x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap 85 02 (GLOBAL) REPORT_ID 0x02 (2) 75 20 (GLOBAL) REPORT_SIZE 0x20 (32) Number of bits per field 17 37000100 (GLOBAL) LOGICAL_MINIMUM 0x00010037 (65591) 27 37000100 (GLOBAL) LOGICAL_MAXIMUM 0x00010037 (65591) 09 22 (LOCAL) USAGE 0x000E0022 Auto Trigger Associated Control (Static Value) B1 02 (MAIN) FEATURE 0x00000002 (1 field x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 11 (LOCAL) USAGE 0x000E0011 Duration List (Named Array Collection) A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x000E0011: Page=Haptics Page, Usage=Duration List, Type=Named Array Collection) <-- Warning: USAGE type should be CL (Logical Collection) 05 0A (GLOBAL) USAGE_PAGE 0x000A Ordinal Page 95 03 (GLOBAL) REPORT_COUNT 0x03 (3) Number of fields 09 03 (LOCAL) USAGE 0x000A0003 Instance 3 (Usage Modifier Collection) 09 04 (LOCAL) USAGE 0x000A0004 Instance 4 (Usage Modifier Collection) 09 05 (LOCAL) USAGE 0x000A0005 Instance 5 (Usage Modifier Collection) 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 25 FF (GLOBAL) LOGICAL_MAXIMUM 0xFF (-1) B1 02 (MAIN) FEATURE 0x00000002 (3 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) C0 (MAIN) END_COLLECTION Logical 05 0E (GLOBAL) USAGE_PAGE 0x000E Haptics Page 09 10 (LOCAL) USAGE 0x000E0010 Waveform List (Named Array Collection) A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x000E0010: Page=Haptics Page, Usage=Waveform List, Type=Named Array Collection) <-- Warning: USAGE type should be CL (Logical Collection) 05 0A (GLOBAL) USAGE_PAGE 0x000A Ordinal Page 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 15 03 (GLOBAL) LOGICAL_MINIMUM 0x03 (3) 25 03 (GLOBAL) LOGICAL_MAXIMUM 0x03 (3) 36 0310 (GLOBAL) PHYSICAL_MINIMUM 0x1003 (4099) 46 0310 (GLOBAL) PHYSICAL_MAXIMUM 0x1003 (4099) 09 03 (LOCAL) USAGE 0x000A0003 Instance 3 (Usage Modifier Collection) 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 15 04 (GLOBAL) LOGICAL_MINIMUM 0x04 (4) 25 04 (GLOBAL) LOGICAL_MAXIMUM 0x04 (4) 36 0410 (GLOBAL) PHYSICAL_MINIMUM 0x1004 (4100) 46 0410 (GLOBAL) PHYSICAL_MAXIMUM 0x1004 (4100) 09 04 (LOCAL) USAGE 0x000A0004 Instance 4 (Usage Modifier Collection) 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 15 05 (GLOBAL) LOGICAL_MINIMUM 0x05 (5) 25 05 (GLOBAL) LOGICAL_MAXIMUM 0x05 (5) 36 0410 (GLOBAL) PHYSICAL_MINIMUM 0x1004 (4100) <-- Redundant: PHYSICAL_MINIMUM is already 4100 46 0410 (GLOBAL) PHYSICAL_MAXIMUM 0x1004 (4100) <-- Redundant: PHYSICAL_MAXIMUM is already 4100 09 05 (LOCAL) USAGE 0x000A0005 Instance 5 (Usage Modifier Collection) 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 35 00 (GLOBAL) PHYSICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 35 00 with 34 45 00 (GLOBAL) PHYSICAL_MAXIMUM 0x00 (0) <-- Info: Consider replacing 45 00 with 44 C0 (MAIN) END_COLLECTION Logical C0 (MAIN) END_COLLECTION Logical C0 (MAIN) END_COLLECTION Physical C0 (MAIN) END_COLLECTION Logical C0 (MAIN) END_COLLECTION Application */ //-------------------------------------------------------------------------------- // Generic Desktop Page featureReport 01 (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x01 (1) // Collection: CA:SystemMulti-axisController CL:Puck CP: CL: uint16_t GD_SystemMultiaxisControllerPuckResolutionMultiplier; // Usage 0x00010048: Resolution Multiplier, Value = 0 to 3600, Physical = Value // Collection: CA:SystemMulti-axisController CL:Puck CP: CL:SimpleHapticController uint8_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerRepeatCount; // Usage 0x000E0024: Repeat Count, Value = 0 to 255 uint8_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerAutoTrigger; // Usage 0x000E0020: Auto Trigger, Value = 1 to 7 uint8_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerWaveformCutoffTime; // Usage 0x000E0028: Waveform Cutoff Time, Value = 1 to 10 uint16_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerRetriggerPeriod; // Usage 0x000E0025: Retrigger Period, Value = 1 to 2000 } featureReport01_t; //-------------------------------------------------------------------------------- // Haptics Page featureReport 02 (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x02 (2) // Collection: CA:SystemMulti-axisController CL:Puck CP: CL:SimpleHapticController uint32_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerAutoTriggerAssociatedControl; // Usage 0x000E0022: Auto Trigger Associated Control, Value = 65591 to 65591 // Collection: CA:SystemMulti-axisController CL:Puck CP: CL:SimpleHapticController CL:DurationList uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerDurationListInstance3; // Usage 0x000A0003: Instance 3, Value = 0 to -1 uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerDurationListInstance4; // Usage 0x000A0004: Instance 4, Value = 0 to -1 uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerDurationListInstance5; // Usage 0x000A0005: Instance 5, Value = 0 to -1 // Collection: CA:SystemMulti-axisController CL:Puck CP: CL:SimpleHapticController CL:WaveformList uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerWaveformListInstance3; // Usage 0x000A0003: Instance 3, Value = 3 to 3, Physical = ((Value - 3) x 0 / 0 + 4099) uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerWaveformListInstance4; // Usage 0x000A0004: Instance 4, Value = 4 to 4, Physical = ((Value - 4) x 0 / 0 + 4100) uint8_t ORD_SystemMultiaxisControllerPuckSimpleHapticControllerWaveformListInstance5; // Usage 0x000A0005: Instance 5, Value = 5 to 5, Physical = ((Value - 5) x 0 / 0 + 4100) } featureReport02_t; //-------------------------------------------------------------------------------- // Button Page inputReport 01 (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x01 (1) // Collection: CA:SystemMulti-axisController CL:Puck CP: uint8_t BTN_SystemMultiaxisControllerPuckButton1 : 1; // Usage 0x00090001: Button 1 Primary/trigger, Value = 0 to 1 uint8_t DIG_SystemMultiaxisControllerPuckTouch : 1; // Usage 0x000D0033: Touch, Value = 0 to 1 uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad // Collection: CA:SystemMulti-axisController CL:Puck CP: CL: int16_t GD_SystemMultiaxisControllerPuckDial; // Usage 0x00010037: Dial, Value = -32767 to 32767 // Collection: CA:SystemMulti-axisController CL:Puck CP: uint16_t GD_SystemMultiaxisControllerPuckX; // Usage 0x00010030: X, Value = 0 to 0, Physical = Value x 0 / 0 in 10⁻⁴ m units uint16_t GD_SystemMultiaxisControllerPuckY; // Usage 0x00010031: Y, Value = 0 to 0, Physical = Value x 0 / 0 in 10⁻⁴ m units uint8_t DIG_SystemMultiaxisControllerPuckWidth; // Usage 0x000D0048: Width, Value = 58 to 58, Physical = ((Value - 58) x 0 / 0 + 58) in 10⁻³ m units } inputReport01_t; //-------------------------------------------------------------------------------- // Haptics Page outputReport 01 (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x01 (1) // Collection: CA:SystemMulti-axisController CL:Puck CP: CL:SimpleHapticController uint8_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerRepeatCount; // Usage 0x000E0024: Repeat Count, Value = 0 to 255 uint8_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerManualTrigger; // Usage 0x000E0021: Manual Trigger, Value = 1 to 7 uint16_t HAP_SystemMultiaxisControllerPuckSimpleHapticControllerRetriggerPeriod; // Usage 0x000E0025: Retrigger Period, Value = 1 to 2000 } outputReport01_t; //-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 06 07FF (GLOBAL) USAGE_PAGE 0xFF07 Vendor-defined 09 70 (LOCAL) USAGE 0xFF070070 <-- Warning: Undocumented usage (document it by inserting 0070 into file FF07.conf) <-- Error: Usage Modifier COLLECTION item (A1 06) expected for USAGE 0x000A0005 Instance 5 (Usage Modifier Collection) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0xFF070070: Page=Vendor-defined, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE 85 30 (GLOBAL) REPORT_ID 0x30 (48) '0' 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 25 FF (GLOBAL) LOGICAL_MAXIMUM 0xFF (-1) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 09 00 (LOCAL) USAGE 0xFF070000 <-- Info: Consider replacing 09 00 with 08 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 <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) C0 (MAIN) END_COLLECTION Application */ //-------------------------------------------------------------------------------- // Vendor-defined outputReport 30 (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x30 (48) '0' // Collection: CA: uint8_t VEN_0000; // Usage 0xFF070000: , Value = 0 to -1 } outputReport30_t; //-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 09 71 (LOCAL) USAGE 0xFF070071 <-- Warning: Undocumented usage (document it by inserting 0071 into file FF07.conf) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0xFF070071: Page=Vendor-defined, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 FF (GLOBAL) LOGICAL_MAXIMUM 0xFF (-1) <-- Redundant: LOGICAL_MAXIMUM is already -1 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 95 48 (GLOBAL) REPORT_COUNT 0x48 (72) Number of fields 85 2A (GLOBAL) REPORT_ID 0x2A (42) 09 C6 (LOCAL) USAGE 0xFF0700C6 <-- Warning: Undocumented usage (document it by inserting 00C6 into file FF07.conf) 82 0201 (MAIN) INPUT 0x00000102 (72 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 09 C7 (LOCAL) USAGE 0xFF0700C7 <-- Warning: Undocumented usage (document it by inserting 00C7 into file FF07.conf) 92 0201 (MAIN) OUTPUT 0x00000102 (72 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 95 34 (GLOBAL) REPORT_COUNT 0x34 (52) Number of fields 09 C8 (LOCAL) USAGE 0xFF0700C8 <-- Warning: Undocumented usage (document it by inserting 00C8 into file FF07.conf) B2 0301 (MAIN) FEATURE 0x00000103 (52 fields x 8 bits) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer 85 2B (GLOBAL) REPORT_ID 0x2B (43) 09 C9 (LOCAL) USAGE 0xFF0700C9 <-- Warning: Undocumented usage (document it by inserting 00C9 into file FF07.conf) 82 0201 (MAIN) INPUT 0x00000102 (52 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 09 CA (LOCAL) USAGE 0xFF0700CA <-- Warning: Undocumented usage (document it by inserting 00CA into file FF07.conf) 92 0201 (MAIN) OUTPUT 0x00000102 (52 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 09 CB (LOCAL) USAGE 0xFF0700CB <-- Warning: Undocumented usage (document it by inserting 00CB into file FF07.conf) B2 0201 (MAIN) FEATURE 0x00000102 (52 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 1=Buffer <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 17 00000080 (GLOBAL) LOGICAL_MINIMUM 0x80000000 (-2147483648) 27 FFFFFF7F (GLOBAL) LOGICAL_MAXIMUM 0x7FFFFFFF (2147483647) 75 20 (GLOBAL) REPORT_SIZE 0x20 (32) Number of bits per field 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields 85 2C (GLOBAL) REPORT_ID 0x2C (44) 19 CC (LOCAL) USAGE_MINIMUM 0xFF0700CC <-- Warning: Undocumented usage (document it by inserting 00CC into file FF07.conf) 29 CF (LOCAL) USAGE_MAXIMUM 0xFF0700CF <-- Warning: Undocumented usage (document it by inserting 00CF into file FF07.conf) 81 02 (MAIN) INPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields <-- Redundant: REPORT_COUNT is already 4 85 2D (GLOBAL) REPORT_ID 0x2D (45) 19 D8 (LOCAL) USAGE_MINIMUM 0xFF0700D8 <-- Warning: Undocumented usage (document it by inserting 00D8 into file FF07.conf) 29 DB (LOCAL) USAGE_MAXIMUM 0xFF0700DB <-- Warning: Undocumented usage (document it by inserting 00DB into file FF07.conf) 81 02 (MAIN) INPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields <-- Redundant: REPORT_COUNT is already 4 19 DC (LOCAL) USAGE_MINIMUM 0xFF0700DC <-- Warning: Undocumented usage (document it by inserting 00DC into file FF07.conf) 29 DF (LOCAL) USAGE_MAXIMUM 0xFF0700DF <-- Warning: Undocumented usage (document it by inserting 00DF into file FF07.conf) 91 02 (MAIN) OUTPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 19 E0 (LOCAL) USAGE_MINIMUM 0xFF0700E0 <-- Warning: Undocumented usage (document it by inserting 00E0 into file FF07.conf) 29 E3 (LOCAL) USAGE_MAXIMUM 0xFF0700E3 <-- Warning: Undocumented usage (document it by inserting 00E3 into file FF07.conf) B1 02 (MAIN) FEATURE 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 85 2E (GLOBAL) REPORT_ID 0x2E (46) 19 E4 (LOCAL) USAGE_MINIMUM 0xFF0700E4 <-- Warning: Undocumented usage (document it by inserting 00E4 into file FF07.conf) 29 E7 (LOCAL) USAGE_MAXIMUM 0xFF0700E7 <-- Warning: Undocumented usage (document it by inserting 00E7 into file FF07.conf) 81 02 (MAIN) INPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 19 E8 (LOCAL) USAGE_MINIMUM 0xFF0700E8 <-- Warning: Undocumented usage (document it by inserting 00E8 into file FF07.conf) 29 EB (LOCAL) USAGE_MAXIMUM 0xFF0700EB <-- Warning: Undocumented usage (document it by inserting 00EB into file FF07.conf) 91 02 (MAIN) OUTPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 95 0B (GLOBAL) REPORT_COUNT 0x0B (11) Number of fields 19 EC (LOCAL) USAGE_MINIMUM 0xFF0700EC <-- Warning: Undocumented usage (document it by inserting 00EC into file FF07.conf) 29 EF (LOCAL) USAGE_MAXIMUM 0xFF0700EF <-- Warning: Undocumented usage (document it by inserting 00EF into file FF07.conf) B1 02 (MAIN) FEATURE 0x00000002 (11 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 95 04 (GLOBAL) REPORT_COUNT 0x04 (4) Number of fields 85 2F (GLOBAL) REPORT_ID 0x2F (47) 19 F0 (LOCAL) USAGE_MINIMUM 0xFF0700F0 <-- Warning: Undocumented usage (document it by inserting 00F0 into file FF07.conf) 29 F3 (LOCAL) USAGE_MAXIMUM 0xFF0700F3 <-- Warning: Undocumented usage (document it by inserting 00F3 into file FF07.conf) 81 02 (MAIN) INPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 19 F4 (LOCAL) USAGE_MINIMUM 0xFF0700F4 <-- Warning: Undocumented usage (document it by inserting 00F4 into file FF07.conf) 29 F7 (LOCAL) USAGE_MAXIMUM 0xFF0700F7 <-- Warning: Undocumented usage (document it by inserting 00F7 into file FF07.conf) 91 02 (MAIN) OUTPUT 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 19 F8 (LOCAL) USAGE_MINIMUM 0xFF0700F8 <-- Warning: Undocumented usage (document it by inserting 00F8 into file FF07.conf) 29 FB (LOCAL) USAGE_MAXIMUM 0xFF0700FB <-- Warning: Undocumented usage (document it by inserting 00FB into file FF07.conf) B1 02 (MAIN) FEATURE 0x00000002 (4 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap C0 (MAIN) END_COLLECTION Application */ //-------------------------------------------------------------------------------- // Vendor-defined featureReport 2A (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2A (42) // Collection: CA: uint8_t VEN_00C8[52]; // Usage 0xFF0700C8: , Value = 0 to -1 } featureReport2A_t; //-------------------------------------------------------------------------------- // Vendor-defined featureReport 2B (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2B (43) // Collection: CA: uint8_t VEN_00CB[52]; // Usage 0xFF0700CB: , Value = 0 to -1 } featureReport2B_t; //-------------------------------------------------------------------------------- // Vendor-defined featureReport 2D (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2D (45) // Collection: CA: int32_t VEN_00E0; // Usage 0xFF0700E0: , Value = -2147483648 to 2147483647 int32_t VEN_00E1; // Usage 0xFF0700E1: , Value = -2147483648 to 2147483647 int32_t VEN_00E2; // Usage 0xFF0700E2: , Value = -2147483648 to 2147483647 int32_t VEN_00E3; // Usage 0xFF0700E3: , Value = -2147483648 to 2147483647 } featureReport2D_t; //-------------------------------------------------------------------------------- // Vendor-defined featureReport 2E (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2E (46) // Collection: CA: int32_t VEN_00EC; // Usage 0xFF0700EC: , Value = -2147483648 to 2147483647 int32_t VEN_00ED; // Usage 0xFF0700ED: , Value = -2147483648 to 2147483647 int32_t VEN_00EE; // Usage 0xFF0700EE: , Value = -2147483648 to 2147483647 int32_t VEN_00EF[8]; // Usage 0xFF0700EF: , Value = -2147483648 to 2147483647 } featureReport2E_t; //-------------------------------------------------------------------------------- // Vendor-defined featureReport 2F (Device <-> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2F (47) // Collection: CA: int32_t VEN_00F8; // Usage 0xFF0700F8: , Value = -2147483648 to 2147483647 int32_t VEN_00F9; // Usage 0xFF0700F9: , Value = -2147483648 to 2147483647 int32_t VEN_00FA; // Usage 0xFF0700FA: , Value = -2147483648 to 2147483647 int32_t VEN_00FB; // Usage 0xFF0700FB: , Value = -2147483648 to 2147483647 } featureReport2F_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2A (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2A (42) // Collection: CA: uint8_t VEN_00C6[72]; // Usage 0xFF0700C6: , Value = 0 to -1 } inputReport2A_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2B (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2B (43) // Collection: CA: uint8_t VEN_00C9[52]; // Usage 0xFF0700C9: , Value = 0 to -1 } inputReport2B_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2C (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2C (44) // Collection: CA: int32_t VEN_00CC; // Usage 0xFF0700CC: , Value = -2147483648 to 2147483647 int32_t VEN_00CD; // Usage 0xFF0700CD: , Value = -2147483648 to 2147483647 int32_t VEN_00CE; // Usage 0xFF0700CE: , Value = -2147483648 to 2147483647 int32_t VEN_00CF; // Usage 0xFF0700CF: , Value = -2147483648 to 2147483647 } inputReport2C_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2D (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2D (45) // Collection: CA: int32_t VEN_00D8; // Usage 0xFF0700D8: , Value = -2147483648 to 2147483647 int32_t VEN_00D9; // Usage 0xFF0700D9: , Value = -2147483648 to 2147483647 int32_t VEN_00DA; // Usage 0xFF0700DA: , Value = -2147483648 to 2147483647 int32_t VEN_00DB; // Usage 0xFF0700DB: , Value = -2147483648 to 2147483647 } inputReport2D_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2E (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2E (46) // Collection: CA: int32_t VEN_00E4; // Usage 0xFF0700E4: , Value = -2147483648 to 2147483647 int32_t VEN_00E5; // Usage 0xFF0700E5: , Value = -2147483648 to 2147483647 int32_t VEN_00E6; // Usage 0xFF0700E6: , Value = -2147483648 to 2147483647 int32_t VEN_00E7; // Usage 0xFF0700E7: , Value = -2147483648 to 2147483647 } inputReport2E_t; //-------------------------------------------------------------------------------- // Vendor-defined inputReport 2F (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2F (47) // Collection: CA: int32_t VEN_00F0; // Usage 0xFF0700F0: , Value = -2147483648 to 2147483647 int32_t VEN_00F1; // Usage 0xFF0700F1: , Value = -2147483648 to 2147483647 int32_t VEN_00F2; // Usage 0xFF0700F2: , Value = -2147483648 to 2147483647 int32_t VEN_00F3; // Usage 0xFF0700F3: , Value = -2147483648 to 2147483647 } inputReport2F_t; //-------------------------------------------------------------------------------- // Vendor-defined outputReport 2A (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2A (42) // Collection: CA: uint8_t VEN_00C7[72]; // Usage 0xFF0700C7: , Value = 0 to -1 } outputReport2A_t; //-------------------------------------------------------------------------------- // Vendor-defined outputReport 2B (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2B (43) // Collection: CA: uint8_t VEN_00CA[52]; // Usage 0xFF0700CA: , Value = 0 to -1 } outputReport2B_t; //-------------------------------------------------------------------------------- // Vendor-defined outputReport 2D (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2D (45) // Collection: CA: int32_t VEN_00DC; // Usage 0xFF0700DC: , Value = -2147483648 to 2147483647 int32_t VEN_00DD; // Usage 0xFF0700DD: , Value = -2147483648 to 2147483647 int32_t VEN_00DE; // Usage 0xFF0700DE: , Value = -2147483648 to 2147483647 int32_t VEN_00DF; // Usage 0xFF0700DF: , Value = -2147483648 to 2147483647 } outputReport2D_t; //-------------------------------------------------------------------------------- // Vendor-defined outputReport 2E (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2E (46) // Collection: CA: int32_t VEN_00E8; // Usage 0xFF0700E8: , Value = -2147483648 to 2147483647 int32_t VEN_00E9; // Usage 0xFF0700E9: , Value = -2147483648 to 2147483647 int32_t VEN_00EA; // Usage 0xFF0700EA: , Value = -2147483648 to 2147483647 int32_t VEN_00EB; // Usage 0xFF0700EB: , Value = -2147483648 to 2147483647 } outputReport2E_t; //-------------------------------------------------------------------------------- // Vendor-defined outputReport 2F (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x2F (47) // Collection: CA: int32_t VEN_00F4; // Usage 0xFF0700F4: , Value = -2147483648 to 2147483647 int32_t VEN_00F5; // Usage 0xFF0700F5: , Value = -2147483648 to 2147483647 int32_t VEN_00F6; // Usage 0xFF0700F6: , Value = -2147483648 to 2147483647 int32_t VEN_00F7; // Usage 0xFF0700F7: , Value = -2147483648 to 2147483647 } outputReport2F_t; //-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 09 80 (LOCAL) USAGE 0x00010080 System Control (Application Collection) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010080: Page=Generic Desktop Page, Usage=System Control, Type=Application Collection) 85 32 (GLOBAL) REPORT_ID 0x32 (50) '2' 09 82 (LOCAL) USAGE 0x00010082 System Sleep (One Shot Control) 09 83 (LOCAL) USAGE 0x00010083 System Wake Up (One Shot Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 95 02 (GLOBAL) REPORT_COUNT 0x02 (2) Number of fields 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 81 02 (MAIN) INPUT 0x00000002 (2 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 95 06 (GLOBAL) REPORT_COUNT 0x06 (6) Number of fields 81 03 (MAIN) INPUT 0x00000003 (6 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap C0 (MAIN) END_COLLECTION Application */ //-------------------------------------------------------------------------------- // Generic Desktop Page inputReport 32 (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x32 (50) '2' // Collection: CA:SystemControl uint8_t GD_SystemControlSystemSleep : 1; // Usage 0x00010082: System Sleep, Value = 0 to 1 uint8_t GD_SystemControlSystemWakeUp : 1; // Usage 0x00010083: System Wake Up, Value = 0 to 1 uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad uint8_t : 1; // Pad } inputReport32_t; //-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 09 72 (LOCAL) USAGE 0x00010072 <-- Warning: Undocumented usage (document it by inserting 0072 into file 0001.conf) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x00010072: Page=Generic Desktop Page, Usage=, Type=) <-- Error: COLLECTION must be preceded by a known USAGE <-- Warning: USAGE type should be CA (Application Collection) 85 31 (GLOBAL) REPORT_ID 0x31 (49) '1' 95 0A (GLOBAL) REPORT_COUNT 0x0A (10) Number of fields 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 FF (GLOBAL) LOGICAL_MAXIMUM 0xFF (-1) 09 C6 (LOCAL) USAGE 0x000100C6 Wireless Radio Button (On/Off Control) 81 02 (MAIN) INPUT 0x00000002 (10 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) 09 C7 (LOCAL) USAGE 0x000100C7 Wireless Radio LED (On/Off Control) 91 02 (MAIN) OUTPUT 0x00000002 (10 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap <-- Error: LOGICAL_MAXIMUM (-1) is less than LOGICAL_MINIMUM (0) C0 (MAIN) END_COLLECTION Application */ //-------------------------------------------------------------------------------- // Generic Desktop Page inputReport 31 (Device --> Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x31 (49) '1' // Collection: CA: uint8_t GD_WirelessRadioButton[10]; // Usage 0x000100C6: Wireless Radio Button, Value = 0 to -1 } inputReport31_t; //-------------------------------------------------------------------------------- // Generic Desktop Page outputReport 31 (Device <-- Host) //-------------------------------------------------------------------------------- typedef struct { uint8_t reportId; // Report ID = 0x31 (49) '1' // Collection: CA: uint8_t GD_WirelessRadioLed[10]; // Usage 0x000100C7: Wireless Radio LED, Value = 0 to -1 } outputReport31_t;