From d46dc5e1738d843b83f1668798669ff177119d03 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 9 Nov 2023 16:56:06 +1100 Subject: [PATCH] shared/tinyusb: Expose mp_usbd_task as a public function. Signed-off-by: Damien George --- ports/renesas-ra/mpconfigport.h | 2 +- shared/tinyusb/mp_usbd.c | 17 ++++++++--------- shared/tinyusb/mp_usbd.h | 3 +++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ports/renesas-ra/mpconfigport.h b/ports/renesas-ra/mpconfigport.h index d3bc3235fd..222d5b919d 100644 --- a/ports/renesas-ra/mpconfigport.h +++ b/ports/renesas-ra/mpconfigport.h @@ -272,7 +272,7 @@ static inline mp_uint_t disable_irq(void) { #define MICROPY_END_ATOMIC_SECTION(state) enable_irq(state) #if MICROPY_HW_ENABLE_USBDEV -#define MICROPY_HW_USBDEV_TASK_HOOK extern void usbd_task(void); usbd_task(); +#define MICROPY_HW_USBDEV_TASK_HOOK extern void mp_usbd_task(void); mp_usbd_task(); #define MICROPY_VM_HOOK_COUNT (10) #define MICROPY_VM_HOOK_INIT static uint vm_hook_divisor = MICROPY_VM_HOOK_COUNT; #define MICROPY_VM_HOOK_POLL if (--vm_hook_divisor == 0) { \ diff --git a/shared/tinyusb/mp_usbd.c b/shared/tinyusb/mp_usbd.c index 87c10310f7..55af3d4fb4 100644 --- a/shared/tinyusb/mp_usbd.c +++ b/shared/tinyusb/mp_usbd.c @@ -38,16 +38,15 @@ #include "device/usbd_pvt.h" #endif -// Legacy TinyUSB task function wrapper, called by some ports from the interpreter hook -void usbd_task(void) { - tud_task_ext(0, false); -} - // TinyUSB task function wrapper, as scheduled from the USB IRQ -static void mp_usbd_task(mp_sched_node_t *node); +static void mp_usbd_task_callback(mp_sched_node_t *node); extern void __real_dcd_event_handler(dcd_event_t const *event, bool in_isr); +void mp_usbd_task(void) { + tud_task_ext(0, false); +} + // If -Wl,--wrap=dcd_event_handler is passed to the linker, then this wrapper // will be called and allows MicroPython to schedule the TinyUSB task when // dcd_event_handler() is called from an ISR. @@ -55,12 +54,12 @@ TU_ATTR_FAST_FUNC void __wrap_dcd_event_handler(dcd_event_t const *event, bool i static mp_sched_node_t usbd_task_node; __real_dcd_event_handler(event, in_isr); - mp_sched_schedule_node(&usbd_task_node, mp_usbd_task); + mp_sched_schedule_node(&usbd_task_node, mp_usbd_task_callback); } -static void mp_usbd_task(mp_sched_node_t *node) { +static void mp_usbd_task_callback(mp_sched_node_t *node) { (void)node; - tud_task_ext(0, false); + mp_usbd_task(); } #endif diff --git a/shared/tinyusb/mp_usbd.h b/shared/tinyusb/mp_usbd.h index 2e4feaca9f..340637c95f 100644 --- a/shared/tinyusb/mp_usbd.h +++ b/shared/tinyusb/mp_usbd.h @@ -29,6 +29,9 @@ #include "py/obj.h" +// Call this to explicitly run the TinyUSB device task. +void mp_usbd_task(void); + // Function to be implemented in port code. // Can write a string up to MICROPY_HW_USB_DESC_STR_MAX characters long, plus terminating byte. extern void mp_usbd_port_get_serial_number(char *buf);