From 5f2f9044ff0fd936618931fa60b2376c43f1e25b Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 13 Oct 2021 18:29:00 +1100 Subject: [PATCH] stm32/usbd_cdc_interface: Allow a board to hook into USBD CDC RX events. Signed-off-by: Damien George --- ports/stm32/boardctrl.h | 6 ++++++ ports/stm32/usbd_cdc_interface.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) 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;