summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-12-11 00:56:21 +0700
committerhathach <[email protected]>2018-12-11 00:56:21 +0700
commit7a626dbc8b7edcf3303deb100f713f12038fefbe (patch)
tree6871c77b7525f0b65b150a60b7cc81b9667a1f30 /src/class
parente863c99a6fd50aee7cea2bcf3b86ce0cda14cf95 (diff)
completely remove pipe handle for cdc/hub/ehci
Diffstat (limited to 'src/class')
-rw-r--r--src/class/cdc/cdc_host.c44
1 files changed, 18 insertions, 26 deletions
diff --git a/src/class/cdc/cdc_host.c b/src/class/cdc/cdc_host.c
index a44a0b97c..78b338f15 100644
--- a/src/class/cdc/cdc_host.c
+++ b/src/class/cdc/cdc_host.c
@@ -52,14 +52,12 @@ typedef struct {
uint8_t itf_num;
uint8_t itf_protocol;
- cdc_acm_capability_t acm_capability;
-
- pipe_handle_t pipe_notification, pipe_out, pipe_in;
-
uint8_t ep_notif;
uint8_t ep_in;
uint8_t ep_out;
+ cdc_acm_capability_t acm_capability;
+
} cdch_data_t;
//--------------------------------------------------------------------+
@@ -82,13 +80,13 @@ bool tuh_cdc_is_busy(uint8_t dev_addr, cdc_pipeid_t pipeid)
switch (pipeid)
{
case CDC_PIPE_NOTIFICATION:
- return hcd_pipe_is_busy(dev_addr, p_cdc->pipe_notification );
+ return hcd_pipe_is_busy(dev_addr, p_cdc->ep_notif );
case CDC_PIPE_DATA_IN:
- return hcd_pipe_is_busy(dev_addr, p_cdc->pipe_in );
+ return hcd_pipe_is_busy(dev_addr, p_cdc->ep_in );
case CDC_PIPE_DATA_OUT:
- return hcd_pipe_is_busy(dev_addr, p_cdc->pipe_out );
+ return hcd_pipe_is_busy(dev_addr, p_cdc->ep_out );
default:
return false;
@@ -111,10 +109,10 @@ bool tuh_cdc_send(uint8_t dev_addr, void const * p_data, uint32_t length, bool i
TU_VERIFY( tuh_cdc_mounted(dev_addr) );
TU_VERIFY( p_data != NULL && length, TUSB_ERROR_INVALID_PARA);
- pipe_handle_t pipe_out = cdch_data[dev_addr-1].pipe_out;
- if ( hcd_pipe_is_busy(dev_addr, pipe_out) ) return false;
+ uint8_t const ep_out = cdch_data[dev_addr-1].ep_out;
+ if ( hcd_pipe_is_busy(dev_addr, ep_out) ) return false;
- return hcd_pipe_xfer(dev_addr, pipe_out, (void *) p_data, length, is_notify);
+ return hcd_pipe_xfer(dev_addr, ep_out, (void *) p_data, length, is_notify);
}
bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is_notify)
@@ -122,10 +120,10 @@ bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is
TU_VERIFY( tuh_cdc_mounted(dev_addr) );
TU_VERIFY( p_buffer != NULL && length, TUSB_ERROR_INVALID_PARA);
- pipe_handle_t pipe_in = cdch_data[dev_addr-1].pipe_in;
- if ( hcd_pipe_is_busy(dev_addr, pipe_in) ) return false;
+ uint8_t const ep_in = cdch_data[dev_addr-1].ep_in;
+ if ( hcd_pipe_is_busy(dev_addr, ep_in) ) return false;
- return hcd_pipe_xfer(dev_addr, pipe_in, p_buffer, length, is_notify);
+ return hcd_pipe_xfer(dev_addr, ep_in, p_buffer, length, is_notify);
}
//--------------------------------------------------------------------+
@@ -172,21 +170,19 @@ bool cdch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *it
if ( TUSB_DESC_ENDPOINT == p_desc[DESC_OFFSET_TYPE])
{
- // notification endpoint if any
+ // notification endpoint
tusb_desc_endpoint_t const * ep_desc = (tusb_desc_endpoint_t const *) p_desc;
- p_cdc->pipe_notification = hcd_pipe_open(rhport, dev_addr, ep_desc);
+ TU_ASSERT( hcd_pipe_open(rhport, dev_addr, ep_desc) );
p_cdc->ep_notif = ep_desc->bEndpointAddress;
(*p_length) += p_desc[DESC_OFFSET_LEN];
p_desc = descriptor_next(p_desc);
-
- TU_ASSERT(pipehandle_is_valid(p_cdc->pipe_notification));
}
//------------- Data Interface (if any) -------------//
if ( (TUSB_DESC_INTERFACE == p_desc[DESC_OFFSET_TYPE]) &&
- (TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) )
+ (TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) )
{
(*p_length) += p_desc[DESC_OFFSET_LEN];
p_desc = descriptor_next(p_desc);
@@ -198,11 +194,7 @@ bool cdch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *it
TU_ASSERT(TUSB_DESC_ENDPOINT == ep_desc->bDescriptorType);
TU_ASSERT(TUSB_XFER_BULK == ep_desc->bmAttributes.xfer);
- pipe_handle_t * p_pipe_hdl = ( ep_desc->bEndpointAddress & TUSB_DIR_IN_MASK ) ?
- &p_cdc->pipe_in : &p_cdc->pipe_out;
-
- (*p_pipe_hdl) = hcd_pipe_open(rhport, dev_addr, ep_desc);
- TU_ASSERT ( pipehandle_is_valid(*p_pipe_hdl) );
+ TU_ASSERT(hcd_pipe_open(rhport, dev_addr, ep_desc));
if ( edpt_dir(ep_desc->bEndpointAddress) == TUSB_DIR_IN )
{
@@ -241,9 +233,9 @@ void cdch_close(uint8_t dev_addr)
{
cdch_data_t * p_cdc = &cdch_data[dev_addr-1];
- hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->pipe_notification);
- hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->pipe_in);
- hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->pipe_out);
+ hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->ep_notif);
+ hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->ep_in);
+ hcd_pipe_close(TUH_OPT_RHPORT, dev_addr, p_cdc->ep_out);
tu_memclr(p_cdc, sizeof(cdch_data_t));
}