27#ifndef TUSB_HID_DEVICE_H_ 
   28#define TUSB_HID_DEVICE_H_ 
   40#if !defined(CFG_TUD_HID_EP_BUFSIZE) & defined(CFG_TUD_HID_BUFSIZE) 
   43  #define CFG_TUD_HID_EP_BUFSIZE  CFG_TUD_HID_BUFSIZE 
   46#ifndef CFG_TUD_HID_EP_BUFSIZE 
   47  #define CFG_TUD_HID_EP_BUFSIZE     64 
   80bool tud_hid_n_gamepad_report(uint8_t 
instance, uint8_t report_id, int8_t x, int8_t y, int8_t z, int8_t rz, int8_t rx, int8_t ry, uint8_t hat, uint32_t buttons);
 
   97TU_ATTR_ALWAYS_INLINE 
static inline bool tud_hid_report(uint8_t report_id, 
void const* report, uint16_t len) {
 
 
  101TU_ATTR_ALWAYS_INLINE 
static inline bool tud_hid_keyboard_report(uint8_t report_id, uint8_t modifier, 
const uint8_t keycode[6]) {
 
 
  105TU_ATTR_ALWAYS_INLINE 
static inline bool tud_hid_mouse_report(uint8_t report_id, uint8_t buttons, int8_t x, int8_t y, int8_t vertical, int8_t horizontal) {
 
 
  109TU_ATTR_ALWAYS_INLINE 
static inline bool tud_hid_abs_mouse_report(uint8_t report_id, uint8_t buttons, int16_t x, int16_t y, int8_t vertical, int8_t horizontal) {
 
 
  113TU_ATTR_ALWAYS_INLINE 
static inline bool tud_hid_gamepad_report(uint8_t report_id, int8_t x, int8_t y, int8_t z, int8_t rz, int8_t rx, int8_t ry, uint8_t hat, uint32_t buttons) {
 
 
  170#define TUD_HID_REPORT_DESC_KEYBOARD(...) \ 
  171  HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP     )                    ,\ 
  172  HID_USAGE      ( HID_USAGE_DESKTOP_KEYBOARD )                    ,\ 
  173  HID_COLLECTION ( HID_COLLECTION_APPLICATION )                    ,\ 
  177    HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD )                     ,\ 
  178      HID_USAGE_MIN    ( 224                                    )  ,\ 
  179      HID_USAGE_MAX    ( 231                                    )  ,\ 
  180      HID_LOGICAL_MIN  ( 0                                      )  ,\ 
  181      HID_LOGICAL_MAX  ( 1                                      )  ,\ 
  182      HID_REPORT_COUNT ( 8                                      )  ,\ 
  183      HID_REPORT_SIZE  ( 1                                      )  ,\ 
  184      HID_INPUT        ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE )  ,\ 
  186      HID_REPORT_COUNT ( 1                                      )  ,\ 
  187      HID_REPORT_SIZE  ( 8                                      )  ,\ 
  188      HID_INPUT        ( HID_CONSTANT                           )  ,\ 
  190    HID_USAGE_PAGE  ( HID_USAGE_PAGE_LED                   )       ,\ 
  191      HID_USAGE_MIN    ( 1                                       ) ,\ 
  192      HID_USAGE_MAX    ( 5                                       ) ,\ 
  193      HID_REPORT_COUNT ( 5                                       ) ,\ 
  194      HID_REPORT_SIZE  ( 1                                       ) ,\ 
  195      HID_OUTPUT       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE  ) ,\ 
  197      HID_REPORT_COUNT ( 1                                       ) ,\ 
  198      HID_REPORT_SIZE  ( 3                                       ) ,\ 
  199      HID_OUTPUT       ( HID_CONSTANT                            ) ,\ 
  201    HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD )                     ,\ 
  202      HID_USAGE_MIN    ( 0                                   )     ,\ 
  203      HID_USAGE_MAX_N  ( 255, 2                              )     ,\ 
  204      HID_LOGICAL_MIN  ( 0                                   )     ,\ 
  205      HID_LOGICAL_MAX_N( 255, 2                              )     ,\ 
  206      HID_REPORT_COUNT ( 6                                   )     ,\ 
  207      HID_REPORT_SIZE  ( 8                                   )     ,\ 
  208      HID_INPUT        ( HID_DATA | HID_ARRAY | HID_ABSOLUTE )     ,\ 
  212#define TUD_HID_REPORT_DESC_MOUSE(...) \ 
  213  HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP      )                   ,\ 
  214  HID_USAGE      ( HID_USAGE_DESKTOP_MOUSE     )                   ,\ 
  215  HID_COLLECTION ( HID_COLLECTION_APPLICATION  )                   ,\ 
  218    HID_USAGE      ( HID_USAGE_DESKTOP_POINTER )                   ,\ 
  219    HID_COLLECTION ( HID_COLLECTION_PHYSICAL   )                   ,\ 
  220      HID_USAGE_PAGE  ( HID_USAGE_PAGE_BUTTON  )                   ,\ 
  221        HID_USAGE_MIN   ( 1                                      ) ,\ 
  222        HID_USAGE_MAX   ( 5                                      ) ,\ 
  223        HID_LOGICAL_MIN ( 0                                      ) ,\ 
  224        HID_LOGICAL_MAX ( 1                                      ) ,\ 
  226        HID_REPORT_COUNT( 5                                      ) ,\ 
  227        HID_REPORT_SIZE ( 1                                      ) ,\ 
  228        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  230        HID_REPORT_COUNT( 1                                      ) ,\ 
  231        HID_REPORT_SIZE ( 3                                      ) ,\ 
  232        HID_INPUT       ( HID_CONSTANT                           ) ,\ 
  233      HID_USAGE_PAGE  ( HID_USAGE_PAGE_DESKTOP )                   ,\ 
  235        HID_USAGE       ( HID_USAGE_DESKTOP_X                    ) ,\ 
  236        HID_USAGE       ( HID_USAGE_DESKTOP_Y                    ) ,\ 
  237        HID_LOGICAL_MIN ( 0x81                                   ) ,\ 
  238        HID_LOGICAL_MAX ( 0x7f                                   ) ,\ 
  239        HID_REPORT_COUNT( 2                                      ) ,\ 
  240        HID_REPORT_SIZE ( 8                                      ) ,\ 
  241        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_RELATIVE ) ,\ 
  243        HID_USAGE       ( HID_USAGE_DESKTOP_WHEEL                )  ,\ 
  244        HID_LOGICAL_MIN ( 0x81                                   )  ,\ 
  245        HID_LOGICAL_MAX ( 0x7f                                   )  ,\ 
  246        HID_REPORT_COUNT( 1                                      )  ,\ 
  247        HID_REPORT_SIZE ( 8                                      )  ,\ 
  248        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_RELATIVE )  ,\ 
  249      HID_USAGE_PAGE  ( HID_USAGE_PAGE_CONSUMER ), \ 
  251        HID_USAGE_N     ( HID_USAGE_CONSUMER_AC_PAN, 2           ), \ 
  252        HID_LOGICAL_MIN ( 0x81                                   ), \ 
  253        HID_LOGICAL_MAX ( 0x7f                                   ), \ 
  254        HID_REPORT_COUNT( 1                                      ), \ 
  255        HID_REPORT_SIZE ( 8                                      ), \ 
  256        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), \ 
  257    HID_COLLECTION_END                                            , \ 
  261#define TUD_HID_REPORT_DESC_ABSMOUSE(...) \ 
  262  HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP      )                   ,\ 
  263  HID_USAGE      ( HID_USAGE_DESKTOP_MOUSE     )                   ,\ 
  264  HID_COLLECTION ( HID_COLLECTION_APPLICATION  )                   ,\ 
  267    HID_USAGE      ( HID_USAGE_DESKTOP_POINTER )                   ,\ 
  268    HID_COLLECTION ( HID_COLLECTION_PHYSICAL   )                   ,\ 
  269      HID_USAGE_PAGE  ( HID_USAGE_PAGE_BUTTON  )                   ,\ 
  270        HID_USAGE_MIN   ( 1                                      ) ,\ 
  271        HID_USAGE_MAX   ( 5                                      ) ,\ 
  272        HID_LOGICAL_MIN ( 0                                      ) ,\ 
  273        HID_LOGICAL_MAX ( 1                                      ) ,\ 
  275        HID_REPORT_COUNT( 5                                      ) ,\ 
  276        HID_REPORT_SIZE ( 1                                      ) ,\ 
  277        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  279        HID_REPORT_COUNT( 1                                      ) ,\ 
  280        HID_REPORT_SIZE ( 3                                      ) ,\ 
  281        HID_INPUT       ( HID_CONSTANT                           ) ,\ 
  282      HID_USAGE_PAGE  ( HID_USAGE_PAGE_DESKTOP )                   ,\ 
  284        HID_USAGE       ( HID_USAGE_DESKTOP_X                    ) ,\ 
  285        HID_USAGE       ( HID_USAGE_DESKTOP_Y                    ) ,\ 
  286        HID_LOGICAL_MIN  ( 0x00                                ) ,\ 
  287        HID_LOGICAL_MAX_N( 0x7FFF, 2                           ) ,\ 
  288        HID_REPORT_SIZE  ( 16                                  ) ,\ 
  289        HID_REPORT_COUNT ( 2                                   ) ,\ 
  290        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  292        HID_USAGE       ( HID_USAGE_DESKTOP_WHEEL                )  ,\ 
  293        HID_LOGICAL_MIN ( 0x81                                   )  ,\ 
  294        HID_LOGICAL_MAX ( 0x7f                                   )  ,\ 
  295        HID_REPORT_COUNT( 1                                      )  ,\ 
  296        HID_REPORT_SIZE ( 8                                      )  ,\ 
  297        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_RELATIVE )  ,\ 
  298      HID_USAGE_PAGE  ( HID_USAGE_PAGE_CONSUMER ), \ 
  300        HID_USAGE_N     ( HID_USAGE_CONSUMER_AC_PAN, 2           ), \ 
  301        HID_LOGICAL_MIN ( 0x81                                   ), \ 
  302        HID_LOGICAL_MAX ( 0x7f                                   ), \ 
  303        HID_REPORT_COUNT( 1                                      ), \ 
  304        HID_REPORT_SIZE ( 8                                      ), \ 
  305        HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), \ 
  306    HID_COLLECTION_END                                            , \ 
  310#define TUD_HID_REPORT_DESC_CONSUMER(...) \ 
  311  HID_USAGE_PAGE ( HID_USAGE_PAGE_CONSUMER    )              ,\ 
  312  HID_USAGE      ( HID_USAGE_CONSUMER_CONTROL )              ,\ 
  313  HID_COLLECTION ( HID_COLLECTION_APPLICATION )              ,\ 
  316    HID_LOGICAL_MIN  ( 0x00                                ) ,\ 
  317    HID_LOGICAL_MAX_N( 0x03FF, 2                           ) ,\ 
  318    HID_USAGE_MIN    ( 0x00                                ) ,\ 
  319    HID_USAGE_MAX_N  ( 0x03FF, 2                           ) ,\ 
  320    HID_REPORT_COUNT ( 1                                   ) ,\ 
  321    HID_REPORT_SIZE  ( 16                                  ) ,\ 
  322    HID_INPUT        ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ) ,\ 
  331#define TUD_HID_REPORT_DESC_SYSTEM_CONTROL(...) \ 
  332  HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP           )        ,\ 
  333  HID_USAGE      ( HID_USAGE_DESKTOP_SYSTEM_CONTROL )        ,\ 
  334  HID_COLLECTION ( HID_COLLECTION_APPLICATION       )        ,\ 
  338    HID_LOGICAL_MIN  ( 1                                   ) ,\ 
  339    HID_LOGICAL_MAX  ( 3                                   ) ,\ 
  340    HID_REPORT_COUNT ( 1                                   ) ,\ 
  341    HID_REPORT_SIZE  ( 2                                   ) ,\ 
  342    HID_USAGE        ( HID_USAGE_DESKTOP_SYSTEM_POWER_DOWN ) ,\ 
  343    HID_USAGE        ( HID_USAGE_DESKTOP_SYSTEM_SLEEP      ) ,\ 
  344    HID_USAGE        ( HID_USAGE_DESKTOP_SYSTEM_WAKE_UP    ) ,\ 
  345    HID_INPUT        ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ) ,\ 
  347    HID_REPORT_COUNT ( 1                                   ) ,\ 
  348    HID_REPORT_SIZE  ( 6                                   ) ,\ 
  349    HID_INPUT        ( HID_CONSTANT                        ) ,\ 
  355#define TUD_HID_REPORT_DESC_GAMEPAD(...) \ 
  356  HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP     )                 ,\ 
  357  HID_USAGE      ( HID_USAGE_DESKTOP_GAMEPAD  )                 ,\ 
  358  HID_COLLECTION ( HID_COLLECTION_APPLICATION )                 ,\ 
  362    HID_USAGE_PAGE     ( HID_USAGE_PAGE_DESKTOP                 ) ,\ 
  363    HID_USAGE          ( HID_USAGE_DESKTOP_X                    ) ,\ 
  364    HID_USAGE          ( HID_USAGE_DESKTOP_Y                    ) ,\ 
  365    HID_USAGE          ( HID_USAGE_DESKTOP_Z                    ) ,\ 
  366    HID_USAGE          ( HID_USAGE_DESKTOP_RZ                   ) ,\ 
  367    HID_USAGE          ( HID_USAGE_DESKTOP_RX                   ) ,\ 
  368    HID_USAGE          ( HID_USAGE_DESKTOP_RY                   ) ,\ 
  369    HID_LOGICAL_MIN    ( 0x81                                   ) ,\ 
  370    HID_LOGICAL_MAX    ( 0x7f                                   ) ,\ 
  371    HID_REPORT_COUNT   ( 6                                      ) ,\ 
  372    HID_REPORT_SIZE    ( 8                                      ) ,\ 
  373    HID_INPUT          ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  375    HID_USAGE_PAGE     ( HID_USAGE_PAGE_DESKTOP                 ) ,\ 
  376    HID_USAGE          ( HID_USAGE_DESKTOP_HAT_SWITCH           ) ,\ 
  377    HID_LOGICAL_MIN    ( 1                                      ) ,\ 
  378    HID_LOGICAL_MAX    ( 8                                      ) ,\ 
  379    HID_PHYSICAL_MIN   ( 0                                      ) ,\ 
  380    HID_PHYSICAL_MAX_N ( 315, 2                                 ) ,\ 
  381    HID_REPORT_COUNT   ( 1                                      ) ,\ 
  382    HID_REPORT_SIZE    ( 8                                      ) ,\ 
  383    HID_INPUT          ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  385    HID_USAGE_PAGE     ( HID_USAGE_PAGE_BUTTON                  ) ,\ 
  386    HID_USAGE_MIN      ( 1                                      ) ,\ 
  387    HID_USAGE_MAX      ( 32                                     ) ,\ 
  388    HID_LOGICAL_MIN    ( 0                                      ) ,\ 
  389    HID_LOGICAL_MAX    ( 1                                      ) ,\ 
  390    HID_REPORT_COUNT   ( 32                                     ) ,\ 
  391    HID_REPORT_SIZE    ( 1                                      ) ,\ 
  392    HID_INPUT          ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  398#define TUD_HID_REPORT_DESC_FIDO_U2F(report_size, ...) \ 
  399  HID_USAGE_PAGE_N ( HID_USAGE_PAGE_FIDO, 2                    ) ,\ 
  400  HID_USAGE      ( HID_USAGE_FIDO_U2FHID                       ) ,\ 
  401  HID_COLLECTION ( HID_COLLECTION_APPLICATION                  ) ,\ 
  405    HID_USAGE         ( HID_USAGE_FIDO_DATA_IN                 ) ,\ 
  406    HID_LOGICAL_MIN   ( 0                                      ) ,\ 
  407    HID_LOGICAL_MAX_N ( 0xff, 2                                ) ,\ 
  408    HID_REPORT_SIZE   ( 8                                      ) ,\ 
  409    HID_REPORT_COUNT  ( report_size                            ) ,\ 
  410    HID_INPUT         ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  412    HID_USAGE         ( HID_USAGE_FIDO_DATA_OUT                ) ,\ 
  413    HID_LOGICAL_MIN   ( 0                                      ) ,\ 
  414    HID_LOGICAL_MAX_N ( 0xff, 2                                ) ,\ 
  415    HID_REPORT_SIZE   ( 8                                      ) ,\ 
  416    HID_REPORT_COUNT  ( report_size                            ) ,\ 
  417    HID_OUTPUT        ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ 
  423#define TUD_HID_REPORT_DESC_GENERIC_INOUT(report_size, ...) \ 
  424    HID_USAGE_PAGE_N ( HID_USAGE_PAGE_VENDOR, 2   ),\ 
  426    HID_COLLECTION   ( HID_COLLECTION_APPLICATION ),\ 
  431      HID_LOGICAL_MIN ( 0x00                                   ),\ 
  432      HID_LOGICAL_MAX_N ( 0xff, 2                              ),\ 
  433      HID_REPORT_SIZE ( 8                                      ),\ 
  434      HID_REPORT_COUNT( report_size                            ),\ 
  435      HID_INPUT       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\ 
  438      HID_LOGICAL_MIN ( 0x00                                    ),\ 
  439      HID_LOGICAL_MAX_N ( 0xff, 2                               ),\ 
  440      HID_REPORT_SIZE ( 8                                       ),\ 
  441      HID_REPORT_COUNT( report_size                             ),\ 
  442      HID_OUTPUT      ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE  ),\ 
  454#define TUD_HID_REPORT_DESC_LIGHTING(report_id) \ 
  455  HID_USAGE_PAGE ( HID_USAGE_PAGE_LIGHTING_AND_ILLUMINATION ),\ 
  456  HID_USAGE      ( HID_USAGE_LIGHTING_LAMP_ARRAY            ),\ 
  457  HID_COLLECTION ( HID_COLLECTION_APPLICATION               ),\ 
  459    HID_REPORT_ID (report_id                                    ) \ 
  460    HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT ),\ 
  461    HID_COLLECTION ( HID_COLLECTION_LOGICAL                     ),\ 
  462      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_COUNT                          ),\ 
  463      HID_LOGICAL_MIN   ( 0                                                      ),\ 
  464      HID_LOGICAL_MAX_N ( 65535, 3                                               ),\ 
  465      HID_REPORT_SIZE   ( 16                                                     ),\ 
  466      HID_REPORT_COUNT  ( 1                                                      ),\ 
  467      HID_FEATURE       ( HID_CONSTANT | HID_VARIABLE | HID_ABSOLUTE             ),\ 
  468      HID_USAGE         ( HID_USAGE_LIGHTING_BOUNDING_BOX_WIDTH_IN_MICROMETERS   ),\ 
  469      HID_USAGE         ( HID_USAGE_LIGHTING_BOUNDING_BOX_HEIGHT_IN_MICROMETERS  ),\ 
  470      HID_USAGE         ( HID_USAGE_LIGHTING_BOUNDING_BOX_DEPTH_IN_MICROMETERS   ),\ 
  471      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ARRAY_KIND                     ),\ 
  472      HID_USAGE         ( HID_USAGE_LIGHTING_MIN_UPDATE_INTERVAL_IN_MICROSECONDS ),\ 
  473      HID_LOGICAL_MIN   ( 0                                                      ),\ 
  474      HID_LOGICAL_MAX_N ( 2147483647, 3                                          ),\ 
  475      HID_REPORT_SIZE   ( 32                                                     ),\ 
  476      HID_REPORT_COUNT  ( 5                                                      ),\ 
  477      HID_FEATURE       ( HID_CONSTANT | HID_VARIABLE | HID_ABSOLUTE             ),\ 
  478    HID_COLLECTION_END ,\ 
  480    HID_REPORT_ID       ( report_id + 1                                     ) \ 
  481    HID_USAGE           ( HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT ),\ 
  482    HID_COLLECTION      ( HID_COLLECTION_LOGICAL                            ),\ 
  483      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ID             ),\ 
  484      HID_LOGICAL_MIN   ( 0                                      ),\ 
  485      HID_LOGICAL_MAX_N ( 65535, 3                               ),\ 
  486      HID_REPORT_SIZE   ( 16                                     ),\ 
  487      HID_REPORT_COUNT  ( 1                                      ),\ 
  488      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\ 
  489    HID_COLLECTION_END ,\ 
  491    HID_REPORT_ID       ( report_id + 2                                      ) \ 
  492    HID_USAGE           ( HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT ),\ 
  493    HID_COLLECTION      ( HID_COLLECTION_LOGICAL                             ),\ 
  494      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ID                        ),\ 
  495      HID_LOGICAL_MIN   ( 0                                                 ),\ 
  496      HID_LOGICAL_MAX_N ( 65535, 3                                          ),\ 
  497      HID_REPORT_SIZE   ( 16                                                ),\ 
  498      HID_REPORT_COUNT  ( 1                                                 ),\ 
  499      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE            ),\ 
  500      HID_USAGE         ( HID_USAGE_LIGHTING_POSITION_X_IN_MICROMETERS      ),\ 
  501      HID_USAGE         ( HID_USAGE_LIGHTING_POSITION_Y_IN_MICROMETERS      ),\ 
  502      HID_USAGE         ( HID_USAGE_LIGHTING_POSITION_Z_IN_MICROMETERS      ),\ 
  503      HID_USAGE         ( HID_USAGE_LIGHTING_UPDATE_LATENCY_IN_MICROSECONDS ),\ 
  504      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_PURPOSES                  ),\ 
  505      HID_LOGICAL_MIN   ( 0                                                 ),\ 
  506      HID_LOGICAL_MAX_N ( 2147483647, 3                                     ),\ 
  507      HID_REPORT_SIZE   ( 32                                                ),\ 
  508      HID_REPORT_COUNT  ( 5                                                 ),\ 
  509      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE            ),\ 
  510      HID_USAGE         ( HID_USAGE_LIGHTING_RED_LEVEL_COUNT                ),\ 
  511      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_LEVEL_COUNT              ),\ 
  512      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_LEVEL_COUNT               ),\ 
  513      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_LEVEL_COUNT          ),\ 
  514      HID_USAGE         ( HID_USAGE_LIGHTING_IS_PROGRAMMABLE                ),\ 
  515      HID_USAGE         ( HID_USAGE_LIGHTING_INPUT_BINDING                  ),\ 
  516      HID_LOGICAL_MIN   ( 0                                                 ),\ 
  517      HID_LOGICAL_MAX_N ( 255, 2                                            ),\ 
  518      HID_REPORT_SIZE   ( 8                                                 ),\ 
  519      HID_REPORT_COUNT  ( 6                                                 ),\ 
  520      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE            ),\ 
  521    HID_COLLECTION_END ,\ 
  523    HID_REPORT_ID       ( report_id + 3                               ) \ 
  524    HID_USAGE           ( HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT ),\ 
  525    HID_COLLECTION      ( HID_COLLECTION_LOGICAL                      ),\ 
  526      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_COUNT               ),\ 
  527      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS        ),\ 
  528      HID_LOGICAL_MIN   ( 0                                           ),\ 
  529      HID_LOGICAL_MAX   ( 8                                           ),\ 
  530      HID_REPORT_SIZE   ( 8                                           ),\ 
  531      HID_REPORT_COUNT  ( 2                                           ),\ 
  532      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  533      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ID                  ),\ 
  534      HID_LOGICAL_MIN   ( 0                                           ),\ 
  535      HID_LOGICAL_MAX_N ( 65535, 3                                    ),\ 
  536      HID_REPORT_SIZE   ( 16                                          ),\ 
  537      HID_REPORT_COUNT  ( 8                                           ),\ 
  538      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  539      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  540      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  541      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  542      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  543      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  544      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  545      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  546      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  547      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  548      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  549      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  550      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  551      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  552      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  553      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  554      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  555      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  556      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  557      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  558      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  559      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  560      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  561      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  562      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  563      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  564      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  565      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  566      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  567      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  568      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  569      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  570      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  571      HID_LOGICAL_MIN   ( 0                                           ),\ 
  572      HID_LOGICAL_MAX_N ( 255, 2                                      ),\ 
  573      HID_REPORT_SIZE   ( 8                                           ),\ 
  574      HID_REPORT_COUNT  ( 32                                          ),\ 
  575      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  576    HID_COLLECTION_END ,\ 
  578    HID_REPORT_ID       ( report_id + 4 ) \ 
  579    HID_USAGE           ( HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT ),\ 
  580    HID_COLLECTION      ( HID_COLLECTION_LOGICAL                      ),\ 
  581      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS        ),\ 
  582      HID_LOGICAL_MIN   ( 0                                           ),\ 
  583      HID_LOGICAL_MAX   ( 8                                           ),\ 
  584      HID_REPORT_SIZE   ( 8                                           ),\ 
  585      HID_REPORT_COUNT  ( 1                                           ),\ 
  586      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  587      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ID_START            ),\ 
  588      HID_USAGE         ( HID_USAGE_LIGHTING_LAMP_ID_END              ),\ 
  589      HID_LOGICAL_MIN   ( 0                                           ),\ 
  590      HID_LOGICAL_MAX_N ( 65535, 3                                    ),\ 
  591      HID_REPORT_SIZE   ( 16                                          ),\ 
  592      HID_REPORT_COUNT  ( 2                                           ),\ 
  593      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  594      HID_USAGE         ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL       ),\ 
  595      HID_USAGE         ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL     ),\ 
  596      HID_USAGE         ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL      ),\ 
  597      HID_USAGE         ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\ 
  598      HID_LOGICAL_MIN   ( 0                                           ),\ 
  599      HID_LOGICAL_MAX_N ( 255, 2                                      ),\ 
  600      HID_REPORT_SIZE   ( 8                                           ),\ 
  601      HID_REPORT_COUNT  ( 4                                           ),\ 
  602      HID_FEATURE       ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE      ),\ 
  603    HID_COLLECTION_END ,\ 
  605    HID_REPORT_ID      ( report_id + 5                                ) \ 
  606    HID_USAGE          ( HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT ),\ 
  607    HID_COLLECTION     ( HID_COLLECTION_LOGICAL                       ),\ 
  608      HID_USAGE        ( HID_USAGE_LIGHTING_AUTONOMOUS_MODE     ),\ 
  609      HID_LOGICAL_MIN  ( 0                                      ),\ 
  610      HID_LOGICAL_MAX  ( 1                                      ),\ 
  611      HID_REPORT_SIZE  ( 8                                      ),\ 
  612      HID_REPORT_COUNT ( 1                                      ),\ 
  613      HID_FEATURE      ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\ 
  614    HID_COLLECTION_END ,\ 
hid_report_type_t
HID Request Report Type.
bool tud_hid_n_ready(uint8_t instance)
void hidd_reset(uint8_t rhport)
bool tud_hid_set_idle_cb(uint8_t instance, uint8_t idle_rate)
static TU_ATTR_ALWAYS_INLINE bool tud_hid_mouse_report(uint8_t report_id, uint8_t buttons, int8_t x, int8_t y, int8_t vertical, int8_t horizontal)
void tud_hid_set_protocol_cb(uint8_t instance, uint8_t protocol)
static TU_ATTR_ALWAYS_INLINE bool tud_hid_abs_mouse_report(uint8_t report_id, uint8_t buttons, int16_t x, int16_t y, int8_t vertical, int8_t horizontal)
static TU_ATTR_ALWAYS_INLINE bool tud_hid_keyboard_report(uint8_t report_id, uint8_t modifier, const uint8_t keycode[6])
bool tud_hid_n_mouse_report(uint8_t instance, uint8_t report_id, uint8_t buttons, int8_t x, int8_t y, int8_t vertical, int8_t horizontal)
uint16_t tud_hid_get_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t report_type, uint8_t *buffer, uint16_t reqlen)
static TU_ATTR_ALWAYS_INLINE uint8_t tud_hid_get_protocol(void)
bool hidd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
uint8_t tud_hid_n_get_protocol(uint8_t instance)
static TU_ATTR_ALWAYS_INLINE bool tud_hid_report(uint8_t report_id, void const *report, uint16_t len)
uint8_t tud_hid_n_interface_protocol(uint8_t instance)
uint8_t const * tud_hid_descriptor_report_cb(uint8_t instance)
void tud_hid_report_complete_cb(uint8_t instance, uint8_t const *report, uint16_t len)
bool hidd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const *request)
bool tud_hid_n_abs_mouse_report(uint8_t instance, uint8_t report_id, uint8_t buttons, int16_t x, int16_t y, int8_t vertical, int8_t horizontal)
void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t report_type, uint8_t const *buffer, uint16_t bufsize)
bool tud_hid_n_gamepad_report(uint8_t instance, uint8_t report_id, int8_t x, int8_t y, int8_t z, int8_t rz, int8_t rx, int8_t ry, uint8_t hat, uint32_t buttons)
bool tud_hid_n_keyboard_report(uint8_t instance, uint8_t report_id, uint8_t modifier, const uint8_t keycode[6])
static TU_ATTR_ALWAYS_INLINE bool tud_hid_gamepad_report(uint8_t report_id, int8_t x, int8_t y, int8_t z, int8_t rz, int8_t rx, int8_t ry, uint8_t hat, uint32_t buttons)
static TU_ATTR_ALWAYS_INLINE uint8_t tud_hid_interface_protocol(void)
static TU_ATTR_ALWAYS_INLINE bool tud_hid_ready(void)
void tud_hid_report_failed_cb(uint8_t instance, hid_report_type_t report_type, uint8_t const *report, uint16_t xferred_bytes)
uint16_t hidd_open(uint8_t rhport, tusb_desc_interface_t const *itf_desc, uint16_t max_len)
bool tud_hid_n_report(uint8_t instance, uint8_t report_id, void const *report, uint16_t len)
struct TU_ATTR_PACKED tusb_control_request_t
struct TU_ATTR_PACKED tusb_desc_interface_t
USB Interface Descriptor.
CFG_TUH_MEM_ALIGN tusb_control_request_t request