Estoy tratando de educarme un poco en la creación de un descriptor HID USB en C para un proyecto USB PIC32 que quiero intentar.
Descargué el documento de Tablas de uso de HID de http://www.usb.org/developers/hidpage/ y traté de averiguar dónde se indican los valores reales para diferentes elementos en el descriptor de HID.
Permítanme explicar con un extracto de la muestra que estoy viendo:
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)
// ...
Del ejemplo anterior, está claro que la matriz BYTE está constituida por pares clave / valor, si puedo llamarlo así. Por ejemplo, la segunda línea: 0x05,0x01 indica la clave 0x05, que es la página de uso , y 0x01 es el valor que indica el escritorio genérico
Estoy tratando de averiguar dónde se indican estos valores en el documento PDF de la tabla de uso de HID. Por ejemplo, no puedo encontrar ninguna referencia que
USAGE_PAGE == 0x05
y por ejemplo
COLLECTION == 0xA1
Traté de buscar en el PDF 0xA1, sin resultado. La única forma en que puedo averiguar cuáles son los valores es mirando los comentarios del ejemplo o utilizando la herramienta Descriptor USB desde el enlace de arriba.
Me pregunto, ¿estoy completamente tonto por perder esta documentación de referencia de clave / valor?
Hay muchos ejemplos en línea, como por ejemplo el siguiente enlace: http://www.frank-zhao.com/cache/hid_tutorial_1.php
Pero incluso esto hace referencia a un montón de valores de cadena como END_COLLECTION == 0xc0
¿Dónde encuentro la referencia para estos valores? ¿Qué me estoy perdiendo?