diff options
| author | hathach <[email protected]> | 2013-06-23 01:10:59 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-06-23 01:10:59 +0700 |
| commit | 2cc5df9b009a0e515be28a01ec50085eda0fcab4 (patch) | |
| tree | 29fe6820a8ea0450069084d2900834786bfc651e /tinyusb/class | |
| parent | fe53297b17f59307d11ebfd303b8d09c7070ff4d (diff) | |
add custom bulk out test
Diffstat (limited to 'tinyusb/class')
| -rw-r--r-- | tinyusb/class/custom_class_host.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/tinyusb/class/custom_class_host.c b/tinyusb/class/custom_class_host.c index e0f9ce5b0..39d4c260a 100644 --- a/tinyusb/class/custom_class_host.c +++ b/tinyusb/class/custom_class_host.c @@ -57,10 +57,7 @@ //--------------------------------------------------------------------+ custom_interface_info_t custom_interface[TUSB_CFG_HOST_DEVICE_MAX]; -//--------------------------------------------------------------------+ -// APPLICATION API -//--------------------------------------------------------------------+ -tusb_error_t tusbh_custom_read(uint8_t dev_addr, uint16_t vendor_id, uint16_t product_id, void * p_buffer, uint16_t length) +static tusb_error_t cush_validate_paras(uint8_t dev_addr, uint16_t vendor_id, uint16_t product_id, void * p_buffer, uint16_t length) { if ( !tusbh_custom_is_mounted(dev_addr, vendor_id, product_id) ) { @@ -68,6 +65,16 @@ tusb_error_t tusbh_custom_read(uint8_t dev_addr, uint16_t vendor_id, uint16_t pr } ASSERT( p_buffer != NULL && length != 0, TUSB_ERROR_INVALID_PARA); + + return TUSB_ERROR_NONE; +} +//--------------------------------------------------------------------+ +// APPLICATION API (need to check parameters) +//--------------------------------------------------------------------+ +tusb_error_t tusbh_custom_read(uint8_t dev_addr, uint16_t vendor_id, uint16_t product_id, void * p_buffer, uint16_t length) +{ + ASSERT_STATUS( cush_validate_paras(dev_addr, vendor_id, product_id, p_buffer, length) ); + if ( !hcd_pipe_is_idle(custom_interface[dev_addr-1].pipe_in) ) { return TUSB_ERROR_INTERFACE_IS_BUSY; @@ -80,6 +87,15 @@ tusb_error_t tusbh_custom_read(uint8_t dev_addr, uint16_t vendor_id, uint16_t pr tusb_error_t tusbh_custom_write(uint8_t dev_addr, uint16_t vendor_id, uint16_t product_id, void const * p_data, uint16_t length) { + ASSERT_STATUS( cush_validate_paras(dev_addr, vendor_id, product_id, p_data, length) ); + + if ( !hcd_pipe_is_idle(custom_interface[dev_addr-1].pipe_out) ) + { + return TUSB_ERROR_INTERFACE_IS_BUSY; + } + + (void) hcd_pipe_xfer( custom_interface[dev_addr-1].pipe_out, p_data, length, true); + return TUSB_ERROR_NONE; } |
