diff --git a/ports/stm32/boardctrl.h b/ports/stm32/boardctrl.h index 551be3453..851922f41 100644 --- a/ports/stm32/boardctrl.h +++ b/ports/stm32/boardctrl.h @@ -60,6 +60,12 @@ #define MICROPY_BOARD_END_SOFT_RESET boardctrl_end_soft_reset #endif +// Called when USBD CDC data is available. +// Default function defined in usbd_cdc_interface.h. +#ifndef MICROPY_BOARD_USBD_CDC_RX_EVENT +#define MICROPY_BOARD_USBD_CDC_RX_EVENT usbd_cdc_rx_event_callback +#endif + // Constants to return from boardctrl_run_boot_py, boardctrl_run_main_py. enum { BOARDCTRL_CONTINUE, diff --git a/ports/stm32/usbd_cdc_interface.c b/ports/stm32/usbd_cdc_interface.c index 61a7c8248..b369524ca 100644 --- a/ports/stm32/usbd_cdc_interface.c +++ b/ports/stm32/usbd_cdc_interface.c @@ -37,6 +37,7 @@ #include #include +#include "boardctrl.h" #include "usbd_cdc_msc_hid.h" #include "usbd_cdc_interface.h" #include "pendsv.h" @@ -308,7 +309,7 @@ int8_t usbd_cdc_receive(usbd_cdc_state_t *cdc_in, size_t len) { } } - usbd_cdc_rx_event_callback(cdc); + MICROPY_BOARD_USBD_CDC_RX_EVENT(cdc); if ((cdc->flow & USBD_CDC_FLOWCONTROL_RTS) && (usbd_cdc_rx_buffer_full(cdc))) { cdc->rx_buf_full = true;