diff --git a/libraries/USBDevice/inc/usbd_cdc_if.h b/libraries/USBDevice/inc/usbd_cdc_if.h index fe05df536a..1d3f8b91ff 100644 --- a/libraries/USBDevice/inc/usbd_cdc_if.h +++ b/libraries/USBDevice/inc/usbd_cdc_if.h @@ -53,6 +53,12 @@ void CDC_deInit(void); bool CDC_connected(void); void CDC_enableDTR(bool enable); +// getters for CDC line codings. Do not expose struct directly +uint32_t CDC_getBaudrate(void); +uint8_t CDC_getStopBits(void); +uint8_t CDC_getParity(void); +uint8_t CDC_getDataBits(void); + #ifdef __cplusplus } #endif diff --git a/libraries/USBDevice/src/USBSerial.cpp b/libraries/USBDevice/src/USBSerial.cpp index c777105038..e23250d007 100644 --- a/libraries/USBDevice/src/USBSerial.cpp +++ b/libraries/USBDevice/src/USBSerial.cpp @@ -158,22 +158,26 @@ void USBSerial::flush(void) uint32_t USBSerial::baud() { - return 115200; + // return (virtual) CDC line setting coding + return CDC_getBaudrate(); } uint8_t USBSerial::stopbits() { - return ONE_STOP_BIT; + // return (virtual) CDC line setting coding + return CDC_getStopBits(); } uint8_t USBSerial::paritytype() { - return NO_PARITY; + // return (virtual) CDC line setting coding + return CDC_getParity(); } uint8_t USBSerial::numbits() { - return 8; + // return (virtual) CDC line setting coding + return CDC_getDataBits(); } void USBSerial::dtr(bool enable) diff --git a/libraries/USBDevice/src/cdc/usbd_cdc_if.c b/libraries/USBDevice/src/cdc/usbd_cdc_if.c index 326ef3216d..a04cc2b218 100644 --- a/libraries/USBDevice/src/cdc/usbd_cdc_if.c +++ b/libraries/USBDevice/src/cdc/usbd_cdc_if.c @@ -379,6 +379,30 @@ void CDC_enableDTR(bool enable) CDC_DTR_enabled = enable; } +// getter for CDC baudrate +uint32_t CDC_getBaudrate() +{ + return linecoding.bitrate; +} + +// getter for CDC stop bits. Note: CDC definition identical to USBSerial.h +uint8_t CDC_getStopBits(void) +{ + return linecoding.format; +} + +// getter for CDC parity. Note: CDC definition identical to USBSerial.h +uint8_t CDC_getParity(void) +{ + return linecoding.paritytype; +} + +// getter for CDC data bits. Note: CDC definition identical to USBSerial.h +uint8_t CDC_getDataBits(void) +{ + return linecoding.datatype; +} + #endif /* USBD_USE_CDC */ #endif /* USBCON */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/