Доброго времени суток всем.
Битый час маюсь над проблемой с HID дескриптором. Имеется HID Report Descriptor:
const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
{
0x06, 0xff, 0x00, /* USAGE_PAGE (Vendor Page: 0x00FF) */
0x09, 0x01, /* USAGE (Demo Kit) */
0xa1, 0x01, /* COLLECTION (Application) */
/* 7 */
0xa1, 0x03, /* COLLECTION (Report 1) */
/* Data, device --> host (INPUT) */
0x85, 0x01, /* REPORT_ID (1) */
0x09, 0x01, /* USAGE (DATA TO HOST) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0xff, 0xff, /* LOGICAL_MAXIMUM (65535) */
0x75, 0x10, /* REPORT_SIZE (16) */
0x95, 0x01, /* REPORT_COUT (1) */
0x81, 0x02, /* INPUT (Data,Var,Abs) */
0xc0, /* END_COLLECTION */
/* 25 */
0xa1, 0x03, /* COLLECTION (Report 2) */
/* Current mode, device --> host (INPUT) */
0x85, 0x02, /* REPORT_ID (2) */
0x09, 0x02, /* USAGE (MODE TO HOST) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x01, /* REPORT_COUT (1) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0x00, 0x07, /* LOGICAL_MAXIMUM (7) */
0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
0xc0, /* END_COLLECTION */
/* 43 */
0xa1, 0x03, /* COLLECTION (Report 3) */
/* Table, device <-- host (OUTPUT) */
0x85, 0x03, /* REPORT_ID (3) */
0x09, 0x03, /* USAGE (TABLE TO DEVICE) */
0x75, 0x10, /* REPORT_SIZE (16) */
0x95, 0x02, /* REPORT_COUT (2) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0xff, 0xff, /* LOGICAL_MAXIMUM (65535) */
0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
0xc0, /* END_COLLECTION */
/* 61 */
0xa1, 0x03, /* COLLECTION (Report 4) */
/* Required mode, device <-- host (OUTPUT) */
0x85, 0x04, /* REPORT_ID (4) */
0x09, 0x04, /* USAGE (MODE TO DEVICE) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x01, /* REPORT_COUT (1) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0x00, 0x07, /* LOGICAL_MAXIMUM (7) */
0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
0xc0, /* END_COLLECTION */
/* 79 */
0xa1, 0x03, /* COLLECTION (Report 5) */
/* CRC and angles, device --> host (INPUT) */
0x85, 0x05, /* REPORT_ID (5) */
0x09, 0x05, /* USAGE (CRC TO HOST) */
0x75, 0x10, /* REPORT_SIZE (16) */
0x95, 0x02, /* REPORT_COUT (2) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0xff, 0xff, /* LOGICAL_MAXIMUM (65535) */
0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
0x85, 0x05, /* REPORT_ID (5) */
0x09, 0x05, /* USAGE (CRC TO HOST) */
0x81, 0x02, /* INPUT (Data,Var,Abs) */
0xc0, /* END_COLLECTION */
/* 97 */
0xc0 /* END_COLLECTION */
/* 98 */
}; /* CustomHID_ReportDescriptor */
По каким-то причинам, когда я меняю любое этих этих двух полей
0x75, 0x10, /* REPORT_SIZE (16) */
0x95, 0x02, /* REPORT_COUT (2) */
у одного из Report 5 или Report 1, то размер меняется у обоих, когда я принимаю пакеты на хосте. Более того эти пакеты пусты, т.е. Raw data там вообще не отображается. Использую USBLyzer для отладки.
Что не так? Подозреваю что проблема в корявости написанного мной дескриптора.
UPD1: Я кое-что проморгал — если я меняю REPORT 5, то вместе с ним меняется REPORT 1, но не наоборот.