summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-12-10 05:40:02 +0700
committerhathach <[email protected]>2018-12-10 05:44:08 +0700
commita31f83dbb0d123d15dcc393dd9d926a4cc7352b6 (patch)
tree6319734b0e9096b41be6776bc1a240ab645d1431
parent75baedf27d09e57deb9d88cc7c82d95b0d530bca (diff)
removing pipe handle
-rw-r--r--src/class/cdc/cdc_host.c13
-rw-r--r--src/class/cdc/cdc_host.h2
-rw-r--r--src/host/ehci/ehci.c4
-rw-r--r--src/host/hub.c8
-rw-r--r--src/host/hub.h2
-rw-r--r--src/host/usbh.c7
-rw-r--r--src/host/usbh.h2
-rw-r--r--src/host/usbh_hcd.h2
8 files changed, 15 insertions, 25 deletions
diff --git a/src/class/cdc/cdc_host.c b/src/class/cdc/cdc_host.c
index 5e410fbf9..6eadca23d 100644
--- a/src/class/cdc/cdc_host.c
+++ b/src/class/cdc/cdc_host.c
@@ -57,15 +57,6 @@
//--------------------------------------------------------------------+
STATIC_VAR cdch_data_t cdch_data[CFG_TUSB_HOST_DEVICE_MAX]; // TODO to be static
-static inline cdc_pipeid_t get_app_pipeid(pipe_handle_t pipe_hdl)
-{
- cdch_data_t const * p_cdc = &cdch_data[pipe_hdl.dev_addr-1];
-
- return pipehandle_is_equal( pipe_hdl, p_cdc->pipe_notification ) ? CDC_PIPE_NOTIFICATION :
- pipehandle_is_equal( pipe_hdl, p_cdc->pipe_in ) ? CDC_PIPE_DATA_IN :
- pipehandle_is_equal( pipe_hdl, p_cdc->pipe_out ) ? CDC_PIPE_DATA_OUT : CDC_PIPE_ERROR;
-}
-
static inline bool tusbh_cdc_is_mounted(uint8_t dev_addr)
{
return pipehandle_is_valid(cdch_data[dev_addr-1].pipe_in) && pipehandle_is_valid(cdch_data[dev_addr-1].pipe_out);
@@ -221,9 +212,9 @@ bool cdch_open_subtask(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t c
return true;
}
-void cdch_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes)
+void cdch_isr(uint8_t dev_addr, xfer_result_t event, uint32_t xferred_bytes)
{
- tuh_cdc_xfer_isr( pipe_hdl.dev_addr, event, get_app_pipeid(pipe_hdl), xferred_bytes );
+ tuh_cdc_xfer_isr( dev_addr, event, 0, xferred_bytes );
}
void cdch_close(uint8_t dev_addr)
diff --git a/src/class/cdc/cdc_host.h b/src/class/cdc/cdc_host.h
index faf4cfe93..02eaa16e4 100644
--- a/src/class/cdc/cdc_host.h
+++ b/src/class/cdc/cdc_host.h
@@ -151,7 +151,7 @@ extern cdch_data_t cdch_data[CFG_TUSB_HOST_DEVICE_MAX]; // TODO consider to move
void cdch_init(void);
bool cdch_open_subtask(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *p_interface_desc, uint16_t *p_length) ATTR_WARN_UNUSED_RESULT;
-void cdch_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes);
+void cdch_isr(uint8_t dev_addr, xfer_result_t event, uint32_t xferred_bytes);
void cdch_close(uint8_t dev_addr);
#endif
diff --git a/src/host/ehci/ehci.c b/src/host/ehci/ehci.c
index 2186bfcdf..445210c8b 100644
--- a/src/host/ehci/ehci.c
+++ b/src/host/ehci/ehci.c
@@ -647,7 +647,7 @@ static void qhd_xfer_complete_isr(ehci_qhd_t * p_qhd)
{
// end of request
// call USBH callback
- usbh_xfer_isr( qhd_create_pipe_handle(p_qhd), XFER_RESULT_SUCCESS, p_qhd->total_xferred_bytes);
+ usbh_xfer_isr(p_qhd->device_address, edpt_addr(p_qhd->endpoint_number, p_qhd->pid_non_control == EHCI_PID_IN ? 1 : 0), XFER_RESULT_SUCCESS, p_qhd->total_xferred_bytes);
p_qhd->total_xferred_bytes = 0;
}
@@ -741,7 +741,7 @@ static void qhd_xfer_error_isr(ehci_qhd_t * p_qhd)
}
// call USBH callback
- usbh_xfer_isr( qhd_create_pipe_handle(p_qhd), error_event, p_qhd->total_xferred_bytes);
+ usbh_xfer_isr(p_qhd->device_address, edpt_addr(p_qhd->endpoint_number, p_qhd->pid_non_control == EHCI_PID_IN ? 1 : 0), error_event, p_qhd->total_xferred_bytes);
p_qhd->total_xferred_bytes = 0;
}
diff --git a/src/host/hub.c b/src/host/hub.c
index 0b909bef0..5612f6cda 100644
--- a/src/host/hub.c
+++ b/src/host/hub.c
@@ -211,11 +211,11 @@ bool hub_open_subtask(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t co
// is the response of interrupt endpoint polling
#include "usbh_hcd.h" // FIXME remove
-void hub_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes)
+void hub_isr(uint8_t dev_addr, xfer_result_t event, uint32_t xferred_bytes)
{
(void) xferred_bytes; // TODO can be more than 1 for hub with lots of ports
- usbh_hub_t * p_hub = &hub_data[pipe_hdl.dev_addr-1];
+ usbh_hub_t * p_hub = &hub_data[dev_addr-1];
if ( event == XFER_RESULT_SUCCESS )
{
@@ -226,11 +226,11 @@ void hub_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes
{
hcd_event_t event =
{
- .rhport = _usbh_devices[pipe_hdl.dev_addr].rhport,
+ .rhport = _usbh_devices[dev_addr].rhport,
.event_id = HCD_EVENT_DEVICE_ATTACH
};
- event.attach.hub_addr = pipe_hdl.dev_addr;
+ event.attach.hub_addr = dev_addr;
event.attach.hub_port = port;
hcd_event_handler(&event, true);
diff --git a/src/host/hub.h b/src/host/hub.h
index 8d1fece4b..8e8416d8f 100644
--- a/src/host/hub.h
+++ b/src/host/hub.h
@@ -196,7 +196,7 @@ tusb_error_t hub_status_pipe_queue(uint8_t dev_addr);
void hub_init(void);
bool hub_open_subtask(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *p_interface_desc, uint16_t *p_length) ATTR_WARN_UNUSED_RESULT;
-void hub_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes);
+void hub_isr(uint8_t dev_addr, xfer_result_t event, uint32_t xferred_bytes);
void hub_close(uint8_t dev_addr);
#endif
diff --git a/src/host/usbh.c b/src/host/usbh.c
index 0df7c1dc8..a9e825f70 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -256,10 +256,9 @@ static inline tusb_error_t usbh_pipe_control_close(uint8_t dev_addr)
// USBH-HCD ISR/Callback API
//--------------------------------------------------------------------+
// interrupt caused by a TD (with IOC=1) in pipe of class class_code
-void usbh_xfer_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes)
+void usbh_xfer_isr(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
{
- usbh_device_t* dev = &_usbh_devices[ pipe_hdl.dev_addr ];
- uint8_t ep_addr = pipe_hdl.ep_addr;
+ usbh_device_t* dev = &_usbh_devices[ dev_addr ];
if (0 == edpt_number(ep_addr))
{
@@ -274,7 +273,7 @@ void usbh_xfer_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred
if (usbh_class_drivers[drv_id].isr)
{
- usbh_class_drivers[drv_id].isr(pipe_hdl, event, xferred_bytes);
+ usbh_class_drivers[drv_id].isr(dev_addr , event, xferred_bytes);
}
else
{
diff --git a/src/host/usbh.h b/src/host/usbh.h
index b04328e40..de43c8a4f 100644
--- a/src/host/usbh.h
+++ b/src/host/usbh.h
@@ -68,7 +68,7 @@ typedef struct {
void (* const init) (void);
bool (* const open_subtask)(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *, uint16_t* outlen);
- void (* const isr) (pipe_handle_t, xfer_result_t, uint32_t);
+ void (* const isr) (uint8_t dev_addr, xfer_result_t, uint32_t);
void (* const close) (uint8_t);
} host_class_driver_t;
//--------------------------------------------------------------------+
diff --git a/src/host/usbh_hcd.h b/src/host/usbh_hcd.h
index ce4469233..3c1c1511d 100644
--- a/src/host/usbh_hcd.h
+++ b/src/host/usbh_hcd.h
@@ -96,7 +96,7 @@ extern usbh_device_t _usbh_devices[CFG_TUSB_HOST_DEVICE_MAX+1]; // including zer
//--------------------------------------------------------------------+
// callback from HCD ISR
//--------------------------------------------------------------------+
-void usbh_xfer_isr(pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes);
+void usbh_xfer_isr(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
#ifdef __cplusplus