diff options
| author | hathach <[email protected]> | 2013-04-25 16:41:00 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-04-25 16:41:00 +0700 |
| commit | 3763e22c9a91e9bb21f9fa3dc5dafc9eea6254b7 (patch) | |
| tree | a7dad3f9b4b3b3fd39e381119d6213fb0f7ac0f3 /tinyusb | |
| parent | 1ae548432099fde8ccf9b0be5de899b2168c1f41 (diff) | |
change OSAL_TASK_DEF to decouple variable name with task name
implement osal_task_delay for freeRTOS & non_os
getting both no_os & freertos running with mouse + keyboard
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/host/usbh.c | 6 | ||||
| -rw-r--r-- | tinyusb/osal/osal.h | 4 | ||||
| -rw-r--r-- | tinyusb/osal/osal_freeRTOS.h | 12 | ||||
| -rw-r--r-- | tinyusb/osal/osal_none.h | 12 |
4 files changed, 24 insertions, 10 deletions
diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c index 3c1630b75..c62b75c48 100644 --- a/tinyusb/host/usbh.c +++ b/tinyusb/host/usbh.c @@ -89,7 +89,7 @@ static host_class_driver_t const usbh_class_drivers[TUSB_CLASS_MAX_CONSEC_NUMBER 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, usbh_enumeration_task, 128, TUSB_CFG_OS_TASK_PRIO); +OSAL_TASK_DEF(enum_task_def, "tinyusb host", usbh_enumeration_task, 128, 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; @@ -287,9 +287,7 @@ tusb_error_t enumeration_body_subtask(void) #ifndef _TEST_ // TODO finalize delay after reset, hack delay 100 ms, otherwise speed is detected as LOW in most cases - volatile uint32_t delay_us = 10000; - delay_us *= (SystemCoreClock / 1000000) / 3; - while(delay_us--); + osal_task_delay(100); #endif //------------- Get first 8 bytes of device descriptor to get Control Endpoint Size -------------// diff --git a/tinyusb/osal/osal.h b/tinyusb/osal/osal.h index f0174c080..63ebb0d45 100644 --- a/tinyusb/osal/osal.h +++ b/tinyusb/osal/osal.h @@ -86,8 +86,8 @@ uint32_t osal_tick_get(void); typedef uint32_t osal_task_t; tusb_error_t osal_task_create(osal_task_t *task); -#define OSAL_TASK_DEF(name, code, stack_depth, prio) \ - osal_task_t name +#define OSAL_TASK_DEF(variable, name, code, stack_depth, prio) \ + osal_task_t variable #define OSAL_TASK_FUNCTION(task_name) \ void task_name diff --git a/tinyusb/osal/osal_freeRTOS.h b/tinyusb/osal/osal_freeRTOS.h index 4dd3a67ca..44681e736 100644 --- a/tinyusb/osal/osal_freeRTOS.h +++ b/tinyusb/osal/osal_freeRTOS.h @@ -81,9 +81,9 @@ typedef struct { unsigned portBASE_TYPE prio; } osal_task_t; -#define OSAL_TASK_DEF(task_name, task_code, task_stack_depth, task_prio) \ - osal_task_t task_name = {\ - .name = #task_name , \ +#define OSAL_TASK_DEF(task_variable, task_name, task_code, task_stack_depth, task_prio) \ + osal_task_t task_variable = {\ + .name = task_name , \ .code = task_code , \ .stack_depth = task_stack_depth , \ .prio = task_prio \ @@ -96,6 +96,12 @@ static inline tusb_error_t osal_task_create(osal_task_t *task) TUSB_ERROR_NONE : TUSB_ERROR_OSAL_TASK_CREATE_FAILED; } +static inline void osal_task_delay(uint32_t msec) ATTR_ALWAYS_INLINE; +static inline void osal_task_delay(uint32_t msec) +{ + vTaskDelay(TUSB_CFG_OS_TICKS_PER_SECOND * msec); +} + #define OSAL_TASK_LOOP_BEGIN \ while(1) { diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h index fa20585fd..9661278f7 100644 --- a/tinyusb/osal/osal_none.h +++ b/tinyusb/osal/osal_none.h @@ -87,7 +87,7 @@ static inline volatile uint32_t osal_tick_get(void) // OSAL_TASK_LOOP_ENG // } //--------------------------------------------------------------------+ -#define OSAL_TASK_DEF(name, code, stack_depth, prio) +#define OSAL_TASK_DEF(variable, name, code, stack_depth, prio) #define osal_task_create(x) TUSB_ERROR_NONE #define OSAL_TASK_FUNCTION(task_func) \ @@ -107,6 +107,16 @@ static inline volatile uint32_t osal_tick_get(void) }\ return TUSB_ERROR_NONE; + +#define osal_task_delay(msec) \ + do {\ + timeout = osal_tick_get();\ + state = __LINE__; case __LINE__:\ + if ( timeout + osal_tick_from_msec(msec) < osal_tick_get() ) /* time out */ \ + return TUSB_ERROR_OSAL_WAITING;\ + }while(0) + + //------------- Sub Task -------------// #define OSAL_SUBTASK_INVOKED_AND_WAIT(subtask, status) \ do {\ |
