35#define USB_TYPE_DESCRIPTOR_HID      0x21 
   40#define USB_HID_VERSION_BCD          0x0110 
   46#define USB_HID_SUBCLASS_NONE 0x0 
   47#define USB_HID_SUBCLASS_BOOT 0x1 
   54#define USB_HID_PROTOCOL_NONE       0x0 
   55#define USB_HID_PROTOCOL_KEYBOARD   0x1 
   56#define USB_HID_PROTOCOL_MOUSE      0x2 
   63#define USB_HID_DESCR_HID       0x21 
   64#define USB_HID_DESCR_REPORT    0x22 
   65#define USB_HID_DESCR_PHYSICAL  0x23 
   71#define USB_HID_COUNTRY_CODE_NOTSUPPORTED 0x00 
   77#define USB_HID_REQUEST_GET_REPORT    0x01 
   78#define USB_HID_REQUEST_GET_IDLE      0x02 
   79#define USB_HID_REQUEST_GET_PROTOCOL  0x03 
   80#define USB_HID_REQUEST_SET_REPORT    0x09 
   81#define USB_HID_REQUEST_SET_IDLE      0x0a 
   82#define USB_HID_REQUEST_SET_PROTOCOL  0x0b 
   88#define USBUS_HID_EP_IN_REQUIRED_NUMOF   1 
   93#define USBUS_HID_EP_OUT_REQUIRED_NUMOF  1 
  100typedef struct __attribute__((packed)){
 
 
  128#define USB_HID_ITEM_TYPE_MAIN      0x0 
  133#define USB_HID_ITEM_TYPE_GLOBAL        0x1 
  138#define USB_HID_ITEM_TYPE_LOCAL     0x2 
  143#define USB_HID_ITEM_TAG_INPUT      0x8 
  148#define USB_HID_ITEM_TAG_OUTPUT     0x9 
  153#define USB_HID_ITEM_TAG_COLLECTION     0xA 
  158#define USB_HID_ITEM_TAG_FEATURE        0xB 
  163#define USB_HID_ITEM_TAG_COLLECTION_END 0xC 
  168#define USB_HID_ITEM_TAG_USAGE_PAGE     0x0 
  172#define USB_HID_ITEM_TAG_LOGICAL_MIN    0x1 
  177#define USB_HID_ITEM_TAG_LOGICAL_MAX    0x2 
  182#define USB_HID_ITEM_TAG_PHYSICAL_MIN   0x3 
  187#define USB_HID_ITEM_TAG_PHYSICAL_MAX   0x4 
  192#define USB_HID_ITEM_TAG_UNIT_EXPONENT  0x5 
  197#define USB_HID_ITEM_TAG_UNIT       0x6 
  202#define USB_HID_ITEM_TAG_REPORT_SIZE    0x7 
  207#define USB_HID_ITEM_TAG_REPORT_ID      0x8 
  212#define USB_HID_ITEM_TAG_REPORT_COUNT   0x9 
  217#define USB_HID_ITEM_TAG_USAGE      0x0 
  222#define USB_HID_ITEM_TAG_USAGE_MIN      0x1 
  227#define USB_HID_ITEM_TAG_USAGE_MAX      0x2 
  232#define USB_HID_COLLECTION_PHYSICAL     0x00 
  237#define USB_HID_COLLECTION_APPLICATION  0x01 
  242#define USB_HID_COLLECTION_LOGICAL      0x02 
  247#define USB_HID_COLLECTION_REPORT       0x03 
  252#define USB_HID_COLLECTION_NAMED_ARRAY  0x04 
  257#define USB_HID_COLLECTION_USAGE_SWITCH 0x05 
  262#define USB_HID_COLLECTION_USAGE_MOD    0x06 
  271#define USB_HID_ITEM(tag, type, size) \ 
  272    (((tag & 0xF) << 4) | ((type & 0x3) << 2) | (size & 0x3)) 
 
  281#define USB_HID_INPUT(input)  \ 
  282    USB_HID_ITEM(USB_HID_ITEM_TAG_INPUT, USB_HID_ITEM_TYPE_MAIN, 1), \ 
 
  292#define USB_HID_OUTPUT(output) \ 
  293    USB_HID_ITEM(USB_HID_ITEM_TAG_OUTPUT, USB_HID_ITEM_TYPE_MAIN, 1), \ 
 
  303#define USB_HID_FEATURE(feature) \ 
  304    USB_HID_ITEM(USB_HID_ITEM_TAG_FEATURE, USB_HID_ITEM_TYPE_MAIN, 1), \ 
 
  314#define USB_HID_COLLECTION(collection) \ 
  315    USB_HID_ITEM(USB_HID_ITEM_TAG_COLLECTION, USB_HID_ITEM_TYPE_MAIN, 1), \ 
 
  321#define USB_HID_END_COLLECTION \ 
  322    USB_HID_ITEM(USB_HID_ITEM_TAG_COLLECTION_END, USB_HID_ITEM_TYPE_MAIN, 0) 
 
  331#define USB_HID_USAGE_PAGE(page) \ 
  332    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_PAGE, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  342#define USB_HID_USAGE_PAGE16(page) \ 
  343    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_PAGE, USB_HID_ITEM_TYPE_GLOBAL, 2), \ 
  344    page & 0xff, (page >> 8) 
 
  353#define USB_HID_LOGICAL_MIN8(minimum) \ 
  354    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MIN, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  364#define USB_HID_LOGICAL_MIN16(minimum) \ 
  365    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MIN, USB_HID_ITEM_TYPE_GLOBAL, 2), \ 
  366    minimum & 0xff, (minimum >> 8) 
 
  375#define USB_HID_LOGICAL_MIN32(minimum) \ 
  376    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MIN, USB_HID_ITEM_TYPE_GLOBAL, 3), \ 
  378    (minimum >> 8) & 0xff, \ 
  379    (minimum >> 16) & 0xff, \ 
  380    (minimum >> 24) & 0xff 
 
  389#define USB_HID_LOGICAL_MAX8(maximum) \ 
  390    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MAX, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  400#define USB_HID_LOGICAL_MAX16(maximum) \ 
  401    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MAX, USB_HID_ITEM_TYPE_GLOBAL, 2), \ 
  402    (maximum & 0xff), (maximum >> 8) 
 
  411#define USB_HID_LOGICAL_MAX32(maximum) \ 
  412    USB_HID_ITEM(USB_HID_ITEM_TAG_LOGICAL_MAX, USB_HID_ITEM_TYPE_GLOBAL, 3), \ 
  414    (maximum >> 8) & 0xff, \ 
  415    (maximum >> 16) & 0xff, \ 
  416    (maximum >> 24) & 0xff 
 
  425#define USB_HID_REPORT_SIZE(size)       \ 
  426    USB_HID_ITEM(USB_HID_ITEM_TAG_REPORT_SIZE, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  436#define USB_HID_REPORT_ID(id)       \ 
  437    USB_HID_ITEM(USB_HID_ITEM_TAG_REPORT_ID, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  447#define USB_HID_REPORT_COUNT(count)     \ 
  448    USB_HID_ITEM(USB_HID_ITEM_TAG_REPORT_COUNT, USB_HID_ITEM_TYPE_GLOBAL, 1), \ 
 
  458#define USB_HID_USAGE(index)            \ 
  459    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE, USB_HID_ITEM_TYPE_LOCAL, 1), \ 
 
  469#define USB_HID_USAGE_MIN8(start)       \ 
  470    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_MIN, USB_HID_ITEM_TYPE_LOCAL, 1), \ 
 
  480#define USB_HID_USAGE_MIN16(start)      \ 
  481    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_MIN, USB_HID_ITEM_TYPE_LOCAL, 2), \ 
  482    start & 0xff, (start >> 8) & 0xff 
 
  491#define USB_HID_USAGE_MAX8(end)     \ 
  492    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_MAX, USB_HID_ITEM_TYPE_LOCAL, 1), \ 
 
  502#define USB_HID_USAGE_MAX16(end)      \ 
  503    USB_HID_ITEM(USB_HID_ITEM_TAG_USAGE_MAX, USB_HID_ITEM_TYPE_LOCAL, 2), \ 
  504    end & 0xff, (end >> 8) & 0xff 
 
Definition for USB HID usage tables.
USB HID descriptor struct.
uint8_t report_type
Type of HID class report.
uint8_t country_code
Numeric expression identifying country code of the localized hardware.
uint16_t report_length
the total size of the Report descriptor.
uint8_t desc_type
Constant name specifying type of HID descriptor.
uint8_t length
Numeric expression that is the total size of the HID descriptor.
uint16_t bcd_hid
Numeric expression identifying the HID Class Specification release.
uint8_t num_descrs
Numeric expression specifying the number of class descriptors.