diff options
| author | hathach <[email protected]> | 2013-07-03 11:36:08 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-07-03 11:36:08 +0700 |
| commit | 1667ef5041ad80d0f7b9dc76c286b8c59cedf180 (patch) | |
| tree | 5199d458d727f607302cc9d895d3386862efbe17 /tinyusb/class | |
| parent | b3f98bc15a47bea88806cbfdc899d46efe40d921 (diff) | |
replace tusbh_cdc_isr by tusbh_cdc_xfer_isr with extra parameter as
- pipe id
- xferred_bytes
host_class_driver_t add xferred_bytes parameter
void (* const isr) (pipe_handle_t, tusb_event_t); --> void (* const isr) (pipe_handle_t, tusb_event_t, uint32_t);
update hid_host & its tests
Diffstat (limited to 'tinyusb/class')
| -rw-r--r-- | tinyusb/class/cdc_host.c | 16 | ||||
| -rw-r--r-- | tinyusb/class/cdc_host.h | 4 | ||||
| -rw-r--r-- | tinyusb/class/hid_host.c | 2 | ||||
| -rw-r--r-- | tinyusb/class/hid_host.h | 2 |
4 files changed, 17 insertions, 7 deletions
diff --git a/tinyusb/class/cdc_host.c b/tinyusb/class/cdc_host.c index d2830e41e..023c69a19 100644 --- a/tinyusb/class/cdc_host.c +++ b/tinyusb/class/cdc_host.c @@ -63,6 +63,16 @@ STATIC_ INLINE_ bool tusbh_cdc_is_mounted(uint8_t dev_addr) return (tusbh_device_get_mounted_class_flag(dev_addr) & BIT_(TUSB_CLASS_CDC)) != 0; } +static inline cdc_pipeid_t get_app_pipeid(pipe_handle_t pipe_hdl) ATTR_PURE ATTR_ALWAYS_INLINE; +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 : 0; +} + //--------------------------------------------------------------------+ // APPLICATION API (parameter validation needed) //--------------------------------------------------------------------+ @@ -186,11 +196,11 @@ tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con return TUSB_ERROR_NONE; } -void cdch_isr(pipe_handle_t pipe_hdl, tusb_event_t event) +void cdch_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes) { - if (tusbh_cdc_isr) + if (tusbh_cdc_xfer_isr) { - tusbh_cdc_isr(pipe_hdl.dev_addr, event); + tusbh_cdc_xfer_isr( pipe_hdl.dev_addr, event, get_app_pipeid(pipe_hdl), xferred_bytes ); } } diff --git a/tinyusb/class/cdc_host.h b/tinyusb/class/cdc_host.h index 100042b50..fc21fcc25 100644 --- a/tinyusb/class/cdc_host.h +++ b/tinyusb/class/cdc_host.h @@ -72,7 +72,7 @@ tusb_error_t tusbh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t lengt void tusbh_cdc_mounted_isr(uint8_t dev_addr) ATTR_WEAK; void tusbh_cdc_unmounted_isr(uint8_t dev_addr) ATTR_WEAK; void tusbh_cdc_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK; -void tusbh_cdc_xfer_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK; +void tusbh_cdc_xfer_isr(uint8_t dev_addr, tusb_event_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes) ATTR_WEAK; //--------------------------------------------------------------------+ // USBH-CLASS API //--------------------------------------------------------------------+ @@ -91,7 +91,7 @@ extern cdch_data_t cdch_data[TUSB_CFG_HOST_DEVICE_MAX]; // TODO consider to move void cdch_init(void); tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t const *p_interface_desc, uint16_t *p_length) ATTR_WARN_UNUSED_RESULT; -void cdch_isr(pipe_handle_t pipe_hdl, tusb_event_t event); +void cdch_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes); void cdch_close(uint8_t dev_addr); #endif diff --git a/tinyusb/class/hid_host.c b/tinyusb/class/hid_host.c index 9328ba782..13949c0d4 100644 --- a/tinyusb/class/hid_host.c +++ b/tinyusb/class/hid_host.c @@ -288,7 +288,7 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con OSAL_SUBTASK_END } -void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event) +void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes) { #if TUSB_CFG_HOST_HID_KEYBOARD if ( pipehandle_is_equal(pipe_hdl, keyboard_data[pipe_hdl.dev_addr-1].pipe_hdl) ) diff --git a/tinyusb/class/hid_host.h b/tinyusb/class/hid_host.h index e9337b5c1..510cbc950 100644 --- a/tinyusb/class/hid_host.h +++ b/tinyusb/class/hid_host.h @@ -99,7 +99,7 @@ typedef struct { void hidh_init(void); tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t const *p_interface_desc, uint16_t *p_length) ATTR_WARN_UNUSED_RESULT; -void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event); +void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes); void hidh_close(uint8_t dev_addr); #endif |
