Hey guys, i recently bought a nrf52 DK to implement a gateway between a usb touch monitor to a device such as a android or a computer.my approach is recovering the hid raw frame with a raspberry pi and send it by uart to the bluetooth module, and put it in the data struture correspondent and send it as hid examples in SDK.
I can now receive hid raw frame in the nrf52DK as an char array as you can see in the following picture. My code is an adapted code of the uart example of the last SDK, its receiving 124char corresponding to 62byte data frame of my usb hid frame.
![]()
This is my data struture that i got with an hid tool
//--------------------------------------------------------------------------------
// Digitizer Device Page featureReport 02 (Device <-> Host)
//--------------------------------------------------------------------------------
typedef struct
{
uint8_t reportId; // Report ID = 0x02 (2)
// Collection: CA:TouchScreen
uint8_t DIG_TouchScreenContactCountMaximum; // Usage 0x000D0055: Contact Count Maximum, Value = 0 to 10
} featureReport02_t;
//--------------------------------------------------------------------------------
// Digitizer Device Page inputReport 02 (Device --> Host)
//--------------------------------------------------------------------------------
typedef struct inputReport02_t
{
uint8_t reportId; // Report ID = 0x02 (2)
// Collection: CA:TouchScreen CL:Finger
uint8_t DIG_TouchScreenFingerTipSwitch : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenFingerInRange : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenFingerConfidence : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenFingerContactIdentifier; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenFingerX; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenFingerY; // Usage 0x00010031: Y, Value = 0 to 32767
// Collection: CA:TouchScreen CL:
uint8_t DIG_TouchScreenTipSwitch : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_1 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_1 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_1 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_1; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_1; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_1; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_2 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_2 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_2 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_2; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_2; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_2; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_3 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_3 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_3 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_3; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_3; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_3; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_4 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_4 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_4 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_4; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_4; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_4; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_5 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_5 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_5 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_5; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_5; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_5; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_6 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_6 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_6 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_6; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_6; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_6; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_7 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_7 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_7 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_7; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_7; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_7; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_8 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_8 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_8 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_8; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_8; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_8; // Usage 0x00010031: Y, Value = 0 to 32767
uint8_t DIG_TouchScreenTipSwitch_9 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_9 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_9 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_9; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_9; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_9;
uint8_t DIG_TouchScreenTipSwitch_10 : 1; // Usage 0x000D0042: Tip Switch, Value = 0 to 1
uint8_t DIG_TouchScreenInRange_10 : 1; // Usage 0x000D0032: In Range, Value = 0 to 1
uint8_t DIG_TouchScreenConfidence_10 : 1; // Usage 0x000D0047: Confidence, 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 DIG_TouchScreenContactIdentifier_10; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
uint16_t GD_TouchScreenX_10; // Usage 0x00010030: X, Value = 0 to 32767
uint16_t GD_TouchScreenY_10;
// Collection: CA:TouchScreen
uint8_t DIG_TouchScreenContactCount; // Usage 0x000D0054: Contact Count, Value = 0 to 32767
} inputReport02_t;
and this is my hex file
//-------------------------------------------------------------------------------- // Decoded Application Collection //-------------------------------------------------------------------------------- /* 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 04 (LOCAL) USAGE 0x000D0004 Touch Screen (Application Collection) A1 01 (MAIN) COLLECTION 0x01 Application (Usage=0x000D0004: Page=Digitizer Device Page, Usage=Touch Screen, Type=Application Collection) 85 02 (GLOBAL) REPORT_ID 0x02 (2) 09 22 (LOCAL) USAGE 0x000D0022 Finger (Logical Collection) A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x000D0022: Page=Digitizer Device Page, Usage=Finger, Type=Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page <-- Redundant: USAGE_PAGE is already 0x000D 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 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 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 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 A1 02 (MAIN) COLLECTION 0x02 Logical (Usage=0x0: Page=, Usage=, Type=) <-- Error: COLLECTION must be preceded by a USAGE <-- Warning: USAGE type should be CL (Logical Collection) 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 42 (LOCAL) USAGE 0x000D0042 Tip Switch (Momentary Control) 15 00 (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 25 01 (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) 75 01 (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields <-- Redundant: REPORT_COUNT is already 1 81 02 (MAIN) INPUT 0x00000002 (1 field x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 09 32 (LOCAL) USAGE 0x000D0032 In Range (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 09 47 (LOCAL) USAGE 0x000D0047 Confidence (Dynamic Value) 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 05 (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields 81 03 (MAIN) INPUT 0x00000003 (5 fields x 1 bit) 1=Constant 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 75 08 (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field 09 51 (LOCAL) USAGE 0x000D0051 Contact Identifier (Dynamic Value) 95 01 (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields 81 02 (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 05 01 (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page 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) 75 10 (GLOBAL) REPORT_SIZE 0x10 (16) Number of bits per field 09 30 (LOCAL) USAGE 0x00010030 X (Dynamic Value) 81 02 (MAIN) INPUT 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 31 (LOCAL) USAGE 0x00010031 Y (Dynamic Value) 81 02 (MAIN) INPUT 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 05 0D (GLOBAL) USAGE_PAGE 0x000D Digitizer Device Page 09 54 (LOCAL) USAGE 0x000D0054 Contact Count (Dynamic Value) 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 81 02 (MAIN) INPUT 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: REPORT_SIZE (8) is too small for LOGICAL_MAXIMUM (32767) which needs 15 bits. 09 55 (LOCAL) USAGE 0x000D0055 Contact Count Maximum (Static Value) 25 0A (GLOBAL) LOGICAL_MAXIMUM 0x0A (10) 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 C0 (MAIN) END_COLLECTION Application */
but now my problem is: how to "fill" my data structure with the data that i'm receiving?