Quellcode durchsuchen

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.
hathach vor 7 Jahren
Ursprung
Commit
bc46dc6edf

+ 0 - 1
docs/configuration.txt

@@ -20,7 +20,6 @@
 
 
 #define CFG_TUSB_MCU          ///< Select one of the supported MCU, the value must be from \ref group_mcu
 #define CFG_TUSB_MCU          ///< Select one of the supported MCU, the value must be from \ref group_mcu
 #define CFG_TUSB_OS           ///< Select one of the supported RTOS, the value must be from \ref group_supported_os.
 #define CFG_TUSB_OS           ///< Select one of the supported RTOS, the value must be from \ref group_supported_os.
-#define CFG_TUD_TASK_PRIO ///< If \ref CFG_TUSB_OS is configured to use a real RTOS (other than OPT_OS_NONE). This determines the priority of the usb stack task.
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // HOST CONFIGURATION
 // HOST CONFIGURATION

+ 1 - 1
docs/getting_started.md

@@ -37,7 +37,7 @@ It is relatively simple to incorporate tinyusb to your (existing) project
 1. Copy or `git submodule` this repo into your project in a subfolder. Let's say it is *your_project/tinyusb*
 1. Copy or `git submodule` this repo into your project in a subfolder. Let's say it is *your_project/tinyusb*
 2. Add all the .c in the src folder to your project settings (uvproj, ewp, makefile)
 2. Add all the .c in the src folder to your project settings (uvproj, ewp, makefile)
 3. Add *your_project/tinysb* to your include path. Also make sure your current include path also contains the configuration file tusb_config.h. Or you could simply put the tusb_config.h into the tinyusb folder as well.
 3. Add *your_project/tinysb* to your include path. Also make sure your current include path also contains the configuration file tusb_config.h. Or you could simply put the tusb_config.h into the tinyusb folder as well.
-4. Make sure all required macros are all defined properly in tusb_config.h (configure file in demo application is sufficient, but you need to add a few more such as CFG_TUSB_MCU, CFG_TUSB_OS, CFG_TUD_TASK_PRIO since they are passed by IDE/compiler to maintain a unique configure for all demo projects).
+4. Make sure all required macros are all defined properly in tusb_config.h (configure file in demo application is sufficient, but you need to add a few more such as CFG_TUSB_MCU, CFG_TUSB_OS since they are passed by IDE/compiler to maintain a unique configure for all demo projects).
 5. If you use the device stack, make sure you have created/modified usb descriptors for your own need. Ultimately you need to fill out required pointers in tusbd_descriptor_pointers for that stack to work.
 5. If you use the device stack, make sure you have created/modified usb descriptors for your own need. Ultimately you need to fill out required pointers in tusbd_descriptor_pointers for that stack to work.
 6. Add tusb_init() call to your reset initialization code.
 6. Add tusb_init() call to your reset initialization code.
 7. Implement all enabled classes's callbacks.
 7. Implement all enabled classes's callbacks.

+ 4 - 35
examples/device/cdc_msc_hid/src/main.c

@@ -46,7 +46,6 @@
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // MACRO CONSTANT TYPEDEF PROTYPES
 // MACRO CONSTANT TYPEDEF PROTYPES
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-void print_greeting(void);
 void led_blinking_task(void);
 void led_blinking_task(void);
 
 
 extern void virtual_com_task(void);
 extern void virtual_com_task(void);
@@ -56,7 +55,6 @@ extern void usb_hid_task(void);
 int main(void)
 int main(void)
 {
 {
   board_init();
   board_init();
-  print_greeting();
 
 
   tusb_init();
   tusb_init();
 
 
@@ -84,9 +82,9 @@ int main(void)
 #if CFG_TUD_CDC
 #if CFG_TUD_CDC
 void virtual_com_task(void)
 void virtual_com_task(void)
 {
 {
-  // connected and there are data available
   if ( tud_cdc_connected() )
   if ( tud_cdc_connected() )
   {
   {
+      // connected and there are data available
     if ( tud_cdc_available() )
     if ( tud_cdc_available() )
     {
     {
       uint8_t buf[64];
       uint8_t buf[64];
@@ -98,11 +96,7 @@ void virtual_com_task(void)
       {
       {
         tud_cdc_write_char(buf[i]);
         tud_cdc_write_char(buf[i]);
 
 
-        if ( buf[i] == '\r' )
-        {
-          tud_cdc_write_char('\n');
-          tud_cdc_write_str("tinyusb cdc: ");
-        }
+        if ( buf[i] == '\r' ) tud_cdc_write_char('\n');
       }
       }
 
 
       tud_cdc_write_flush();
       tud_cdc_write_flush();
@@ -117,8 +111,8 @@ void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts)
   // connected
   // connected
   if ( dtr && rts )
   if ( dtr && rts )
   {
   {
-    // print greeting
-    tud_cdc_write_str("tinyusb cdc: ");
+    // print initial message when connected
+    tud_cdc_write_str("\r\nTinyUSB CDC MSC HID device example\r\n");
   }
   }
 }
 }
 #endif
 #endif
@@ -213,28 +207,3 @@ void led_blinking_task(void)
   board_led_control(led_state);
   board_led_control(led_state);
   led_state = 1 - led_state; // toggle
   led_state = 1 - led_state; // toggle
 }
 }
-
-//--------------------------------------------------------------------+
-// HELPER FUNCTION
-//--------------------------------------------------------------------+
-void print_greeting(void)
-{
-  char const * const rtos_name[] =
-  {
-      [OPT_OS_NONE]      = "None",
-      [OPT_OS_FREERTOS]  = "FreeRTOS",
-  };
-
-  printf("\n--------------------------------------------------------------------\n");
-  printf("-                     Device Demo (a tinyusb example)\n");
-  printf("- if you find any bugs or get any questions, feel free to file an\n");
-  printf("- issue at https://github.com/hathach/tinyusb\n");
-  printf("--------------------------------------------------------------------\n\n");
-
-  printf("This DEVICE demo is configured to support:");
-  printf("  - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
-  if (CFG_TUD_CDC          ) puts("  - Communication Device Class");
-  if (CFG_TUD_MSC          ) puts("  - Mass Storage");
-  if (CFG_TUD_HID_KEYBOARD ) puts("  - HID Keyboard");
-  if (CFG_TUD_HID_MOUSE    ) puts("  - HID Mouse");
-}

+ 2 - 1
examples/device/cdc_msc_hid_freertos/ses/nrf5x/nrf5x.emProject

@@ -18,11 +18,12 @@
       arm_target_debug_interface_type="ADIv5"
       arm_target_debug_interface_type="ADIv5"
       arm_target_device_name="nRF52840_xxAA"
       arm_target_device_name="nRF52840_xxAA"
       arm_target_interface_type="SWD"
       arm_target_interface_type="SWD"
-      build_treat_warnings_as_errors="Yes"
+      build_treat_warnings_as_errors="No"
       c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_PCA10056;CFG_TUSB_MCU=OPT_MCU_NRF5X"
       c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_PCA10056;CFG_TUSB_MCU=OPT_MCU_NRF5X"
       c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F"
       c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F"
       debug_register_definition_file="nrf52840_Registers.xml"
       debug_register_definition_file="nrf52840_Registers.xml"
       debug_target_connection="J-Link"
       debug_target_connection="J-Link"
+      gcc_enable_all_warnings="Yes"
       gcc_entry_point="Reset_Handler"
       gcc_entry_point="Reset_Handler"
       link_use_linker_script_file="No"
       link_use_linker_script_file="No"
       linker_memory_map_file="nRF52840_xxAA_MemoryMap.xml"
       linker_memory_map_file="nRF52840_xxAA_MemoryMap.xml"

+ 31 - 34
examples/device/cdc_msc_hid_freertos/src/main.c

@@ -59,14 +59,13 @@
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // INTERNAL OBJECT & FUNCTION DECLARATION
 // INTERNAL OBJECT & FUNCTION DECLARATION
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-void print_greeting(void);
 void led_blinky_cb(TimerHandle_t xTimer);
 void led_blinky_cb(TimerHandle_t xTimer);
+void usb_device_task(void* param);
 
 
 /*------------- MAIN -------------*/
 /*------------- MAIN -------------*/
 int main(void)
 int main(void)
 {
 {
   board_init();
   board_init();
-  print_greeting();
 
 
   // soft timer for blinky
   // soft timer for blinky
   TimerHandle_t tm_hdl = xTimerCreate(NULL, pdMS_TO_TICKS(1000), true, NULL, led_blinky_cb);
   TimerHandle_t tm_hdl = xTimerCreate(NULL, pdMS_TO_TICKS(1000), true, NULL, led_blinky_cb);
@@ -74,10 +73,13 @@ int main(void)
 
 
   tusb_init();
   tusb_init();
 
 
+  // Create a task for tinyusb device stack
+  xTaskCreate( usb_device_task, "usbd", 150, NULL, configMAX_PRIORITIES-1, NULL);
+
   // Create task
   // Create task
 #if CFG_TUD_CDC
 #if CFG_TUD_CDC
   extern void cdc_task(void* params);
   extern void cdc_task(void* params);
-  xTaskCreate( cdc_task, "cdc", 256, NULL, 2, NULL);
+  xTaskCreate( cdc_task, "cdc", 256, NULL, configMAX_PRIORITIES-2, NULL);
 #endif
 #endif
 
 
 #if CFG_TUD_HID
 #if CFG_TUD_HID
@@ -90,6 +92,19 @@ int main(void)
   return 0;
   return 0;
 }
 }
 
 
+// USB Device Driver task
+// This top level thread process all usb events and invoke callbacks
+void usb_device_task(void* param)
+{
+  (void) param;
+
+  // RTOS forever loop
+  while (1)
+  {
+    tusb_task();
+  }
+}
+
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // USB CDC
 // USB CDC
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
@@ -98,11 +113,12 @@ void cdc_task(void* params)
 {
 {
   (void) params;
   (void) params;
 
 
+  // RTOS forever loop
   while ( 1 )
   while ( 1 )
   {
   {
-    // connected and there are data available
     if ( tud_cdc_connected() )
     if ( tud_cdc_connected() )
     {
     {
+      // connected and there are data available
       if ( tud_cdc_available() )
       if ( tud_cdc_available() )
       {
       {
         uint8_t buf[64];
         uint8_t buf[64];
@@ -110,10 +126,15 @@ void cdc_task(void* params)
         // read and echo back
         // read and echo back
         uint32_t count = tud_cdc_read(buf, sizeof(buf));
         uint32_t count = tud_cdc_read(buf, sizeof(buf));
 
 
-        tud_cdc_write(buf, count);
-      }
+        for(uint32_t i=0; i<count; i++)
+        {
+          tud_cdc_write_char(buf[i]);
+
+          if ( buf[i] == '\r' ) tud_cdc_write_char('\n');
+        }
 
 
-      tud_cdc_write_flush();
+        tud_cdc_write_flush();
+      }
     }
     }
   }
   }
 }
 }
@@ -125,8 +146,8 @@ void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts)
   // connected
   // connected
   if ( dtr && rts )
   if ( dtr && rts )
   {
   {
-    // print greeting
-    tud_cdc_write_str("tinyusb usb cdc\n");
+    // print initial message when connected
+    tud_cdc_write_str("\r\nTinyUSB CDC MSC HID device with FreeRTOS example\r\n");
   }
   }
 }
 }
 #endif
 #endif
@@ -206,6 +227,7 @@ void tud_umount_cb(void)
 
 
 void tud_cdc_rx_cb(uint8_t itf)
 void tud_cdc_rx_cb(uint8_t itf)
 {
 {
+  (void) itf;
 }
 }
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
@@ -219,28 +241,3 @@ void led_blinky_cb(TimerHandle_t xTimer)
   board_led_control(led_state);
   board_led_control(led_state);
   led_state = 1 - led_state; // toggle
   led_state = 1 - led_state; // toggle
 }
 }
-
-//--------------------------------------------------------------------+
-// HELPER FUNCTION
-//--------------------------------------------------------------------+
-void print_greeting(void)
-{
-  char const * const rtos_name[] =
-  {
-      [OPT_OS_NONE]      = "None",
-      [OPT_OS_FREERTOS]  = "FreeRTOS",
-  };
-
-  printf("\n--------------------------------------------------------------------\n");
-  printf("-                     Device Demo (a tinyusb example)\n");
-  printf("- if you find any bugs or get any questions, feel free to file an\n");
-  printf("- issue at https://github.com/hathach/tinyusb\n");
-  printf("--------------------------------------------------------------------\n\n");
-
-  printf("This DEVICE demo is configured to support:");
-  printf("  - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
-  if (CFG_TUD_CDC          ) puts("  - Communication Device Class");
-  if (CFG_TUD_MSC          ) puts("  - Mass Storage");
-  if (CFG_TUD_HID_KEYBOARD ) puts("  - HID Keyboard");
-  if (CFG_TUD_HID_MOUSE    ) puts("  - HID Mouse");
-}

+ 1 - 7
examples/device/cdc_msc_hid_freertos/src/tusb_config.h

@@ -53,14 +53,8 @@
 #endif
 #endif
 
 
 #define CFG_TUSB_RHPORT0_MODE       OPT_MODE_DEVICE
 #define CFG_TUSB_RHPORT0_MODE       OPT_MODE_DEVICE
-
-#define CFG_TUSB_DEBUG              2
-
-/*------------- RTOS -------------*/
 #define CFG_TUSB_OS                 OPT_OS_FREERTOS
 #define CFG_TUSB_OS                 OPT_OS_FREERTOS
-#define CFG_TUD_TASK_PRIO           (configMAX_PRIORITIES-1)
-//#define CFG_TUD_TASK_QUEUE_SZ     16
-//#define CFG_TUD_TASK_STACK_SZ     150
+#define CFG_TUSB_DEBUG              2
 
 
 /* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
 /* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
  * Tinyusb use follows macros to declare transferring memory so that they can be put
  * Tinyusb use follows macros to declare transferring memory so that they can be put

+ 8 - 8
examples/host/cdc_msc_hid/src/tusb_config.h

@@ -80,14 +80,14 @@
 // DEVICE CONFIGURATION
 // DEVICE CONFIGURATION
 //--------------------------------------------------------------------
 //--------------------------------------------------------------------
 
 
-#define CFG_TUH_HUB               1
-#define CFG_TUH_CDC               1
-#define CFG_TUH_HID_KEYBOARD      0
-#define CFG_TUH_HID_MOUSE         0
-#define CFG_TUSB_HOST_HID_GENERIC 0 // (not yet supported)
-#define CFG_TUH_MSC               0
-
-#define CFG_TUSB_HOST_DEVICE_MAX        (CFG_TUH_HUB ? 5 : 1) // normal hub has 4 ports
+#define CFG_TUH_HUB                 1
+#define CFG_TUH_CDC                 1
+#define CFG_TUH_HID_KEYBOARD        0
+#define CFG_TUH_HID_MOUSE           0
+#define CFG_TUSB_HOST_HID_GENERIC   0 // (not yet supported)
+#define CFG_TUH_MSC                 0
+
+#define CFG_TUSB_HOST_DEVICE_MAX    (CFG_TUH_HUB ? 5 : 1) // normal hub has 4 ports
 
 
 //------------- CLASS -------------//
 //------------- CLASS -------------//
 #define CFG_TUD_CDC                 0
 #define CFG_TUD_CDC                 0

+ 0 - 3
examples/obsolete/device/src/tusb_config.h

@@ -55,9 +55,6 @@
 
 
 /*------------- RTOS -------------*/
 /*------------- RTOS -------------*/
 //#define CFG_TUSB_OS               OPT_OS_NONE // be passed from IDE/command line for easy project switching
 //#define CFG_TUSB_OS               OPT_OS_NONE // be passed from IDE/command line for easy project switching
-//#define CFG_TUD_TASK_PRIO         0
-//#define CFG_TUD_TASK_QUEUE_SZ     16
-//#define CFG_TUD_TASK_STACK_SZ     150
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // DEVICE CONFIGURATION
 // DEVICE CONFIGURATION

+ 6 - 5
lib/FreeRTOS/freertos_hook.c

@@ -46,16 +46,17 @@
 
 
 void vApplicationMallocFailedHook(void)
 void vApplicationMallocFailedHook(void)
 {
 {
-	taskDISABLE_INTERRUPTS();
-	TU_ASSERT(false, );
+  taskDISABLE_INTERRUPTS();
+  TU_ASSERT(false, );
 }
 }
 
 
 void vApplicationStackOverflowHook(xTaskHandle pxTask, signed char *pcTaskName)
 void vApplicationStackOverflowHook(xTaskHandle pxTask, signed char *pcTaskName)
 {
 {
-	(void) pxTask;
+  (void) pxTask;
+  (void) pcTaskName;
 
 
-	taskDISABLE_INTERRUPTS();
-	TU_ASSERT(false, );
+  taskDISABLE_INTERRUPTS();
+  TU_ASSERT(false, );
 }
 }
 
 
 /* configSUPPORT_STATIC_ALLOCATION is set to 1, so the application must provide an
 /* configSUPPORT_STATIC_ALLOCATION is set to 1, so the application must provide an

+ 1 - 3
src/common/tusb_fifo.c

@@ -48,9 +48,7 @@ static void tu_fifo_lock(tu_fifo_t *f)
 {
 {
   if (f->mutex)
   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);
   }
   }
 }
 }
 
 

+ 8 - 38
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"
 #include "tusb_option.h"
 
 
 #if TUSB_OPT_DEVICE_ENABLED
 #if TUSB_OPT_DEVICE_ENABLED
@@ -52,15 +50,6 @@
 #define CFG_TUD_TASK_QUEUE_SZ   16
 #define CFG_TUD_TASK_QUEUE_SZ   16
 #endif
 #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
 // Device Data
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
@@ -153,16 +142,14 @@ static usbd_class_driver_t const usbd_class_drivers[] =
   #endif
   #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
 // DCD Event
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-OSAL_TASK_DEF(_usbd_task_def, "usbd", usbd_task, CFG_TUD_TASK_PRIO, CFG_TUD_TASK_STACK_SZ);
 
 
 // Event queue
 // 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);
 OSAL_QUEUE_DEF(OPT_MODE_DEVICE, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t);
 static osal_queue_t _usbd_q;
 static osal_queue_t _usbd_q;
 
 
@@ -195,8 +182,6 @@ bool usbd_init (void)
   _usbd_q = osal_queue_create(&_usbd_qdef);
   _usbd_q = osal_queue_create(&_usbd_qdef);
   TU_ASSERT(_usbd_q != NULL);
   TU_ASSERT(_usbd_q != NULL);
 
 
-  osal_task_create(&_usbd_task_def);
-
   // Init class drivers
   // Init class drivers
   for (uint8_t i = 0; i < USBD_CLASS_DRIVER_COUNT; i++) usbd_class_drivers[i].init();
   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
   // Loop until there is no more events in the queue
   while (1)
   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
 // Control Request Parser & Handling
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+

+ 10 - 34
src/host/usbh.c

@@ -46,15 +46,6 @@
 #define CFG_TUH_TASK_QUEUE_SZ   16
 #define CFG_TUH_TASK_QUEUE_SZ   16
 #endif
 #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
 // INCLUDE
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
@@ -123,9 +114,9 @@ enum { USBH_CLASS_DRIVER_COUNT = TU_ARRAY_SZIE(usbh_class_drivers) };
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // INTERNAL OBJECT & FUNCTION DECLARATION
 // 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
 // Event queue
 // role device/host is used by OS NONE for mutex (disable usb isr) only
 // 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 );
   _usbh_q = osal_queue_create( &_usbh_qdef );
   TU_ASSERT(_usbh_q != NULL);
   TU_ASSERT(_usbh_q != NULL);
 
 
-  osal_task_create(&_usbh_task_def);
-
   //------------- Semaphore, Mutex for Control Pipe -------------//
   //------------- Semaphore, Mutex for Control Pipe -------------//
   for(uint8_t i=0; i<CFG_TUSB_HOST_DEVICE_MAX+1; i++) // including address zero
   for(uint8_t i=0; i<CFG_TUSB_HOST_DEVICE_MAX+1; i++) // including address zero
   {
   {
@@ -610,12 +599,18 @@ bool enum_task(hcd_event_t* event)
   return true;
   return true;
 }
 }
 
 
-bool usbh_task_body(void)
+/* USB Host Driver task
+ * This top level thread manages all host controller event and delegates events to class-specific drivers.
+ */
+void usbh_task(void* param)
 {
 {
+  (void) param;
+
+  // Loop until there is no more events in the queue
   while (1)
   while (1)
   {
   {
     hcd_event_t event;
     hcd_event_t event;
-    if ( !osal_queue_receive(_usbh_q, &event) ) return false;
+    if ( !osal_queue_receive(_usbh_q, &event) ) return;
 
 
     switch (event.event_id)
     switch (event.event_id)
     {
     {
@@ -629,25 +624,6 @@ bool usbh_task_body(void)
   }
   }
 }
 }
 
 
-/* USB Host 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 usbh_task(void* param)
-{
-  (void) param;
-
-#if CFG_TUSB_OS != OPT_OS_NONE
-  while (1) {
-#endif
-
-  usbh_task_body();
-
-#if CFG_TUSB_OS != OPT_OS_NONE
-  }
-#endif
-}
-
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // INTERNAL HELPER
 // INTERNAL HELPER
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+

+ 0 - 2
src/osal/osal.h

@@ -68,8 +68,6 @@ typedef void (*osal_task_func_t)( void * );
    * uint32_t tusb_hal_millis(void)
    * uint32_t tusb_hal_millis(void)
    *
    *
    * Task
    * Task
-   *    osal_task_def_t
-   *    bool osal_task_create(osal_task_def_t* taskdef)
    *    void osal_task_delay(uint32_t msec)
    *    void osal_task_delay(uint32_t msec)
    *
    *
    * Queue
    * Queue

+ 0 - 21
src/osal/osal_freertos.h

@@ -65,27 +65,6 @@ static inline bool in_isr(void)
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // TASK API
 // TASK API
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-#define OSAL_TASK_DEF(_name, _str, _func, _prio, _stack_sz) \
-  static uint8_t _name##_##buf[_stack_sz*sizeof(StackType_t)]; \
-  osal_task_def_t _name = { .func = _func, .prio = _prio, .stack_sz = _stack_sz, .buf = _name##_##buf, .strname = _str };
-
-typedef struct
-{
-  osal_task_func_t func;
-
-  uint16_t prio;
-  uint16_t stack_sz;
-  void*    buf;
-  const char* strname;
-
-  StaticTask_t stask;
-}osal_task_def_t;
-
-static inline bool osal_task_create(osal_task_def_t* taskdef)
-{
-  return NULL != xTaskCreateStatic(taskdef->func, taskdef->strname, taskdef->stack_sz, NULL, taskdef->prio, (StackType_t*) taskdef->buf, &taskdef->stask);
-}
-
 static inline void osal_task_delay(uint32_t msec)
 static inline void osal_task_delay(uint32_t msec)
 {
 {
   vTaskDelay( pdMS_TO_TICKS(msec) );
   vTaskDelay( pdMS_TO_TICKS(msec) );

+ 0 - 21
src/osal/osal_mynewt.h

@@ -46,27 +46,6 @@
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // TASK API
 // 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)
 static inline void osal_task_delay(uint32_t msec)
 {
 {
   os_time_delay( os_time_ms_to_ticks32(msec) );
   os_time_delay( os_time_ms_to_ticks32(msec) );

+ 0 - 10
src/osal/osal_none.h

@@ -51,17 +51,7 @@
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // TASK API
 // 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)
 static inline void osal_task_delay(uint32_t msec)
 {
 {
   uint32_t start = tusb_hal_millis();
   uint32_t start = tusb_hal_millis();

+ 0 - 3
src/tusb.c

@@ -68,7 +68,6 @@ bool tusb_init(void)
   return TUSB_ERROR_NONE;
   return TUSB_ERROR_NONE;
 }
 }
 
 
-#if CFG_TUSB_OS == OPT_OS_NONE
 void tusb_task(void)
 void tusb_task(void)
 {
 {
   #if TUSB_OPT_HOST_ENABLED
   #if TUSB_OPT_HOST_ENABLED
@@ -79,8 +78,6 @@ void tusb_task(void)
   usbd_task(NULL);
   usbd_task(NULL);
   #endif
   #endif
 }
 }
-#endif
-
 
 
 /*------------------------------------------------------------------*/
 /*------------------------------------------------------------------*/
 /* Debug
 /* Debug

+ 4 - 7
src/tusb.h

@@ -105,11 +105,9 @@
 // return true if success
 // return true if success
 bool tusb_init(void);
 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
     @code
     int main(void)
     int main(void)
     {
     {
@@ -126,10 +124,9 @@ bool tusb_init(void);
       }
       }
     }
     }
     @endcode
     @endcode
- *
+
  */
  */
 void tusb_task(void);
 void tusb_task(void);
-#endif
 
 
 /** @} */
 /** @} */
 
 

+ 0 - 5
src/tusb_option.h

@@ -224,11 +224,6 @@
 //------------------------------------------------------------------
 //------------------------------------------------------------------
 // Configuration Validation
 // 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
 #if CFG_TUD_ENDOINT0_SIZE > 64
   #error Control Endpoint Max Packet Size cannot be larger than 64
   #error Control Endpoint Max Packet Size cannot be larger than 64
 #endif
 #endif