summaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-07-29 14:03:48 +0700
committerhathach <[email protected]>2018-07-29 14:03:48 +0700
commit683bb574e723685f38082f2461f2fa8eb9900c90 (patch)
tree0ee6c78f823711da14108f7e76d18a738098c07f /src/device
parent8b17c5460950c425e17a055940e3a02cf6b29962 (diff)
hid device enhance
Diffstat (limited to 'src/device')
-rw-r--r--src/device/usbd.c6
-rw-r--r--src/device/usbd_desc.c51
2 files changed, 30 insertions, 27 deletions
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 =