From 93111925b3e25b20104f2c52ae6bd8e5ff0d5683 Mon Sep 17 00:00:00 2001 From: cumin <13809292481@163.com> Date: Tue, 8 Sep 2026 14:52:12 +0200 Subject: [PATCH] feat(usb): add optional hook on CDC line coding change Signed-off-by: cumin <13809292481@163.com> Co-authored-by: Frederic Pillon --- libraries/USBDevice/inc/usbd_cdc_if.h | 3 +++ libraries/USBDevice/src/cdc/usbd_cdc_if.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/libraries/USBDevice/inc/usbd_cdc_if.h b/libraries/USBDevice/inc/usbd_cdc_if.h index 1d3f8b91ff..5f1459388a 100644 --- a/libraries/USBDevice/inc/usbd_cdc_if.h +++ b/libraries/USBDevice/inc/usbd_cdc_if.h @@ -59,6 +59,9 @@ uint8_t CDC_getStopBits(void); uint8_t CDC_getParity(void); uint8_t CDC_getDataBits(void); +/* Optional board hook invoked after the host changes the CDC line coding. */ +void CDC_LineCodingChanged(uint32_t bitrate); + #ifdef __cplusplus } #endif diff --git a/libraries/USBDevice/src/cdc/usbd_cdc_if.c b/libraries/USBDevice/src/cdc/usbd_cdc_if.c index 922b7d57e3..5067e7d02e 100644 --- a/libraries/USBDevice/src/cdc/usbd_cdc_if.c +++ b/libraries/USBDevice/src/cdc/usbd_cdc_if.c @@ -89,6 +89,12 @@ USBD_CDC_LineCodingTypeDef linecoding = { 0x08 /* nb. of bits 8*/ }; +/* Boards that need a CDC line-coding side effect can override this hook. */ +WEAK void CDC_LineCodingChanged(uint32_t bitrate) +{ + (void)bitrate; +} + /* Private functions ---------------------------------------------------------*/ /** @@ -175,6 +181,7 @@ static int8_t USBD_CDC_Control(uint8_t cmd, uint8_t *pbuf, uint16_t length) linecoding.format = pbuf[4]; linecoding.paritytype = pbuf[5]; linecoding.datatype = pbuf[6]; + CDC_LineCodingChanged(linecoding.bitrate); break; case CDC_GET_LINE_CODING: