summaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-05-01 19:29:56 +0700
committerhathach <[email protected]>2019-05-01 19:29:56 +0700
commitc006f3dbce7820bbdc2c1736ba0cb4a4e629f0b6 (patch)
tree4f17a56b9e93a95bbad997f7ac59199c4a9ecbfd /src/device
parent90fdae94f8f0f86af5e7be3b14561baae1abb2fd (diff)
adding optional ep out for hid
refactor usbd_open_edpt_pair
Diffstat (limited to 'src/device')
-rw-r--r--src/device/usbd.c20
-rw-r--r--src/device/usbd_pvt.h3
2 files changed, 11 insertions, 12 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index f02b21208..d811c471a 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -702,25 +702,25 @@ void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_
// Helper
//--------------------------------------------------------------------+
-// Helper to parse an pair of endpoint descriptors (IN & OUT)
-bool usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* ep_desc, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in)
+// Parse consecutive endpoint descriptors (IN & OUT)
+bool usbd_open_edpt_pair(uint8_t rhport, uint8_t const* p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in)
{
- for(int i=0; i<2; i++)
+ for(int i=0; i<ep_count; i++)
{
- TU_ASSERT(TUSB_DESC_ENDPOINT == ep_desc->bDescriptorType &&
- xfer_type == ep_desc->bmAttributes.xfer );
+ tusb_desc_endpoint_t const * desc_ep = (tusb_desc_endpoint_t const *) p_desc;
- TU_ASSERT(dcd_edpt_open(rhport, ep_desc));
+ TU_VERIFY(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType && xfer_type == desc_ep->bmAttributes.xfer);
+ TU_ASSERT(dcd_edpt_open(rhport, desc_ep));
- if ( tu_edpt_dir(ep_desc->bEndpointAddress) == TUSB_DIR_IN )
+ if ( tu_edpt_dir(desc_ep->bEndpointAddress) == TUSB_DIR_IN )
{
- (*ep_in) = ep_desc->bEndpointAddress;
+ (*ep_in) = desc_ep->bEndpointAddress;
}else
{
- (*ep_out) = ep_desc->bEndpointAddress;
+ (*ep_out) = desc_ep->bEndpointAddress;
}
- ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(ep_desc);
+ p_desc = tu_desc_next(p_desc);
}
return true;
diff --git a/src/device/usbd_pvt.h b/src/device/usbd_pvt.h
index 8518ee209..fb3672359 100644
--- a/src/device/usbd_pvt.h
+++ b/src/device/usbd_pvt.h
@@ -53,9 +53,8 @@ bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr);
/*------------------------------------------------------------------*/
/* Helper
*------------------------------------------------------------------*/
-// helper to parse an pair of In and Out endpoint descriptors. They must be consecutive
-bool usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* p_desc_ep, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in);
+bool usbd_open_edpt_pair(uint8_t rhport, uint8_t const* p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in);
void usbd_defer_func( osal_task_func_t func, void* param, bool in_isr );