summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/host/cdc_msc_hid/src/tusb_config.h2
-rw-r--r--src/class/hid/hid_host.c55
2 files changed, 44 insertions, 13 deletions
diff --git a/examples/host/cdc_msc_hid/src/tusb_config.h b/examples/host/cdc_msc_hid/src/tusb_config.h
index fd0432799..7c13cbd2f 100644
--- a/examples/host/cdc_msc_hid/src/tusb_config.h
+++ b/examples/host/cdc_msc_hid/src/tusb_config.h
@@ -84,6 +84,8 @@
//------------- HID -------------//
+//#define CFG_TUH_HID_EP_BUFSIZE 64
+
// Max number of reports per interface
// E.g composite HID with keyboard + mouse + gamepad will have 3 reports
#define CFG_TUH_HID_REPORT_MAX 4
diff --git a/src/class/hid/hid_host.c b/src/class/hid/hid_host.c
index 862026b5b..ba9707a69 100644
--- a/src/class/hid/hid_host.c
+++ b/src/class/hid/hid_host.c
@@ -366,19 +366,7 @@ bool config_get_report_desc_complete(uint8_t dev_addr, tusb_control_request_t co
// Parse Report Descriptor to tuh_hid_report_info_t
static void parse_report_descriptor(hidh_interface_t* hid_itf, uint8_t const* desc_report, uint16_t desc_len)
{
- enum
- {
- USAGE_PAGE = 0x05,
- USAGE = 0x09,
- USAGE_MIN = 0x19,
- USAGE_MAX = 0x29,
- LOGICAL_MIN = 0x15,
- LOGICAL_MAX = 0x25,
- REPORT_SIZE = 0x75,
- REPORT_COUNT = 0x95
- };
-
- // Short Item 6.2.2.2 USB HID 1.11
+ // Report Item 6.2.2.2 USB HID 1.11
union TU_ATTR_PACKED
{
uint8_t byte;
@@ -407,12 +395,53 @@ static void parse_report_descriptor(hidh_interface_t* hid_itf, uint8_t const* de
switch(type)
{
case RI_TYPE_MAIN:
+ switch (tag)
+ {
+ case RI_MAIN_INPUT: break;
+ case RI_MAIN_OUTPUT: break;
+ case RI_MAIN_FEATURE: break;
+ case RI_MAIN_COLLECTION: break;
+ case RI_MAIN_COLLECTION_END: break;
+
+ default: break;
+ }
break;
case RI_TYPE_GLOBAL:
+ switch(tag)
+ {
+ case RI_GLOBAL_USAGE_PAGE : break;
+ case RI_GLOBAL_LOGICAL_MIN : break;
+ case RI_GLOBAL_LOGICAL_MAX : break;
+ case RI_GLOBAL_PHYSICAL_MIN : break;
+ case RI_GLOBAL_PHYSICAL_MAX : break;
+ case RI_GLOBAL_UNIT_EXPONENT : break;
+ case RI_GLOBAL_UNIT : break;
+ case RI_GLOBAL_REPORT_SIZE : break;
+ case RI_GLOBAL_REPORT_ID : break;
+ case RI_GLOBAL_REPORT_COUNT : break;
+ case RI_GLOBAL_PUSH : break;
+ case RI_GLOBAL_POP : break;
+
+ default: break;
+ }
break;
case RI_TYPE_LOCAL:
+ switch(tag)
+ {
+ case RI_LOCAL_USAGE : break;
+ case RI_LOCAL_USAGE_MIN : break;
+ case RI_LOCAL_USAGE_MAX : break;
+ case RI_LOCAL_DESIGNATOR_INDEX : break;
+ case RI_LOCAL_DESIGNATOR_MIN : break;
+ case RI_LOCAL_DESIGNATOR_MAX : break;
+ case RI_LOCAL_STRING_INDEX : break;
+ case RI_LOCAL_STRING_MIN : break;
+ case RI_LOCAL_STRING_MAX : break;
+ case RI_LOCAL_DELIMITER : break;
+ default: break;
+ }
break;
// error