3030#include " Arduino.h"
3131#include " Adafruit_TinyUSB_Core.h"
3232
33+ // --------------------------------------------------------------------+
34+ // MACRO TYPEDEF CONSTANT ENUM DECLARATION
35+ // --------------------------------------------------------------------+
36+
37+ #define USBD_STACK_SZ (200 )
38+
39+ // tinyusb function that handles power event (detected, ready, removed)
40+ // We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled.
41+ extern " C" void tusb_hal_nrf_power_event (uint32_t event);
42+
3343// --------------------------------------------------------------------+
3444// Forward USB interrupt events to TinyUSB IRQ Handler
3545// --------------------------------------------------------------------+
@@ -46,30 +56,6 @@ extern "C" void USBD_IRQHandler(void)
4656#endif
4757}
4858
49- // --------------------------------------------------------------------+
50- // MACRO TYPEDEF CONSTANT ENUM DECLARATION
51- // --------------------------------------------------------------------+
52-
53- #define USBD_STACK_SZ (200 )
54-
55- // tinyusb function that handles power event (detected, ready, removed)
56- // We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled.
57- extern " C" void tusb_hal_nrf_power_event (uint32_t event);
58-
59- // USB Device Driver task
60- // This top level thread process all usb events and invoke callbacks
61- static void usb_device_task (void * param)
62- {
63- (void ) param;
64-
65- // RTOS forever loop
66- while (1 )
67- {
68- // tinyusb device task
69- tud_task ();
70- }
71- }
72-
7359// --------------------------------------------------------------------+
7460// Core Init & Touch1200
7561// --------------------------------------------------------------------+
@@ -99,8 +85,12 @@ static void usb_hardware_init(void)
9985 if ( usb_reg & POWER_USBREGSTATUS_OUTPUTRDY_Msk ) tusb_hal_nrf_power_event (NRFX_POWER_USB_EVT_READY);
10086}
10187
102- void Adafruit_TinyUSB_Core_init (void )
88+ // USB Device Driver task
89+ // This top level thread process all usb events and invoke callbacks
90+ static void usb_device_task (void * param)
10391{
92+ (void ) param;
93+
10494 USBDevice.addInterface ( (Adafruit_USBD_Interface&) Serial);
10595 USBDevice.setID (USB_VID, USB_PID);
10696 USBDevice.begin ();
@@ -110,6 +100,16 @@ void Adafruit_TinyUSB_Core_init(void)
110100 // Init tinyusb stack
111101 tusb_init ();
112102
103+ // RTOS forever loop
104+ while (1 )
105+ {
106+ // tinyusb device task
107+ tud_task ();
108+ }
109+ }
110+
111+ void Adafruit_TinyUSB_Core_init (void )
112+ {
113113 // Create a task for tinyusb device stack
114114 xTaskCreate ( usb_device_task, " usbd" , USBD_STACK_SZ, NULL , TASK_PRIO_HIGH, NULL );
115115}
0 commit comments