diff options
| author | hathach <[email protected]> | 2013-09-13 23:32:07 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-09-13 23:32:07 +0700 |
| commit | 0d279facbbb326b07e5dd84c3baabfa841d132f9 (patch) | |
| tree | 1c20fd9a1cd834b8bcd530a7eca3d72d01c63f33 /tinyusb | |
| parent | 67453b89f03e43408bf165f610aa62a63c000f1c (diff) | |
fix cmsis rtx tick configuration
everything should work
TODO: remove static for variable error in control xfer subtask
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/host/usbh.c | 12 | ||||
| -rw-r--r-- | tinyusb/osal/osal_common.h | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c index a4cbabb9d..99072bc7f 100644 --- a/tinyusb/host/usbh.c +++ b/tinyusb/host/usbh.c @@ -108,7 +108,7 @@ static host_class_driver_t const usbh_class_drivers[TUSB_CLASS_MAPPED_INDEX_END] usbh_device_info_t usbh_devices[TUSB_CFG_HOST_DEVICE_MAX+1] TUSB_CFG_ATTR_USBRAM; // including zero-address //------------- Enumeration Task Data -------------// -OSAL_TASK_DEF(enum_task_def, "tinyusb host", usbh_enumeration_task, 150, TUSB_CFG_OS_TASK_PRIO); +OSAL_TASK_DEF(usbh_enumeration_task, 150, TUSB_CFG_OS_TASK_PRIO); OSAL_QUEUE_DEF(enum_queue_def, ENUM_QUEUE_DEPTH, uint32_t); osal_queue_handle_t enum_queue_hdl; STATIC_ uint8_t enum_data_buffer[TUSB_CFG_HOST_ENUM_BUFFER_SIZE] TUSB_CFG_ATTR_USBRAM; @@ -136,7 +136,7 @@ static inline uint8_t std_class_code_to_index(uint8_t std_class_code) tusb_device_state_t tusbh_device_get_state (uint8_t const dev_addr) { ASSERT_INT_WITHIN(1, TUSB_CFG_HOST_DEVICE_MAX, dev_addr, TUSB_DEVICE_STATE_INVALID_PARAMETER); - return usbh_devices[dev_addr].state; + return (tusb_device_state_t) usbh_devices[dev_addr].state; } uint32_t tusbh_device_get_mounted_class_flag(uint8_t dev_addr) @@ -154,9 +154,9 @@ tusb_error_t usbh_init(void) ASSERT_STATUS( hcd_init() ); //------------- Enumeration & Reporter Task init -------------// - ASSERT_STATUS( osal_task_create(&enum_task_def) ); - enum_queue_hdl = osal_queue_create(&enum_queue_def); + enum_queue_hdl = osal_queue_create( OSAL_QUEUE_REF(enum_queue_def) ); ASSERT_PTR(enum_queue_hdl, TUSB_ERROR_OSAL_QUEUE_FAILED); + ASSERT_STATUS( osal_task_create( OSAL_TASK_REF(usbh_enumeration_task) )); //------------- Semaphore, Mutex for Control Pipe -------------// for(uint8_t i=0; i<TUSB_CFG_HOST_DEVICE_MAX+1; i++) // including address zero @@ -166,7 +166,7 @@ tusb_error_t usbh_init(void) p_device->control.sem_hdl = osal_semaphore_create( OSAL_SEM_REF(p_device->control.semaphore) ); ASSERT_PTR(p_device->control.sem_hdl, TUSB_ERROR_OSAL_SEMAPHORE_FAILED); - p_device->control.mutex_hdl = osal_mutex_create ( OSAL_SEM_REF(p_device->control.mutex) ); + p_device->control.mutex_hdl = osal_mutex_create ( OSAL_MUTEX_REF(p_device->control.mutex) ); ASSERT_PTR(p_device->control.mutex_hdl, TUSB_ERROR_OSAL_MUTEX_FAILED); } @@ -187,7 +187,7 @@ tusb_error_t usbh_init(void) tusb_error_t usbh_control_xfer_subtask(uint8_t dev_addr, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, uint8_t* data) { - tusb_error_t error; + static tusb_error_t error; // FIXME cmsis-rtx use svc for OS API, error value changed after mutex release at the end of function OSAL_SUBTASK_BEGIN diff --git a/tinyusb/osal/osal_common.h b/tinyusb/osal/osal_common.h index a70242e70..b97e68af4 100644 --- a/tinyusb/osal/osal_common.h +++ b/tinyusb/osal/osal_common.h @@ -65,6 +65,7 @@ enum OSAL_TIMEOUT_WAIT_FOREVER = 0x0EEEEEEE }; +// TODO refractor/remove this function and/or TUSB_CFG_OS_TICKS_PER_SECOND if using an RTOS static inline uint32_t osal_tick_from_msec(uint32_t msec) ATTR_CONST ATTR_ALWAYS_INLINE; static inline uint32_t osal_tick_from_msec(uint32_t msec) { |
