Estoy tratando de aprender un poco sobre cómo crear un descriptor USB HID en C para un proyecto PIC32 USB que quiero intentar.
He descargado el documento HID Usage Tables de enlace y trato de averiguar dónde se indican los valores reales para diferentes elementos en el descriptor HID.
Permítame explicarlo 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 Escritorio genérico
Estoy tratando de averiguar dónde se indican estos valores en el documento PDF de HID Usage Table. Por ejemplo, no puedo encontrar ninguna referencia que
USAGE_PAGE == 0x05
y por ejemplo
COLLECTION == 0xA1
Intenté 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 usando la Herramienta de descriptor de USB del enlace de arriba.
Me estoy preguntando, ¿estoy totalmente enojado por no ver esta documentación de referencia clave / valor?
Hay muchos ejemplos en línea, como por ejemplo el siguiente enlace: enlace
Pero incluso esto hace referencia a cargas de valores de cadena como END_COLLECTION == 0xc0
¿Dónde encuentro la referencia para estos valores? ¿Qué me estoy perdiendo?