From 98ef71a029c90daa964536a3960757352df38492 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 7 Sep 2023 19:52:20 -0300 Subject: [PATCH 1/3] Fixes UART internal Pin setup --- cores/esp32/HardwareSerial.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index 4655cf27a6f..e9039e4bb38 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -568,10 +568,10 @@ bool HardwareSerial::setPins(int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t r // uartSetPins() checks if pins are valid for each function and for the SoC bool retCode = uartSetPins(_uart, rxPin, txPin, ctsPin, rtsPin); if (retCode) { - _txPin = _txPin >= 0 ? txPin : _txPin; - _rxPin = _rxPin >= 0 ? rxPin : _rxPin; - _rtsPin = _rtsPin >= 0 ? rtsPin : _rtsPin; - _ctsPin = _ctsPin >= 0 ? ctsPin : _ctsPin; + _txPin = txPin >= 0 ? txPin : _txPin; + _rxPin = rxPin >= 0 ? rxPin : _rxPin; + _rtsPin = rtsPin >= 0 ? rtsPin : _rtsPin; + _ctsPin = ctsPin >= 0 ? ctsPin : _ctsPin; } else { log_e("Error when setting Serial port Pins. Invalid Pin.\n"); } From 30d54193c7b649f45d416db1689e4e90f7a96a69 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 7 Sep 2023 20:29:58 -0300 Subject: [PATCH 2/3] Detach UART GPIO in setPins() --- cores/esp32/HardwareSerial.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index e9039e4bb38..a00091c3b35 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -568,6 +568,12 @@ bool HardwareSerial::setPins(int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t r // uartSetPins() checks if pins are valid for each function and for the SoC bool retCode = uartSetPins(_uart, rxPin, txPin, ctsPin, rtsPin); if (retCode) { + // detach previous attached UART pins if not set as same as before + if (_rxPin > 0 && _rxPin != rxPin) uartDetachPins(_uart, _rxPin, -1, -1, -1); + if (_txPin > 0 && _txPin != txPin) uartDetachPins(_uart, -1, _txPin, -1, -1); + if (_ctsPin > 0 && _ctsPin != ctsPin) uartDetachPins(_uart, -1, -1, _ctsPin, -1); + if (_rtsPin > 0 && _rtsPin != rtsPin) uartDetachPins(_uart, -1, -1, -1, _rtsPin); + // set new pins for a future end() or a setPins() _txPin = txPin >= 0 ? txPin : _txPin; _rxPin = rxPin >= 0 ? rxPin : _rxPin; _rtsPin = rtsPin >= 0 ? rtsPin : _rtsPin; From 5da67c14100cfd9ce446203b996c08ff277aeebd Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Fri, 8 Sep 2023 12:21:56 -0300 Subject: [PATCH 3/3] Update cores/esp32/HardwareSerial.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com> --- cores/esp32/HardwareSerial.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index a00091c3b35..d727eeb3495 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -569,10 +569,10 @@ bool HardwareSerial::setPins(int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t r bool retCode = uartSetPins(_uart, rxPin, txPin, ctsPin, rtsPin); if (retCode) { // detach previous attached UART pins if not set as same as before - if (_rxPin > 0 && _rxPin != rxPin) uartDetachPins(_uart, _rxPin, -1, -1, -1); - if (_txPin > 0 && _txPin != txPin) uartDetachPins(_uart, -1, _txPin, -1, -1); - if (_ctsPin > 0 && _ctsPin != ctsPin) uartDetachPins(_uart, -1, -1, _ctsPin, -1); - if (_rtsPin > 0 && _rtsPin != rtsPin) uartDetachPins(_uart, -1, -1, -1, _rtsPin); + if (_rxPin >= 0 && _rxPin != rxPin) uartDetachPins(_uart, _rxPin, -1, -1, -1); + if (_txPin >= 0 && _txPin != txPin) uartDetachPins(_uart, -1, _txPin, -1, -1); + if (_ctsPin >= 0 && _ctsPin != ctsPin) uartDetachPins(_uart, -1, -1, _ctsPin, -1); + if (_rtsPin >= 0 && _rtsPin != rtsPin) uartDetachPins(_uart, -1, -1, -1, _rtsPin); // set new pins for a future end() or a setPins() _txPin = txPin >= 0 ? txPin : _txPin; _rxPin = rxPin >= 0 ? rxPin : _rxPin;