Estou tentando me educar um pouco na criação de um descritor USB HID em C para um projeto USB PIC32 que quero tentar.
Fiz o download do documento HID Usage Tables em http://www.usb.org/developers/hidpage/ e tentei descobrir onde os valores reais são indicados para diferentes elementos no descritor HID.
Deixe-me explicar com um trecho da amostra que estou vendo:
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)
// ...
A partir do exemplo acima, é claro que a matriz BYTE é constituída de pares chave / valor, se assim posso chamar. Por exemplo, a segunda linha: 0x05,0x01 indica a chave 0x05, que é a Página de Uso , e 0x01 é o valor que indica Área de Trabalho Genérica
Estou tentando descobrir onde esses valores são indicados no documento PDF da tabela de uso da HID. Por exemplo, não encontro nenhuma referência que
USAGE_PAGE == 0x05
e por exemplo
COLLECTION == 0xA1
Tentei pesquisar no PDF por 0xA1, sem resultado. A única maneira de descobrir quais são os valores é observando os comentários do exemplo ou usando a USB Descriptor Tool no link acima.
Só estou me perguntando, estou totalmente louco por perder essa documentação de referência de chave / valor?
Existem muitos exemplos online, como por exemplo o seguinte link: http://www.frank-zhao.com/cache/hid_tutorial_1.php
Mas mesmo isso faz referência a cargas de valores de sequência como END_COLLECTION == 0xc0
Onde encontro a referência para esses valores? o que estou perdendo?