summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2020-05-20 14:31:45 +0700
committerhathach <[email protected]>2020-05-20 14:31:45 +0700
commit88a455a9b99099bf27ce239006ecfd2da3894bcf (patch)
tree6372f9a87c72b22af3eae74fb32e0de1e69e52ef /src
parent4e8d414bc666d4636efd29e1c9feffd622d055c5 (diff)
added tud_task_event_ready()
to check if there is pending events in the tud task without executing it. Useful to check before entering low power mode with WFI/WFE
Diffstat (limited to 'src')
-rw-r--r--src/device/usbd.c8
-rw-r--r--src/device/usbd.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 06e724cb3..f7918c07e 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -339,6 +339,14 @@ static void usbd_reset(uint8_t rhport)
}
}
+bool tud_task_event_ready(void)
+{
+ // Skip if stack is not initialized
+ if ( !tusb_inited() ) return false;
+
+ return !osal_queue_empty(_usbd_q);
+}
+
/* USB Device Driver task
* This top level thread manages all device controller event and delegates events to class-specific drivers.
* This should be called periodically within the mainloop or rtos thread.
diff --git a/src/device/usbd.h b/src/device/usbd.h
index 713bee2b2..ecef63e18 100644
--- a/src/device/usbd.h
+++ b/src/device/usbd.h
@@ -47,6 +47,9 @@ bool tud_init (void);
// Task function should be called in main/rtos loop
void tud_task (void);
+// Check if there is pending events need proccessing by tud_task()
+bool tud_task_event_ready(void);
+
// Interrupt handler, name alias to DCD
#define tud_int_handler dcd_int_handler