From bc46dc6edf3ff4bb72fb36e74b8a7d3da447d2d4 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 13 Dec 2018 13:49:09 +0700 Subject: osal clean up remove OSAL_TASK_DEF, osal_task_create. Applicaton should create a task and call tinyusb_task(). This make API consistent with NO OS. --- src/common/tusb_fifo.c | 4 +--- src/device/usbd.c | 46 ++++++++-------------------------------------- src/host/usbh.c | 44 ++++++++++---------------------------------- src/osal/osal.h | 2 -- src/osal/osal_freertos.h | 21 --------------------- src/osal/osal_mynewt.h | 21 --------------------- src/osal/osal_none.h | 10 ---------- src/tusb.c | 3 --- src/tusb.h | 11 ++++------- src/tusb_option.h | 5 ----- 10 files changed, 23 insertions(+), 144 deletions(-) (limited to 'src') diff --git a/src/common/tusb_fifo.c b/src/common/tusb_fifo.c index 2acd4b696..8902f5a4e 100644 --- a/src/common/tusb_fifo.c +++ b/src/common/tusb_fifo.c @@ -48,9 +48,7 @@ static void tu_fifo_lock(tu_fifo_t *f) { if (f->mutex) { - uint32_t err; - (void) err; - osal_mutex_lock(f->mutex, OSAL_TIMEOUT_WAIT_FOREVER, &err); + osal_mutex_lock(f->mutex, OSAL_TIMEOUT_WAIT_FOREVER); } } diff --git a/src/device/usbd.c b/src/device/usbd.c index 8c685d5b3..a0ff96e8e 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -36,8 +36,6 @@ */ /**************************************************************************/ -// This top level class manages the bus state and delegates events to class-specific drivers. - #include "tusb_option.h" #if TUSB_OPT_DEVICE_ENABLED @@ -52,15 +50,6 @@ #define CFG_TUD_TASK_QUEUE_SZ 16 #endif -#ifndef CFG_TUD_TASK_STACK_SZ -#define CFG_TUD_TASK_STACK_SZ 150 -#endif - -#ifndef CFG_TUD_TASK_PRIO -#define CFG_TUD_TASK_PRIO 0 -#endif - - //--------------------------------------------------------------------+ // Device Data //--------------------------------------------------------------------+ @@ -153,16 +142,14 @@ static usbd_class_driver_t const usbd_class_drivers[] = #endif }; -enum { USBD_CLASS_DRIVER_COUNT = sizeof(usbd_class_drivers) / sizeof(usbd_class_driver_t) }; - +enum { USBD_CLASS_DRIVER_COUNT = TU_ARRAY_SZIE(usbd_class_drivers) }; //--------------------------------------------------------------------+ // DCD Event //--------------------------------------------------------------------+ -OSAL_TASK_DEF(_usbd_task_def, "usbd", usbd_task, CFG_TUD_TASK_PRIO, CFG_TUD_TASK_STACK_SZ); // Event queue -// role device/host is used by OS NONE for mutex (disable usb isr) only +// OPT_MODE_DEVICE is used by OS NONE for mutex (disable usb isr) OSAL_QUEUE_DEF(OPT_MODE_DEVICE, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t); static osal_queue_t _usbd_q; @@ -195,8 +182,6 @@ bool usbd_init (void) _usbd_q = osal_queue_create(&_usbd_qdef); TU_ASSERT(_usbd_q != NULL); - osal_task_create(&_usbd_task_def); - // Init class drivers for (uint8_t i = 0; i < USBD_CLASS_DRIVER_COUNT; i++) usbd_class_drivers[i].init(); @@ -221,9 +206,13 @@ static void usbd_reset(uint8_t rhport) } } -// Main device task implementation -static void usbd_task_body(void) +/* USB Device Driver task + * This top level thread manages all device controller event and delegates events to class-specific drivers. + */ +void usbd_task( void* param) { + (void) param; + // Loop until there is no more events in the queue while (1) { @@ -297,25 +286,6 @@ static void usbd_task_body(void) } } -/* USB device task - * Thread that handles all device events. With an real RTOS, the task must be a forever loop and never return. - * For coding convenience with no RTOS, we use wrapped sub-function for processing to easily return at any time. - */ -void usbd_task( void* param) -{ - (void) param; - -#if CFG_TUSB_OS != OPT_OS_NONE - while (1) { -#endif - - usbd_task_body(); - -#if CFG_TUSB_OS != OPT_OS_NONE - } -#endif -} - //--------------------------------------------------------------------+ // Control Request Parser & Handling //--------------------------------------------------------------------+ diff --git a/src/host/usbh.c b/src/host/usbh.c index 39de4f7e7..7bcf7aaaf 100644 --- a/src/host/usbh.c +++ b/src/host/usbh.c @@ -46,15 +46,6 @@ #define CFG_TUH_TASK_QUEUE_SZ 16 #endif -#ifndef CFG_TUH_TASK_STACK_SZ -#define CFG_TUH_TASK_STACK_SZ 200 -#endif - -#ifndef CFG_TUH_TASK_PRIO -#define CFG_TUH_TASK_PRIO 0 -#endif - - //--------------------------------------------------------------------+ // INCLUDE //--------------------------------------------------------------------+ @@ -123,9 +114,9 @@ enum { USBH_CLASS_DRIVER_COUNT = TU_ARRAY_SZIE(usbh_class_drivers) }; //--------------------------------------------------------------------+ // INTERNAL OBJECT & FUNCTION DECLARATION //--------------------------------------------------------------------+ -CFG_TUSB_MEM_SECTION usbh_device_t _usbh_devices[CFG_TUSB_HOST_DEVICE_MAX+1]; // including zero-address -OSAL_TASK_DEF(_usbh_task_def, "usbh", usbh_task, CFG_TUH_TASK_PRIO, CFG_TUH_TASK_STACK_SZ); +// including zero-address +CFG_TUSB_MEM_SECTION usbh_device_t _usbh_devices[CFG_TUSB_HOST_DEVICE_MAX+1]; // Event queue // role device/host is used by OS NONE for mutex (disable usb isr) only @@ -161,8 +152,6 @@ bool usbh_init(void) _usbh_q = osal_queue_create( &_usbh_qdef ); TU_ASSERT(_usbh_q != NULL); - osal_task_create(&_usbh_task_def); - //------------- Semaphore, Mutex for Control Pipe -------------// for(uint8_t i=0; ifunc, taskdef->strname, taskdef->stack_sz, NULL, taskdef->prio, (StackType_t*) taskdef->buf, &taskdef->stask); -} - static inline void osal_task_delay(uint32_t msec) { vTaskDelay( pdMS_TO_TICKS(msec) ); diff --git a/src/osal/osal_mynewt.h b/src/osal/osal_mynewt.h index 62b5b45e8..d63ea731d 100644 --- a/src/osal/osal_mynewt.h +++ b/src/osal/osal_mynewt.h @@ -46,27 +46,6 @@ //--------------------------------------------------------------------+ // TASK API //--------------------------------------------------------------------+ -#define OSAL_TASK_DEF(_name, _str, _func, _prio, _stack_sz) \ - static os_stack_t _name##_##buf[_stack_sz]; \ - osal_task_def_t _name = { .func = _func, .prio = _prio, .stack_sz = _stack_sz, .buf = _name##_##buf, .strname = _str }; - -typedef struct -{ - struct os_task mynewt_task; - osal_task_func_t func; - - uint16_t prio; - uint16_t stack_sz; - void* buf; - const char* strname; -}osal_task_def_t; - -static inline bool osal_task_create(osal_task_def_t* taskdef) -{ - return OS_OK == os_task_init(&taskdef->mynewt_task, taskdef->strname, taskdef->func, NULL, taskdef->prio, OS_WAIT_FOREVER, - (os_stack_t*) taskdef->buf, taskdef->stack_sz); -} - static inline void osal_task_delay(uint32_t msec) { os_time_delay( os_time_ms_to_ticks32(msec) ); diff --git a/src/osal/osal_none.h b/src/osal/osal_none.h index ff37113c6..55db674ce 100644 --- a/src/osal/osal_none.h +++ b/src/osal/osal_none.h @@ -51,17 +51,7 @@ //--------------------------------------------------------------------+ // TASK API -// Virtually do nothing in osal none //--------------------------------------------------------------------+ -#define OSAL_TASK_DEF(_name, _str, _func, _prio, _stack_sz) osal_task_def_t _name; -typedef uint8_t osal_task_def_t; - -static inline bool osal_task_create(osal_task_def_t* taskdef) -{ - (void) taskdef; - return true; -} - static inline void osal_task_delay(uint32_t msec) { uint32_t start = tusb_hal_millis(); diff --git a/src/tusb.c b/src/tusb.c index 4f7996664..fd390722b 100644 --- a/src/tusb.c +++ b/src/tusb.c @@ -68,7 +68,6 @@ bool tusb_init(void) return TUSB_ERROR_NONE; } -#if CFG_TUSB_OS == OPT_OS_NONE void tusb_task(void) { #if TUSB_OPT_HOST_ENABLED @@ -79,8 +78,6 @@ void tusb_task(void) usbd_task(NULL); #endif } -#endif - /*------------------------------------------------------------------*/ /* Debug diff --git a/src/tusb.h b/src/tusb.h index 4d65c80e1..e4393d067 100644 --- a/src/tusb.h +++ b/src/tusb.h @@ -105,11 +105,9 @@ // return true if success bool tusb_init(void); -#if CFG_TUSB_OS == OPT_OS_NONE -/** \brief Run all tinyusb's internal tasks (e.g host task, device task). - * \note This function is only required when using no RTOS (\ref CFG_TUSB_OS == OPT_OS_NONE). All the stack functions - * & callback are invoked within this function. This should be called periodically within the mainloop - * +/** Run all tinyusb's internal tasks (e.g host task, device task) and invoke callback + * This should be called periodically within the mainloop. + @code int main(void) { @@ -126,10 +124,9 @@ bool tusb_init(void); } } @endcode - * + */ void tusb_task(void); -#endif /** @} */ diff --git a/src/tusb_option.h b/src/tusb_option.h index 8b2e59b17..07d8387e3 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -224,11 +224,6 @@ //------------------------------------------------------------------ // Configuration Validation //------------------------------------------------------------------ - -#if (CFG_TUSB_OS != OPT_OS_NONE) && !defined (CFG_TUD_TASK_PRIO) - #error CFG_TUD_TASK_PRIO need to be defined (hint: use the highest if possible) -#endif - #if CFG_TUD_ENDOINT0_SIZE > 64 #error Control Endpoint Max Packet Size cannot be larger than 64 #endif -- cgit v1.3.1