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/osal | |
| 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/osal')
| -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 |
3 files changed, 22 insertions, 6 deletions
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 {\ |
