Делаю custom hid device, перерыл кучу инфы и примеров по hid'у и если с дескрипторами девайсов-конфигов-интерфесов-эндпоинтов все ясно, то никак не могу въехать по какому принципу пишется репорт дескриптор. Пересмотрел много вариантов, у всех по-разному, в т.ч. смотрел на хабре вот это STM32 и USB-HID — это просто
Скачал прогу-генератор репорт-дескриптора. Начало он мне выдал несколько иное (почему???), нежели по ссылке или то, что находил.
В кратце: 1 эндпоинт, транзакция в 24 байта (массив float'ов, записанный ввиде байтового набора), буферизация (я так понял - лучше сделать?), usage vendor defined, всего 1 репорт. Параграф 6.2.2 спец-фии hid прочел, но как-то туго пока понимание приходит.
В общем вопрос к знатокам: правильно ли я делаю и будет ли оно работать?
Вот сам дескриптор:
Код
const BYTE HID_Report_Descriptor [sizeof(HID_Report_Descriptor)] =
{
0x05, 0x01 // usage page (generic desktop)
0x0b, 0x01, 0x00,0x00, 0xff, // usage (vendor defined usage 1)
0xa1, 0x01, // collection (application)
0x85, 0x01, // report id (1)
0x0b, 0x01, 0x00,0x00, 0xff, // usage (vendor defined usage 1)
0x15, 0x00, // logical minimum (0)
0x26, 0xff, 0x00, // logical maximum (255)
0x75, 0x08, // report size (8)
0x95, 0x18, // report count (24)
0x82, 0x82, 0x01, // input (data, variable, abs, buf)
0xc0 // end collection
};
{
0x05, 0x01 // usage page (generic desktop)
0x0b, 0x01, 0x00,0x00, 0xff, // usage (vendor defined usage 1)
0xa1, 0x01, // collection (application)
0x85, 0x01, // report id (1)
0x0b, 0x01, 0x00,0x00, 0xff, // usage (vendor defined usage 1)
0x15, 0x00, // logical minimum (0)
0x26, 0xff, 0x00, // logical maximum (255)
0x75, 0x08, // report size (8)
0x95, 0x18, // report count (24)
0x82, 0x82, 0x01, // input (data, variable, abs, buf)
0xc0 // end collection
};