summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-07-28 20:15:20 +0700
committerhathach <[email protected]>2018-07-28 22:42:44 +0700
commit8b17c5460950c425e17a055940e3a02cf6b29962 (patch)
treedc730af4daada5828094c2436ab7568171b69e8b /src/class
parentc729db229422a2771be394ea4ac8de65eac619e4 (diff)
fix hid generic various error
Diffstat (limited to 'src/class')
-rw-r--r--src/class/hid/hid.h4
-rw-r--r--src/class/hid/hid_device.c13
-rw-r--r--src/class/hid/hid_device.h11
3 files changed, 21 insertions, 7 deletions
diff --git a/src/class/hid/hid.h b/src/class/hid/hid.h
index 9872172a9..d2803177b 100644
--- a/src/class/hid/hid.h
+++ b/src/class/hid/hid.h
@@ -354,8 +354,8 @@ typedef enum
#define RI_TYPE_LOCAL 2
//------------- MAIN ITEMS 6.2.2.4 -------------//
-#define HID_INPUT(x) HID_REPORT_ITEM(x, 8, RI_TYPE_MAIN, 1)
-#define HID_OUTPUT(x) HID_REPORT_ITEM(x, 9, RI_TYPE_MAIN, 1)
+#define HID_INPUT(x) HID_REPORT_ITEM(x, 8, RI_TYPE_MAIN, 1)
+#define HID_OUTPUT(x) HID_REPORT_ITEM(x, 9, RI_TYPE_MAIN, 1)
#define HID_COLLECTION(x) HID_REPORT_ITEM(x, 10, RI_TYPE_MAIN, 1)
#define HID_FEATURE(x) HID_REPORT_ITEM(x, 11, RI_TYPE_MAIN, 1)
#define HID_COLLECTION_END HID_REPORT_ITEM(x, 12, RI_TYPE_MAIN, 0)
diff --git a/src/class/hid/hid_device.c b/src/class/hid/hid_device.c
index e0ed2e719..bf2cc75af 100644
--- a/src/class/hid/hid_device.c
+++ b/src/class/hid/hid_device.c
@@ -87,8 +87,9 @@ CFG_TUSB_ATTR_USBRAM static hidd_interface_t _hidd_itf;
static inline hidd_interface_t* get_interface_by_itfnum(uint8_t itf_num)
{
- return ( itf_num == _kbd_itf.itf_num ) ? &_kbd_itf :
- ( itf_num == _mse_itf.itf_num ) ? &_mse_itf : NULL;
+ return ( itf_num == _kbd_itf.itf_num ) ? &_kbd_itf :
+ ( itf_num == _mse_itf.itf_num ) ? &_mse_itf :
+ ( itf_num == _hidd_itf.itf_num ) ? &_hidd_itf : NULL;
}
@@ -333,17 +334,19 @@ tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, u
// TODO HID generic
hidd_interface_t * p_hid = &_hidd_itf;
+ TU_ASSERT( dcd_edpt_open(rhport, desc_edpt), TUSB_ERROR_DCD_FAILED );
+
p_hid->itf_num = desc_itf->bInterfaceNumber;
p_hid->ep_in = desc_edpt->bEndpointAddress;
// TODO parse report ID for keyboard, mouse
p_hid->report_id = 0;
- p_hid->report_len = 0;
- p_hid->report_desc = NULL;
+ p_hid->report_len = desc_hid->wReportLength;
+ p_hid->report_desc = tud_desc_set.hid_report.generic;
p_hid->get_report_cb = tud_hid_generic_get_report_cb;
p_hid->set_report_cb = tud_hid_generic_set_report_cb;
- return ERR_TUD_INVALID_DESCRIPTOR;
+ *p_len = sizeof(tusb_desc_interface_t) + sizeof(tusb_hid_descriptor_hid_t) + sizeof(tusb_desc_endpoint_t);
}
return TUSB_ERROR_NONE;
diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h
index c78f56bb1..31d4a0c2f 100644
--- a/src/class/hid/hid_device.h
+++ b/src/class/hid/hid_device.h
@@ -47,6 +47,17 @@
extern "C" {
#endif
+//--------------------------------------------------------------------+
+// Class Driver Configuration
+//--------------------------------------------------------------------+
+#if !CFG_TUD_HID_KEYBOARD && CFG_TUD_DESC_BOOT_KEYBOARD
+#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
+#endif
+
//--------------------------------------------------------------------+
// HID GENERIC API