diff options
| author | hathach <[email protected]> | 2013-02-06 12:03:01 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-02-06 12:03:01 +0700 |
| commit | e20025b54d16deccbd6e86433f31d80f5a976fd4 (patch) | |
| tree | b94fc6905de315cc5ce3778d297cc711cc195f0f /tinyusb/osal | |
| parent | aeccdfde3f4462fae5e3b9cbb4eae76526bdb204 (diff) | |
refractor move test enum to its own file
add assert with handler
add task assert with error catcher
Diffstat (limited to 'tinyusb/osal')
| -rw-r--r-- | tinyusb/osal/osal.h | 7 | ||||
| -rw-r--r-- | tinyusb/osal/osal_none.h | 16 |
2 files changed, 17 insertions, 6 deletions
diff --git a/tinyusb/osal/osal.h b/tinyusb/osal/osal.h index 055f28d1a..2482695fa 100644 --- a/tinyusb/osal/osal.h +++ b/tinyusb/osal/osal.h @@ -85,10 +85,17 @@ typedef uint32_t osal_task_t; #define OSAL_TASK_LOOP_BEGIN #define OSAL_TASK_LOOP_END +#define TASK_ASSERT_ERROR_HANDLER(error, func_call)\ + func_call; return error + +#define TASK_ASSERT_STATUS_HANDLER(sts, func_call) \ + ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, func_call, tusb_error_t status = (tusb_error_t)(sts),\ + TUSB_ERROR_NONE == status, status, "%s", TUSB_ErrorStr[status]) #define TASK_ASSERT_STATUS(sts) \ ASSERT_DEFINE(tusb_error_t status = (tusb_error_t)(sts),\ TUSB_ERROR_NONE == status, (void) 0, "%s", TUSB_ErrorStr[status]) + #define TASK_ASSERT(condition) ASSERT(condition, (void) 0) tusb_error_t osal_task_create(osal_task_t *task); diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h index 93f77d593..e424d4143 100644 --- a/tinyusb/osal/osal_none.h +++ b/tinyusb/osal/osal_none.h @@ -90,12 +90,16 @@ uint32_t osal_tick_get(void); state = 0;\ } -#define TASK_ASSERT_ERROR_HANDLER \ - state = 0; break; +#define TASK_ASSERT_ERROR_HANDLER(error, func_call) \ + func_call; state = 0; break -#define TASK_ASSERT(condition) ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, , (condition), (void) 0, "%s", "evaluated to false") +#define TASK_ASSERT_STATUS_HANDLER(sts, func_call) \ + ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, func_call, tusb_error_t status = (tusb_error_t)(sts),\ + TUSB_ERROR_NONE == status, status, "%s", TUSB_ErrorStr[status]) + +#define TASK_ASSERT(condition) ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, , , (condition), (void) 0, "%s", "evaluated to false") #define TASK_ASSERT_STATUS(sts) \ - ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, tusb_error_t status = (tusb_error_t)(sts),\ + ASSERT_DEFINE_WITH_HANDLER(TASK_ASSERT_ERROR_HANDLER, , tusb_error_t status = (tusb_error_t)(sts),\ TUSB_ERROR_NONE == status, status, "%s", TUSB_ErrorStr[status]) //--------------------------------------------------------------------+ // Semaphore API @@ -129,7 +133,7 @@ static inline tusb_error_t osal_semaphore_post(osal_semaphore_handle_t const se timeout = osal_tick_get();\ state = __LINE__; case __LINE__:\ if( *(sem_hdl) == 0 ) {\ - if ( timeout + osal_tick_from_msec(msec) < osal_tick_get() ) /* time out */ \ + if ( (msec != OSAL_TIMEOUT_WAIT_FOREVER) && (timeout + osal_tick_from_msec(msec) < osal_tick_get()) ) /* time out */ \ *(p_error) = TUSB_ERROR_OSAL_TIMEOUT;\ else\ return;\ @@ -194,7 +198,7 @@ static inline tusb_error_t osal_queue_send(osal_queue_handle_t const queue_hdl, timeout = osal_tick_get();\ state = __LINE__; case __LINE__:\ if( queue_hdl-> count == 0 ) {\ - if ( timeout + osal_tick_from_msec(msec) < osal_tick_get() ) /* time out */ \ + if ( (msec != OSAL_TIMEOUT_WAIT_FOREVER) && ( timeout + osal_tick_from_msec(msec) < osal_tick_get() )) /* time out */ \ *(p_error) = TUSB_ERROR_OSAL_TIMEOUT;\ else\ return;\ |
