From 1af5c46fc03c3766229e2a24b592a9469deb9438 Mon Sep 17 00:00:00 2001 From: patricklaf Date: Tue, 15 Apr 2025 16:09:56 +0200 Subject: [PATCH 1/3] Update HardwareSerial.h Signed-off-by: patricklaf --- cores/arduino/HardwareSerial.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h index 3ed29a873d..be670e9540 100644 --- a/cores/arduino/HardwareSerial.h +++ b/cores/arduino/HardwareSerial.h @@ -146,7 +146,7 @@ class HardwareSerial : public Stream { using Print::write; // pull in write(str) from Print operator bool() { - return true; + return _ready; } void setRx(uint32_t _rx); @@ -189,6 +189,7 @@ class HardwareSerial : public Stream { #endif // HAL_UART_MODULE_ENABLED && !HAL_UART_MODULE_ONLY private: + bool _ready; bool _rx_enabled; uint8_t _config; unsigned long _baud; From 7b24c43ccd2fd986c0d2556965e03687d8699fed Mon Sep 17 00:00:00 2001 From: patricklaf Date: Tue, 15 Apr 2025 16:12:29 +0200 Subject: [PATCH 2/3] Update HardwareSerial.cpp Signed-off-by: patricklaf --- cores/arduino/HardwareSerial.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 4dd8fd02a4..885894c8e3 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -449,10 +449,14 @@ void HardwareSerial::begin(unsigned long baud, byte config) uart_init(&_serial, (uint32_t)baud, databits, parity, stopbits, _rx_invert, _tx_invert, _data_invert); enableHalfDuplexRx(); uart_attach_rx_callback(&_serial, _rx_complete_irq); + + _ready = true; } void HardwareSerial::end() { + _ready = false; + // wait for transmission of outgoing data flush(TX_TIMEOUT); From de7ce1cc4546cc7587c98bd77cae1ad84210b33e Mon Sep 17 00:00:00 2001 From: patricklaf Date: Tue, 15 Apr 2025 16:39:58 +0200 Subject: [PATCH 3/3] Update HardwareSerial.cpp Signed-off-by: patricklaf --- cores/arduino/HardwareSerial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 885894c8e3..0ad990c466 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -456,7 +456,7 @@ void HardwareSerial::begin(unsigned long baud, byte config) void HardwareSerial::end() { _ready = false; - + // wait for transmission of outgoing data flush(TX_TIMEOUT);