shared/tinyusb: Wake main task if needed at end of USB ISR.
Signed-off-by: Andrew Leech <andrew@alelec.net>
This commit is contained in:
parent
11bc7d0fc1
commit
548f88d2bd
@ -109,6 +109,10 @@ __attribute__((always_inline)) static inline uint32_t disable_irq(void) {
|
||||
|
||||
void mp_hal_set_interrupt_char(int c);
|
||||
|
||||
static inline void mp_hal_wake_main_task_from_isr(void) {
|
||||
// Defined for tinyusb support, nothing needs to be done here.
|
||||
}
|
||||
|
||||
static inline mp_uint_t mp_hal_ticks_ms(void) {
|
||||
return ticks_ms32();
|
||||
}
|
||||
|
@ -53,6 +53,10 @@ void mp_hal_set_interrupt_char(int c); // -1 to disable
|
||||
int mp_hal_stdin_rx_chr(void);
|
||||
void mp_hal_stdout_tx_str(const char *str);
|
||||
|
||||
static inline void mp_hal_wake_main_task_from_isr(void) {
|
||||
// Defined for tinyusb support, nothing needs to be done here.
|
||||
}
|
||||
|
||||
void mp_hal_delay_ms(mp_uint_t ms);
|
||||
void mp_hal_delay_us(mp_uint_t us);
|
||||
|
||||
|
@ -52,6 +52,10 @@ static inline int mp_hal_status_to_neg_errno(HAL_StatusTypeDef status) {
|
||||
NORETURN void mp_hal_raise(HAL_StatusTypeDef status);
|
||||
void mp_hal_set_interrupt_char(int c); // -1 to disable
|
||||
|
||||
static inline void mp_hal_wake_main_task_from_isr(void) {
|
||||
// Defined for tinyusb support, nothing needs to be done here.
|
||||
}
|
||||
|
||||
// timing functions
|
||||
|
||||
#include "irq.h"
|
||||
|
@ -77,6 +77,10 @@ void mp_thread_end_atomic_section(uint32_t);
|
||||
void mp_hal_set_interrupt_char(int c);
|
||||
void mp_hal_time_ns_set_from_rtc(void);
|
||||
|
||||
static inline void mp_hal_wake_main_task_from_isr(void) {
|
||||
// Defined for tinyusb support, nothing needs to be done here.
|
||||
}
|
||||
|
||||
static inline void mp_hal_delay_us_fast(mp_uint_t us) {
|
||||
busy_wait_us(us);
|
||||
}
|
||||
|
@ -50,6 +50,10 @@ uint64_t mp_hal_ticks_us_64(void);
|
||||
|
||||
void mp_hal_set_interrupt_char(int c);
|
||||
|
||||
static inline void mp_hal_wake_main_task_from_isr(void) {
|
||||
// Defined for tinyusb support, nothing needs to be done here.
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) static inline void enable_irq(uint32_t state) {
|
||||
__set_PRIMASK(state);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
#include "py/mphal.h"
|
||||
|
||||
#if MICROPY_HW_ENABLE_USBDEV
|
||||
|
||||
@ -55,6 +55,7 @@ extern void __real_dcd_event_handler(dcd_event_t const *event, bool in_isr);
|
||||
TU_ATTR_FAST_FUNC void __wrap_dcd_event_handler(dcd_event_t const *event, bool in_isr) {
|
||||
__real_dcd_event_handler(event, in_isr);
|
||||
mp_usbd_schedule_task();
|
||||
mp_hal_wake_main_task_from_isr();
|
||||
}
|
||||
|
||||
TU_ATTR_FAST_FUNC void mp_usbd_schedule_task(void) {
|
||||
|
Loading…
Reference in New Issue
Block a user