mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-29 19:20:22 +00:00
hid device enhance
This commit is contained in:
parent
8b17c54609
commit
683bb574e7
@ -78,13 +78,6 @@
|
|||||||
// #define CFG_TUD_DESC_VID 0xCAFE
|
// #define CFG_TUD_DESC_VID 0xCAFE
|
||||||
// #define CFG_TUD_DESC_PID 0x0001
|
// #define CFG_TUD_DESC_PID 0x0001
|
||||||
|
|
||||||
/* Use Boot Protocol for Keyboard, Mouse. Enable this will create separated HID interface
|
|
||||||
* require more IN endpoints. If disabled, they they are all packed into a single
|
|
||||||
* multiple report interface called "Generic".
|
|
||||||
*/
|
|
||||||
#define CFG_TUD_DESC_BOOT_KEYBOARD 0
|
|
||||||
#define CFG_TUD_DESC_BOOT_MOUSE 0
|
|
||||||
|
|
||||||
//------------- CLASS -------------//
|
//------------- CLASS -------------//
|
||||||
#define CFG_TUD_CDC 1
|
#define CFG_TUD_CDC 1
|
||||||
#define CFG_TUD_MSC 1
|
#define CFG_TUD_MSC 1
|
||||||
@ -93,6 +86,12 @@
|
|||||||
#define CFG_TUD_HID_KEYBOARD 1
|
#define CFG_TUD_HID_KEYBOARD 1
|
||||||
#define CFG_TUD_HID_MOUSE 1
|
#define CFG_TUD_HID_MOUSE 1
|
||||||
|
|
||||||
|
/* Use Boot Protocol for Keyboard, Mouse. Enable this will create separated HID interface
|
||||||
|
* require more IN endpoints. If disabled, they they are all packed into a single
|
||||||
|
* multiple report interface called "Generic". */
|
||||||
|
#define CFG_TUD_HID_KEYBOARD_BOOT 1
|
||||||
|
#define CFG_TUD_HID_MOUSE_BOOT 1
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// CDC
|
// CDC
|
||||||
|
@ -48,14 +48,22 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Class Driver Configuration
|
// Class Driver Default Configure & Validation
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
#if !CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD
|
#ifndef CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
|
#define CFG_TUD_HID_KEYBOARD_BOOT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CFG_TUD_HID_MOUSE_BOOT
|
||||||
|
#define CFG_TUD_HID_MOUSE_BOOT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
#error CFG_TUD_HID_KEYBOARD must be enabled
|
#error CFG_TUD_HID_KEYBOARD must be enabled
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE
|
#if !CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
|
||||||
#error CFG_TUD_HID_MOUSE must be enabled
|
#error CFG_TUD_HID_MOUSE must be enabled
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,7 +92,8 @@
|
|||||||
ENTRY(TUSB_ERROR_NOT_ENOUGH_MEMORY )\
|
ENTRY(TUSB_ERROR_NOT_ENOUGH_MEMORY )\
|
||||||
ENTRY(TUSB_ERROR_FAILED )\
|
ENTRY(TUSB_ERROR_FAILED )\
|
||||||
\
|
\
|
||||||
ENTRY(ERR_TUD_INVALID_DESCRIPTOR)
|
ENTRY(ERR_TUD_INVALID_DESCRIPTOR) \
|
||||||
|
ENTRY(ERR_TUD_EDPT_OPEN_FAILED) \
|
||||||
|
|
||||||
|
|
||||||
/// \brief Error Code returned
|
/// \brief Error Code returned
|
||||||
|
@ -318,12 +318,13 @@ static void usbd_reset(uint8_t rhport)
|
|||||||
tud_desc_set.device = (uint8_t const*) &_desc_auto_device;
|
tud_desc_set.device = (uint8_t const*) &_desc_auto_device;
|
||||||
tud_desc_set.config = _desc_auto_config;
|
tud_desc_set.config = _desc_auto_config;
|
||||||
|
|
||||||
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD
|
#if CFG_TUD_HID
|
||||||
|
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
extern uint8_t const _desc_auto_hid_boot_kbd_report[];
|
extern uint8_t const _desc_auto_hid_boot_kbd_report[];
|
||||||
tud_desc_set.hid_report.boot_keyboard = _desc_auto_hid_boot_kbd_report;
|
tud_desc_set.hid_report.boot_keyboard = _desc_auto_hid_boot_kbd_report;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE
|
#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
|
||||||
extern uint8_t const _desc_auto_hid_boot_mse_report[];
|
extern uint8_t const _desc_auto_hid_boot_mse_report[];
|
||||||
tud_desc_set.hid_report.boot_mouse = _desc_auto_hid_boot_mse_report;
|
tud_desc_set.hid_report.boot_mouse = _desc_auto_hid_boot_mse_report;
|
||||||
#endif
|
#endif
|
||||||
@ -332,6 +333,7 @@ static void usbd_reset(uint8_t rhport)
|
|||||||
extern uint8_t const _desc_auto_hid_generic_report[];
|
extern uint8_t const _desc_auto_hid_generic_report[];
|
||||||
tud_desc_set.hid_report.generic = _desc_auto_hid_generic_report;
|
tud_desc_set.hid_report.generic = _desc_auto_hid_generic_report;
|
||||||
#endif
|
#endif
|
||||||
|
#endif // CFG_TUD_HID
|
||||||
|
|
||||||
#endif // CFG_TUD_DESC_AUTO
|
#endif // CFG_TUD_DESC_AUTO
|
||||||
|
|
||||||
|
@ -45,6 +45,10 @@
|
|||||||
|
|
||||||
#if CFG_TUD_DESC_AUTO
|
#if CFG_TUD_DESC_AUTO
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Auto Description Default Configure & Validation
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
/*------------- VID/PID -------------*/
|
/*------------- VID/PID -------------*/
|
||||||
#ifndef CFG_TUD_DESC_VID
|
#ifndef CFG_TUD_DESC_VID
|
||||||
#define CFG_TUD_DESC_VID 0xCAFE
|
#define CFG_TUD_DESC_VID 0xCAFE
|
||||||
@ -63,17 +67,20 @@
|
|||||||
_PID_MAP(HID_KEYBOARD, 2) | _PID_MAP(HID_MOUSE, 3) | (TUD_OPT_HID_GENERIC << 4) )
|
_PID_MAP(HID_KEYBOARD, 2) | _PID_MAP(HID_MOUSE, 3) | (TUD_OPT_HID_GENERIC << 4) )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Interface & Endpoint mapping
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
/*------------- Interface Numbering -------------*/
|
/*------------- Interface Numbering -------------*/
|
||||||
/* The order as follows: CDC, MSC, HID
|
/* The order as follows: CDC, MSC, Boot Keyboard, Boot Mouse, HID Generic
|
||||||
* If a interface is not enabled, the later will take its place
|
* If an interface is not enabled, the later will take its place */
|
||||||
*/
|
|
||||||
|
|
||||||
#define ITF_NUM_CDC 0
|
#define ITF_NUM_CDC 0
|
||||||
#define ITF_NUM_MSC (ITF_NUM_CDC + 2*CFG_TUD_CDC)
|
#define ITF_NUM_MSC (ITF_NUM_CDC + 2*CFG_TUD_CDC)
|
||||||
|
|
||||||
#define ITF_NUM_HID_BOOT_KBD (ITF_NUM_MSC + CFG_TUD_MSC)
|
#define ITF_NUM_HID_BOOT_KBD (ITF_NUM_MSC + CFG_TUD_MSC)
|
||||||
#define ITF_NUM_HID_BOOT_MSE (ITF_NUM_HID_BOOT_KBD + CFG_TUD_DESC_BOOT_KEYBOARD)
|
#define ITF_NUM_HID_BOOT_MSE (ITF_NUM_HID_BOOT_KBD + CFG_TUD_HID_KEYBOARD_BOOT)
|
||||||
#define ITF_NUM_HID_GEN (ITF_NUM_HID_BOOT_MSE + CFG_TUD_DESC_BOOT_MOUSE)
|
#define ITF_NUM_HID_GEN (ITF_NUM_HID_BOOT_MSE + CFG_TUD_HID_MOUSE_BOOT)
|
||||||
|
|
||||||
#define ITF_TOTAL (ITF_NUM_HID_GEN + TUD_OPT_HID_GENERIC)
|
#define ITF_TOTAL (ITF_NUM_HID_GEN + TUD_OPT_HID_GENERIC)
|
||||||
|
|
||||||
@ -112,8 +119,6 @@
|
|||||||
|
|
||||||
|
|
||||||
/*------------- Keyboard Descriptor -------------*/
|
/*------------- Keyboard Descriptor -------------*/
|
||||||
#if CFG_TUD_HID_KEYBOARD
|
|
||||||
|
|
||||||
#define HID_REPORT_KEYBOARD(...) \
|
#define HID_REPORT_KEYBOARD(...) \
|
||||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
|
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
|
||||||
HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ) ,\
|
HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ) ,\
|
||||||
@ -154,14 +159,7 @@
|
|||||||
HID_OUTPUT ( HID_CONSTANT ) ,\
|
HID_OUTPUT ( HID_CONSTANT ) ,\
|
||||||
HID_COLLECTION_END \
|
HID_COLLECTION_END \
|
||||||
|
|
||||||
#if CFG_TUD_DESC_BOOT_KEYBOARD
|
|
||||||
uint8_t const _desc_auto_hid_boot_kbd_report[] = { HID_REPORT_KEYBOARD() };
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // hid keyboard
|
|
||||||
|
|
||||||
/*------------- Mouse Descriptor -------------*/
|
/*------------- Mouse Descriptor -------------*/
|
||||||
#if CFG_TUD_HID_MOUSE
|
|
||||||
#define HID_REPORT_MOUSE(...) \
|
#define HID_REPORT_MOUSE(...) \
|
||||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
|
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
|
||||||
HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ) ,\
|
HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ) ,\
|
||||||
@ -201,23 +199,26 @@ uint8_t const _desc_auto_hid_boot_kbd_report[] = { HID_REPORT_KEYBOARD() };
|
|||||||
HID_COLLECTION_END ,\
|
HID_COLLECTION_END ,\
|
||||||
HID_COLLECTION_END \
|
HID_COLLECTION_END \
|
||||||
|
|
||||||
#if CFG_TUD_DESC_BOOT_MOUSE
|
|
||||||
|
/*------------- Generic (composite) Descriptor -------------*/
|
||||||
|
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
|
uint8_t const _desc_auto_hid_boot_kbd_report[] = { HID_REPORT_KEYBOARD() };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
|
||||||
uint8_t const _desc_auto_hid_boot_mse_report[] = { HID_REPORT_MOUSE() };
|
uint8_t const _desc_auto_hid_boot_mse_report[] = { HID_REPORT_MOUSE() };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // hid mouse
|
|
||||||
|
|
||||||
/*------------- Generic (composite) Descriptor -------------*/
|
|
||||||
|
|
||||||
#if TUD_OPT_HID_GENERIC
|
#if TUD_OPT_HID_GENERIC
|
||||||
|
|
||||||
|
// TODO report ID
|
||||||
uint8_t const _desc_auto_hid_generic_report[] =
|
uint8_t const _desc_auto_hid_generic_report[] =
|
||||||
{
|
{
|
||||||
#if !CFG_TUD_DESC_BOOT_KEYBOARD
|
#if CFG_TUD_HID_KEYBOARD && !CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
HID_REPORT_KEYBOARD( HID_REPORT_ID(1), ),
|
HID_REPORT_KEYBOARD( HID_REPORT_ID(1), ),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !CFG_TUD_DESC_BOOT_MOUSE
|
#if CFG_TUD_HID_MOUSE && !CFG_TUD_HID_MOUSE_BOOT
|
||||||
HID_REPORT_MOUSE( HID_REPORT_ID(2), )
|
HID_REPORT_MOUSE( HID_REPORT_ID(2), )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -309,7 +310,7 @@ typedef struct ATTR_PACKED
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------- HID -------------//
|
//------------- HID -------------//
|
||||||
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD
|
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
struct ATTR_PACKED
|
struct ATTR_PACKED
|
||||||
{
|
{
|
||||||
tusb_desc_interface_t itf;
|
tusb_desc_interface_t itf;
|
||||||
@ -318,7 +319,7 @@ typedef struct ATTR_PACKED
|
|||||||
} hid_kbd_boot;
|
} hid_kbd_boot;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE
|
#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
|
||||||
struct ATTR_PACKED
|
struct ATTR_PACKED
|
||||||
{
|
{
|
||||||
tusb_desc_interface_t itf;
|
tusb_desc_interface_t itf;
|
||||||
@ -513,7 +514,7 @@ desc_auto_cfg_t const _desc_auto_config_struct =
|
|||||||
},
|
},
|
||||||
#endif // msc
|
#endif // msc
|
||||||
|
|
||||||
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD
|
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
|
||||||
.hid_kbd_boot =
|
.hid_kbd_boot =
|
||||||
{
|
{
|
||||||
.itf =
|
.itf =
|
||||||
@ -553,7 +554,7 @@ desc_auto_cfg_t const _desc_auto_config_struct =
|
|||||||
#endif // boot keyboard
|
#endif // boot keyboard
|
||||||
|
|
||||||
//------------- HID Mouse -------------//
|
//------------- HID Mouse -------------//
|
||||||
#if CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE
|
#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
|
||||||
.hid_mse_boot =
|
.hid_mse_boot =
|
||||||
{
|
{
|
||||||
.itf =
|
.itf =
|
||||||
|
@ -171,9 +171,9 @@
|
|||||||
#define CFG_TUD_MSC 0
|
#define CFG_TUD_MSC 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Generic (multiple) Report : Keyboard + Mouse + Gamepad + Joystick
|
// IF HID Generic is required, it is multiple Report : Keyboard + Mouse + Gamepad + Joystick
|
||||||
#define TUD_OPT_HID_GENERIC (CFG_TUD_HID && ( (CFG_TUD_HID_KEYBOARD && !CFG_TUD_DESC_BOOT_KEYBOARD) || \
|
#define TUD_OPT_HID_GENERIC ( (CFG_TUD_HID_KEYBOARD && !CFG_TUD_HID_KEYBOARD_BOOT) || \
|
||||||
(CFG_TUD_HID_MOUSE && !CFG_TUD_DESC_BOOT_MOUSE) ))
|
(CFG_TUD_HID_MOUSE && !CFG_TUD_HID_MOUSE_BOOT) )
|
||||||
|
|
||||||
#endif // TUSB_OPT_DEVICE_ENABLED
|
#endif // TUSB_OPT_DEVICE_ENABLED
|
||||||
|
|
||||||
@ -206,7 +206,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
// Config Verification
|
// Configuration Validation
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
#if (CFG_TUSB_OS != OPT_OS_NONE) && !defined (CFG_TUD_TASK_PRIO)
|
#if (CFG_TUSB_OS != OPT_OS_NONE) && !defined (CFG_TUD_TASK_PRIO)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user