summaryrefslogtreecommitdiff
path: root/tinyusb/osal
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-03-03 12:30:38 +0700
committerhathach <[email protected]>2018-03-03 12:30:38 +0700
commitf6137903bcfc8eded20ee459947d4007d67ed689 (patch)
treef2c2c611c7bd4fbf6269df70cbb0c849146a1f6c /tinyusb/osal
parentfe0e79864b3d3194408aa6efcc35ba403b5427be (diff)
cleanup SUBTASK macros
Diffstat (limited to 'tinyusb/osal')
-rw-r--r--tinyusb/osal/osal_none.h39
1 files changed, 26 insertions, 13 deletions
diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h
index 47f591675..cf14ca848 100644
--- a/tinyusb/osal/osal_none.h
+++ b/tinyusb/osal/osal_none.h
@@ -69,6 +69,8 @@ uint32_t tusb_tick_get(void);
//
// OSAL_TASK_LOOP_ENG
// }
+//
+// NOTE: no switch statement is allowed in Task and subtask
//--------------------------------------------------------------------+
typedef void (*osal_func_t)(void *param);
typedef void* osal_task_t;
@@ -100,13 +102,20 @@ static inline osal_task_t osal_task_create(osal_func_t code, const char* name, u
do {\
timeout = osal_tick_get();\
state = __LINE__; case __LINE__:\
- if ( timeout + osal_tick_from_msec(msec) > osal_tick_get() ) /* time out */ \
+ if ( timeout + osal_tick_from_msec(msec) > osal_tick_get() ) \
return TUSB_ERROR_OSAL_WAITING;\
}while(0)
//--------------------------------------------------------------------+
// SUBTASK (a sub function that uses OS blocking services & called by a task
//--------------------------------------------------------------------+
+#define OSAL_SUBTASK_BEGIN OSAL_TASK_BEGIN
+#define OSAL_SUBTASK_END \
+ default:\
+ TASK_RESTART;\
+ }}\
+ return TUSB_ERROR_NONE;
+
#define OSAL_SUBTASK_INVOKED_AND_WAIT(subtask, status) \
do {\
state = __LINE__; case __LINE__:\
@@ -117,22 +126,22 @@ static inline osal_task_t osal_task_create(osal_func_t code, const char* name, u
}\
}while(0)
-#define OSAL_SUBTASK_BEGIN OSAL_TASK_BEGIN
-#define OSAL_SUBTASK_END \
- default:\
- TASK_RESTART;\
- }}\
- return TUSB_ERROR_NONE;
-
//------------- Sub Task Assert -------------//
-#define SUBTASK_EXIT(error) \
- do {\
- TASK_RESTART; return error;\
- }while(0)
+#define SUBTASK_EXIT(error) \
+ do { TASK_RESTART; return error; } while(0)
#define _SUBTASK_ASSERT_ERROR_HANDLER(error, func_call) \
- func_call; TASK_RESTART; return error
+ do { func_call; TASK_RESTART; return error; } while(0)
+
+
+#define SUBTASK_ASSERT_STATUS(sts) VERIFY_STATUS_HDLR(sts, TASK_RESTART)
+#define SUBTASK_ASSERT_STATUS_WITH_HANDLER(sts, func_call) VERIFY_STATUS_HDLR(sts, func_call; TASK_RESTART )
+#define SUBTASK_ASSERT(condition) VERIFY_HDLR(condition, TASK_RESTART)
+// TODO remove assert with handler by catching error in enum main task
+#define SUBTASK_ASSERT_WITH_HANDLER(condition, func_call) VERIFY_HDLR(condition, func_call; TASK_RESTART)
+
+/*
#define SUBTASK_ASSERT_STATUS(sts) \
ASSERT_DEFINE_WITH_HANDLER(_SUBTASK_ASSERT_ERROR_HANDLER, , tusb_error_t status = (tusb_error_t)(sts),\
TUSB_ERROR_NONE == status, status, "%s", TUSB_ErrorStr[status])
@@ -150,6 +159,10 @@ static inline osal_task_t osal_task_create(osal_func_t code, const char* name, u
ASSERT_DEFINE_WITH_HANDLER(_SUBTASK_ASSERT_ERROR_HANDLER, func_call, ,\
condition, TUSB_ERROR_OSAL_TASK_FAILED, "%s", "evaluated to false")
+*/
+
+
+
//--------------------------------------------------------------------+
// QUEUE API
//--------------------------------------------------------------------+