diff options
| author | hathach <[email protected]> | 2018-07-29 14:03:48 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-07-29 14:03:48 +0700 |
| commit | 683bb574e723685f38082f2461f2fa8eb9900c90 (patch) | |
| tree | 0ee6c78f823711da14108f7e76d18a738098c07f /src | |
| parent | 8b17c5460950c425e17a055940e3a02cf6b29962 (diff) | |
hid device enhance
Diffstat (limited to 'src')
| -rw-r--r-- | src/class/hid/hid_device.h | 16 | ||||
| -rw-r--r-- | src/common/tusb_error.h | 3 | ||||
| -rw-r--r-- | src/device/usbd.c | 6 | ||||
| -rw-r--r-- | src/device/usbd_desc.c | 51 | ||||
| -rw-r--r-- | src/tusb_option.h | 8 |
5 files changed, 48 insertions, 36 deletions
diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h index 31d4a0c2f..5f21878e0 100644 --- a/src/class/hid/hid_device.h +++ b/src/class/hid/hid_device.h @@ -48,14 +48,22 @@ #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
#endif
-#if !CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE
-#error CFG_TUD_HID_MOUSE must be enabled
+#if !CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT
+#error CFG_TUD_HID_MOUSE must be enabled
#endif
diff --git a/src/common/tusb_error.h b/src/common/tusb_error.h index e7c7f69f9..677fc44e4 100644 --- a/src/common/tusb_error.h +++ b/src/common/tusb_error.h @@ -92,7 +92,8 @@ ENTRY(TUSB_ERROR_NOT_ENOUGH_MEMORY )\
ENTRY(TUSB_ERROR_FAILED )\
\
- ENTRY(ERR_TUD_INVALID_DESCRIPTOR)
+ ENTRY(ERR_TUD_INVALID_DESCRIPTOR) \
+ ENTRY(ERR_TUD_EDPT_OPEN_FAILED) \
/// \brief Error Code returned
diff --git a/src/device/usbd.c b/src/device/usbd.c index 7c302cc77..5f83728ef 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -318,12 +318,13 @@ static void usbd_reset(uint8_t rhport) tud_desc_set.device = (uint8_t const*) &_desc_auto_device;
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[];
tud_desc_set.hid_report.boot_keyboard = _desc_auto_hid_boot_kbd_report;
#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[];
tud_desc_set.hid_report.boot_mouse = _desc_auto_hid_boot_mse_report;
#endif
@@ -332,6 +333,7 @@ static void usbd_reset(uint8_t rhport) extern uint8_t const _desc_auto_hid_generic_report[];
tud_desc_set.hid_report.generic = _desc_auto_hid_generic_report;
#endif
+#endif // CFG_TUD_HID
#endif // CFG_TUD_DESC_AUTO
diff --git a/src/device/usbd_desc.c b/src/device/usbd_desc.c index 8d3095503..8f147aa67 100644 --- a/src/device/usbd_desc.c +++ b/src/device/usbd_desc.c @@ -45,6 +45,10 @@ #if CFG_TUD_DESC_AUTO +//--------------------------------------------------------------------+ +// Auto Description Default Configure & Validation +//--------------------------------------------------------------------+ + /*------------- VID/PID -------------*/ #ifndef CFG_TUD_DESC_VID #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) ) #endif +//--------------------------------------------------------------------+ +// Interface & Endpoint mapping +//--------------------------------------------------------------------+ + /*------------- Interface Numbering -------------*/ -/* The order as follows: CDC, MSC, HID - * If a interface is not enabled, the later will take its place - */ +/* The order as follows: CDC, MSC, Boot Keyboard, Boot Mouse, HID Generic + * If an interface is not enabled, the later will take its place */ #define ITF_NUM_CDC 0 #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_MSE (ITF_NUM_HID_BOOT_KBD + CFG_TUD_DESC_BOOT_KEYBOARD) -#define ITF_NUM_HID_GEN (ITF_NUM_HID_BOOT_MSE + CFG_TUD_DESC_BOOT_MOUSE) +#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_HID_MOUSE_BOOT) #define ITF_TOTAL (ITF_NUM_HID_GEN + TUD_OPT_HID_GENERIC) @@ -112,8 +119,6 @@ /*------------- Keyboard Descriptor -------------*/ -#if CFG_TUD_HID_KEYBOARD - #define HID_REPORT_KEYBOARD(...) \ HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\ HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ) ,\ @@ -154,14 +159,7 @@ HID_OUTPUT ( HID_CONSTANT ) ,\ 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 -------------*/ -#if CFG_TUD_HID_MOUSE #define HID_REPORT_MOUSE(...) \ HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\ 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 \ -#if CFG_TUD_DESC_BOOT_MOUSE -uint8_t const _desc_auto_hid_boot_mse_report[] = { HID_REPORT_MOUSE() }; -#endif - -#endif // hid 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() }; +#endif #if TUD_OPT_HID_GENERIC +// TODO report ID 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), ), #endif -#if !CFG_TUD_DESC_BOOT_MOUSE +#if CFG_TUD_HID_MOUSE && !CFG_TUD_HID_MOUSE_BOOT HID_REPORT_MOUSE( HID_REPORT_ID(2), ) #endif @@ -309,7 +310,7 @@ typedef struct ATTR_PACKED #endif //------------- HID -------------// -#if CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD +#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT struct ATTR_PACKED { tusb_desc_interface_t itf; @@ -318,7 +319,7 @@ typedef struct ATTR_PACKED } hid_kbd_boot; #endif -#if CFG_TUD_HID_MOUSE && CFG_TUD_DESC_BOOT_MOUSE +#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_MOUSE_BOOT struct ATTR_PACKED { tusb_desc_interface_t itf; @@ -513,7 +514,7 @@ desc_auto_cfg_t const _desc_auto_config_struct = }, #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 = { .itf = @@ -553,7 +554,7 @@ desc_auto_cfg_t const _desc_auto_config_struct = #endif // boot keyboard //------------- 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 = { .itf = diff --git a/src/tusb_option.h b/src/tusb_option.h index 4af327a5d..f4f1389da 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -171,9 +171,9 @@ #define CFG_TUD_MSC 0
#endif
- // Generic (multiple) Report : Keyboard + Mouse + Gamepad + Joystick
- #define TUD_OPT_HID_GENERIC (CFG_TUD_HID && ( (CFG_TUD_HID_KEYBOARD && !CFG_TUD_DESC_BOOT_KEYBOARD) || \
- (CFG_TUD_HID_MOUSE && !CFG_TUD_DESC_BOOT_MOUSE) ))
+ // IF HID Generic is required, it is multiple Report : Keyboard + Mouse + Gamepad + Joystick
+ #define TUD_OPT_HID_GENERIC ( (CFG_TUD_HID_KEYBOARD && !CFG_TUD_HID_KEYBOARD_BOOT) || \
+ (CFG_TUD_HID_MOUSE && !CFG_TUD_HID_MOUSE_BOOT) )
#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)
|
