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 
  100 typedef 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.