From 57088638598ccd0ea185debb8ca0fc7cbb404587 Mon Sep 17 00:00:00 2001 From: hathach Date: Sat, 21 Sep 2013 14:28:59 +0700 Subject: [PATCH] house keeping, clean up warnings --- .../boards/embedded_artists/board_ea4357.h | 4 +- .../CMSIS_LPC43xx_DriverLib/inc/LPC43xx.h | 1 + .../host/host_cmsis_rtx/host_cmsis_rtx.uvopt | 20 +++--- demos/host/host_os_none/host_os_none.ewp | 6 ++ demos/host/src/main.c | 1 + demos/host/src/msc_app.h | 71 +++++++++++++++++++ .../test/host/usbh/test_enum_task.c | 7 ++ tinyusb/class/cdc_host.c | 38 ++-------- tinyusb/class/hid_host.c | 21 ++---- tinyusb/class/msc_host.c | 9 ++- tinyusb/class/msc_host.h | 2 +- tinyusb/host/ehci/ehci.c | 4 +- tinyusb/host/usbh.c | 6 +- 13 files changed, 121 insertions(+), 69 deletions(-) create mode 100644 demos/host/src/msc_app.h diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.h b/demos/bsp/boards/embedded_artists/board_ea4357.h index 138e6e199..2a6ef8490 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.h +++ b/demos/bsp/boards/embedded_artists/board_ea4357.h @@ -66,8 +66,8 @@ #include "oem_base_board/pca9532.h" // LEDs -#define CFG_PRINTF_TARGET PRINTF_TARGET_SWO -//#define CFG_PRINTF_TARGET PRINTF_TARGET_UART +//#define CFG_PRINTF_TARGET PRINTF_TARGET_SWO +#define CFG_PRINTF_TARGET PRINTF_TARGET_UART // FIXME keil's cmsis rtx does not work with UART (work with SWO) /*========================================================================= HARDWARE MAC ADDRESS diff --git a/demos/bsp/lpc43xx/CMSIS_LPC43xx_DriverLib/inc/LPC43xx.h b/demos/bsp/lpc43xx/CMSIS_LPC43xx_DriverLib/inc/LPC43xx.h index 88872efab..860d7cba0 100644 --- a/demos/bsp/lpc43xx/CMSIS_LPC43xx_DriverLib/inc/LPC43xx.h +++ b/demos/bsp/lpc43xx/CMSIS_LPC43xx_DriverLib/inc/LPC43xx.h @@ -49,6 +49,7 @@ extern "C" { #elif defined(__GNUC__) /* anonymous unions are enabled by default */ #elif defined(__IAR_SYSTEMS_ICC__) + #pragma diag_suppress=Pe161 // suppress unknow pragma #pragma push #pragma language=extended #else diff --git a/demos/host/host_cmsis_rtx/host_cmsis_rtx.uvopt b/demos/host/host_cmsis_rtx/host_cmsis_rtx.uvopt index 6d3c1ab8f..4ee637487 100644 --- a/demos/host/host_cmsis_rtx/host_cmsis_rtx.uvopt +++ b/demos/host/host_cmsis_rtx/host_cmsis_rtx.uvopt @@ -529,7 +529,7 @@ 0 0 0 - 40 + 41 56 0 ..\..\bsp\boards\embedded_artists\board_ea4357.c @@ -681,7 +681,7 @@ 0 30 0 - 27 + 28 39 0 ..\..\..\tinyusb\tusb.c @@ -745,7 +745,7 @@ 0 38 0 - 357 + 358 364 0 ..\..\..\tinyusb\host\usbh.c @@ -761,7 +761,7 @@ 0 18 0 - 584 + 589 606 0 ..\..\..\tinyusb\host\ehci\ehci.c @@ -993,7 +993,7 @@ 0 0 0 - 390 + 391 406 0 ..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\lpc43xx_cgu.c @@ -1009,7 +1009,7 @@ 0 44 0 - 47 + 48 60 0 ..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\system_LPC43xx.c @@ -1049,7 +1049,7 @@ 0 0 0 - 137 + 138 151 0 ..\..\bsp\lpc43xx\startup_keil\startup_LPC43xx.s @@ -1071,10 +1071,10 @@ 1 0 0 - 0 + 13 0 - 202 - 204 + 203 + 215 0 ..\..\..\vendor\cmsis_rtos_rtx\RTX_Conf_CM.c RTX_Conf_CM.c diff --git a/demos/host/host_os_none/host_os_none.ewp b/demos/host/host_os_none/host_os_none.ewp index 8176206fd..31e345cc5 100644 --- a/demos/host/host_os_none/host_os_none.ewp +++ b/demos/host/host_os_none/host_os_none.ewp @@ -938,6 +938,9 @@ $PROJ_DIR$\..\src\mouse_app.c + + $PROJ_DIR$\..\src\msc_app.c + $PROJ_DIR$\..\src\rndis_app.c @@ -1003,6 +1006,9 @@ $PROJ_DIR$\..\..\..\tinyusb\class\hid_host.c + + $PROJ_DIR$\..\..\..\tinyusb\class\msc_host.c + common diff --git a/demos/host/src/main.c b/demos/host/src/main.c index 66df55d7a..6ec9fd795 100644 --- a/demos/host/src/main.c +++ b/demos/host/src/main.c @@ -52,6 +52,7 @@ #include "mouse_app.h" #include "keyboard_app.h" +#include "msc_app.h" #include "cdc_serial_app.h" #include "rndis_app.h" diff --git a/demos/host/src/msc_app.h b/demos/host/src/msc_app.h new file mode 100644 index 000000000..dc56bbdd8 --- /dev/null +++ b/demos/host/src/msc_app.h @@ -0,0 +1,71 @@ +/**************************************************************************/ +/*! + @file msc_app.h + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_MSC_APP_H_ +#define _TUSB_MSC_APP_H_ + +#include +#include + +#include "boards/board.h" +#include "tusb.h" + + +#ifdef __cplusplus + extern "C" { +#endif + + +void msc_app_init(void); +OSAL_TASK_FUNCTION( msc_app_task ) (void* p_task_para); + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_MSC_APP_H_ */ + +/** @} */ diff --git a/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c b/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c index c7f604d39..b036084d3 100644 --- a/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c +++ b/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c @@ -159,6 +159,13 @@ tusb_error_t control_xfer_stub(uint8_t dev_addr, const tusb_control_request_t * memcpy(data, &desc_configuration, p_request->wLength); break; + case 5: // set configure + TEST_ASSERT_EQUAL(TUSB_REQUEST_SET_CONFIGURATION, p_request->bRequest); + TEST_ASSERT_EQUAL(1, p_request->wValue); + TEST_ASSERT_EQUAL(0, p_request->wIndex); + TEST_ASSERT_EQUAL(0, p_request->wLength); + break; + default: return TUSB_ERROR_OSAL_TIMEOUT; } diff --git a/tinyusb/class/cdc_host.c b/tinyusb/class/cdc_host.c index c90e84dbb..15a232184 100644 --- a/tinyusb/class/cdc_host.c +++ b/tinyusb/class/cdc_host.c @@ -224,10 +224,7 @@ tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con #endif { // FIXME mounted class flag is not set yet - if (tusbh_cdc_mounted_cb) - { - tusbh_cdc_mounted_cb(dev_addr); - } + tusbh_cdc_mounted_cb(dev_addr); } OSAL_SUBTASK_END @@ -243,15 +240,12 @@ void cdch_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes rndish_xfer_isr(p_cdc, pipe_hdl, event, xferred_bytes); } else #endif - if (tusbh_cdc_xfer_isr) - { - tusbh_cdc_xfer_isr( pipe_hdl.dev_addr, event, get_app_pipeid(pipe_hdl), xferred_bytes ); - } + + tusbh_cdc_xfer_isr( pipe_hdl.dev_addr, event, get_app_pipeid(pipe_hdl), xferred_bytes ); } void cdch_close(uint8_t dev_addr) { - tusb_error_t err1, err2, err3; cdch_data_t * p_cdc = &cdch_data[dev_addr-1]; #if TUSB_CFG_HOST_CDC_RNDIS @@ -261,20 +255,9 @@ void cdch_close(uint8_t dev_addr) } #endif - if ( pipehandle_is_valid(p_cdc->pipe_notification) ) - { - err1 = hcd_pipe_close(p_cdc->pipe_notification); - } - - if ( pipehandle_is_valid(p_cdc->pipe_in) ) - { - err2 = hcd_pipe_close(p_cdc->pipe_in); - } - - if ( pipehandle_is_valid(p_cdc->pipe_out) ) - { - err3 = hcd_pipe_close(p_cdc->pipe_out); - } + (void) hcd_pipe_close(p_cdc->pipe_notification); + (void) hcd_pipe_close(p_cdc->pipe_in); + (void) hcd_pipe_close(p_cdc->pipe_out); #if TUSB_CFG_HOST_CDC_RNDIS @@ -282,14 +265,7 @@ void cdch_close(uint8_t dev_addr) memclr_(p_cdc, sizeof(cdch_data_t)); - if (tusbh_cdc_unmounted_isr) - { - tusbh_cdc_unmounted_isr(dev_addr); - } - - ASSERT(err1 == TUSB_ERROR_NONE && - err2 == TUSB_ERROR_NONE && - err3 == TUSB_ERROR_NONE, VOID_RETURN ); + tusbh_cdc_unmounted_isr(dev_addr); } diff --git a/tinyusb/class/hid_host.c b/tinyusb/class/hid_host.c index de44bb416..9018c6123 100644 --- a/tinyusb/class/hid_host.c +++ b/tinyusb/class/hid_host.c @@ -244,10 +244,7 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con if ( HID_PROTOCOL_KEYBOARD == p_interface_desc->bInterfaceProtocol) { SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &keyboardh_data[dev_addr-1]) ); - if ( tusbh_hid_keyboard_mounted_cb ) - { - tusbh_hid_keyboard_mounted_cb(dev_addr); - } + tusbh_hid_keyboard_mounted_cb(dev_addr); } else #endif @@ -255,10 +252,7 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con if ( HID_PROTOCOL_MOUSE == p_interface_desc->bInterfaceProtocol) { SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &mouseh_data[dev_addr-1]) ); - if (tusbh_hid_mouse_mounted_cb) - { - tusbh_hid_mouse_mounted_cb(dev_addr); - } + tusbh_hid_mouse_mounted_cb(dev_addr); } else #endif @@ -281,10 +275,7 @@ void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes if ( pipehandle_is_equal(pipe_hdl, keyboardh_data[pipe_hdl.dev_addr-1].pipe_hdl) ) { keyboardh_data[pipe_hdl.dev_addr-1].status = (event == TUSB_EVENT_XFER_COMPLETE) ? TUSB_INTERFACE_STATUS_COMPLETE : TUSB_INTERFACE_STATUS_ERROR; - if (tusbh_hid_keyboard_isr) - { - tusbh_hid_keyboard_isr(pipe_hdl.dev_addr, event); - } + tusbh_hid_keyboard_isr(pipe_hdl.dev_addr, event); return; } #endif @@ -293,11 +284,7 @@ void hidh_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes if ( pipehandle_is_equal(pipe_hdl, mouseh_data[pipe_hdl.dev_addr-1].pipe_hdl) ) { mouseh_data[pipe_hdl.dev_addr-1].status = (event == TUSB_EVENT_XFER_COMPLETE) ? TUSB_INTERFACE_STATUS_COMPLETE : TUSB_INTERFACE_STATUS_ERROR; - if (tusbh_hid_mouse_isr) - { - tusbh_hid_mouse_isr(pipe_hdl.dev_addr, event); - } - + tusbh_hid_mouse_isr(pipe_hdl.dev_addr, event); return; } #endif diff --git a/tinyusb/class/msc_host.c b/tinyusb/class/msc_host.c index 6dc2d0a65..f5c4dbd25 100644 --- a/tinyusb/class/msc_host.c +++ b/tinyusb/class/msc_host.c @@ -94,7 +94,7 @@ tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con } //------------- Open Data Pipe -------------// - tusb_descriptor_endpoint_t const *p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( p_interface_desc ); + tusb_descriptor_endpoint_t const *p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_interface_desc ); for(uint32_t i=0; i<2; i++) { ASSERT_INT(TUSB_DESC_TYPE_ENDPOINT, p_endpoint->bDescriptorType, TUSB_ERROR_USBH_DESCRIPTOR_CORRUPTED); @@ -105,7 +105,7 @@ tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con (*p_pipe_hdl) = hcd_pipe_open(dev_addr, p_endpoint, TUSB_CLASS_MSC); ASSERT ( pipehandle_is_valid(*p_pipe_hdl), TUSB_ERROR_HCD_OPEN_PIPE_FAILED ); - p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( p_endpoint ); + p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_endpoint ); } msch_data[dev_addr-1].interface_number = p_interface_desc->bInterfaceNumber; @@ -119,8 +119,7 @@ tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con error ); - SUBTASK_ASSERT( TUSB_ERROR_NONE != error /* && TODO STALL means zero */); - + SUBTASK_ASSERT( TUSB_ERROR_NONE == error /* && TODO STALL means zero */); msch_data[dev_addr-1].max_lun = msch_buffer[0]; //------------- SCSI Inquiry -------------// @@ -133,7 +132,7 @@ tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con return TUSB_ERROR_NONE; } -void msch_isr(pipe_handle_t pipe_hdl, tusb_event_t event) +void msch_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes) { } diff --git a/tinyusb/class/msc_host.h b/tinyusb/class/msc_host.h index 8f90d8923..d6a976397 100644 --- a/tinyusb/class/msc_host.h +++ b/tinyusb/class/msc_host.h @@ -77,7 +77,7 @@ void tusbh_msc_mounted_cb(uint8_t dev_addr); void msch_init(void); tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t const *p_interface_desc, uint16_t *p_length) ATTR_WARN_UNUSED_RESULT; -void msch_isr(pipe_handle_t pipe_hdl, tusb_event_t event); +void msch_isr(pipe_handle_t pipe_hdl, tusb_event_t event, uint32_t xferred_bytes); void msch_close(uint8_t dev_addr); #endif diff --git a/tinyusb/host/ehci/ehci.c b/tinyusb/host/ehci/ehci.c index 9ec9fc7a8..3a8562a36 100644 --- a/tinyusb/host/ehci/ehci.c +++ b/tinyusb/host/ehci/ehci.c @@ -689,7 +689,9 @@ void hcd_isr(uint8_t hostid) { ehci_registers_t* const regs = get_operational_register(hostid); - uint32_t int_status = regs->usb_sts & regs->usb_int_enable; + uint32_t int_status = regs->usb_sts; + int_status &= regs->usb_int_enable; + regs->usb_sts |= int_status; // Acknowledge handled interrupt if (int_status == 0) diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c index dd930845e..67cc8f96c 100644 --- a/tinyusb/host/usbh.c +++ b/tinyusb/host/usbh.c @@ -206,9 +206,11 @@ tusb_error_t usbh_control_xfer_subtask(uint8_t dev_addr, uint8_t bmRequestType, #ifndef _TEST_ usbh_devices[dev_addr].control.pipe_status = 0; #else - usbh_devices[dev_addr].control.pipe_status = TUSB_EVENT_XFER_COMPLETE; // in Test project, mark as complete to imm pass + usbh_devices[dev_addr].control.pipe_status = TUSB_EVENT_XFER_COMPLETE; // in Test project, mark as complete immediately #endif - /*SUBTASK_ASSERT_STATUS*/ (void) ( hcd_pipe_control_xfer(dev_addr, &usbh_devices[dev_addr].control.request, data) ); + + SUBTASK_ASSERT_STATUS_WITH_HANDLER( hcd_pipe_control_xfer(dev_addr, &usbh_devices[dev_addr].control.request, data), + osal_mutex_release(usbh_devices[dev_addr].control.mutex_hdl) ); osal_semaphore_wait(usbh_devices[dev_addr].control.sem_hdl, OSAL_TIMEOUT_NORMAL, &error); // careful of local variable without static osal_mutex_release(usbh_devices[dev_addr].control.mutex_hdl);