Я пытаюсь немного научиться создавать дескриптор USB HID в C для проекта USB PIC32, который я хочу попробовать.
Я скачал документ Таблицы использования HID с http://www.usb.org/developers/hidpage/ и пытаюсь выяснить, где указаны фактические значения для различных элементов в дескрипторе HID.
Позвольте мне объяснить с выдержкой из образца, на который я смотрю:
ROM struct{BYTE report[HID_RPT01_SIZE];}hid_rpt01={{
0x05,0x01, // USAGE_PAGE (Generic Desktop)
0x09,0x05, // USAGE (Game Pad)
0xA1,0x01, // COLLECTION (Application)
0x15,0x00, // LOGICAL_MINIMUM(0)
0x25,0x01, // LOGICAL_MAXIMUM(1)
0x35,0x00, // PHYSICAL_MINIMUM(0)
0x45,0x01, // PHYSICAL_MAXIMUM(1)
// ...
Из приведенного выше примера ясно, что массив BYTE состоит из пар ключ / значение, если можно так назвать. Например, 2-я строка: 0x05,0x01 обозначает ключ 0x05, который является страницей использования , а 0x01 - это значение, обозначающее Generic Desktop.
Я пытаюсь выяснить, где эти значения указаны в PDF-документе таблицы использования HID. Например, я не могу найти ссылку, что
USAGE_PAGE == 0x05
и например
COLLECTION == 0xA1
Я пытался найти PDF для 0xA1, безрезультатно. Единственный способ узнать, что это за значения, - это посмотреть комментарии к примеру или воспользоваться инструментом дескриптора USB по ссылке выше.
Мне просто интересно, неужели я совершенно безумен за то, что пропустил эту справочную документацию ключ / значение?
В сети есть множество примеров, например, следующая ссылка: http://www.frank-zhao.com/cache/hid_tutorial_1.php
Но даже это ссылается на множество строковых значений, таких как END_COLLECTION == 0xc0
Где я могу найти ссылку на эти значения? Что мне не хватает?