summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2021-10-06 16:55:33 +0700
committerGitHub <[email protected]>2021-10-06 16:55:33 +0700
commit9660a5821fd36af10235c400700ae7d2730ec55f (patch)
tree805ae08cfc71e00661946392b484f80c7cd5cd53 /src/class
parentd9bda631d4ce7e82322a5a71339c2556d410c1e0 (diff)
parentaa97b419b22f466c7034d42a0298fad3eafc5311 (diff)
Merge pull request #1123 from Daft-Freak/patch-1
Handle HID devices with OUT endpoint listed first
Diffstat (limited to 'src/class')
-rw-r--r--src/class/hid/hid_host.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/class/hid/hid_host.c b/src/class/hid/hid_host.c
index 8c66477b3..ac260d39b 100644
--- a/src/class/hid/hid_host.c
+++ b/src/class/hid/hid_host.c
@@ -291,7 +291,15 @@ bool hidh_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *de
tusb_desc_endpoint_t const * desc_ep = (tusb_desc_endpoint_t const *) p_desc;
TU_ASSERT(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType);
+ // first endpoint may be OUT, skip to IN endpoint
// TODO also open endpoint OUT
+ if(tu_edpt_dir(desc_ep->bEndpointAddress) == TUSB_DIR_OUT)
+ {
+ p_desc = tu_desc_next(p_desc);
+ desc_ep = (tusb_desc_endpoint_t const *) p_desc;
+ TU_ASSERT(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType);
+ }
+
TU_ASSERT( usbh_edpt_open(rhport, dev_addr, desc_ep) );
hidh_interface_t* hid_itf = get_instance(dev_addr, hid_dev->inst_count);