diff --git a/src/esp32_platform.cpp b/src/esp32_platform.cpp index a8c985ba..9367f4e4 100644 --- a/src/esp32_platform.cpp +++ b/src/esp32_platform.cpp @@ -10,22 +10,17 @@ #define KNX_SERIAL Serial1 #endif -#ifndef KNX_UART_RX_PIN -#define KNX_UART_RX_PIN -1 -#endif - -#ifndef KNX_UART_TX_PIN -#define KNX_UART_TX_PIN -1 -#endif - Esp32Platform::Esp32Platform() #ifndef KNX_NO_DEFAULT_UART : ArduinoPlatform(&KNX_SERIAL) #endif { -#ifndef KNX_NO_DEFAULT_UART - knxUartPins(KNX_UART_RX_PIN, KNX_UART_TX_PIN); -#endif + #ifdef KNX_UART_RX_PIN + _rxPin = KNX_UART_RX_PIN; + #endif + #ifdef KNX_UART_TX_PIN + _txPin = KNX_UART_TX_PIN; + #endif } Esp32Platform::Esp32Platform(HardwareSerial* s) : ArduinoPlatform(s) diff --git a/src/rp2040_arduino_platform.cpp b/src/rp2040_arduino_platform.cpp index b6da92d2..6fd71a38 100644 --- a/src/rp2040_arduino_platform.cpp +++ b/src/rp2040_arduino_platform.cpp @@ -57,21 +57,16 @@ extern Wiznet5500lwIP KNX_NETIF; #endif -#ifndef KNX_UART_RX_PIN -#define KNX_UART_RX_PIN UART_PIN_NOT_DEFINED -#endif - -#ifndef KNX_UART_TX_PIN -#define KNX_UART_TX_PIN UART_PIN_NOT_DEFINED -#endif - RP2040ArduinoPlatform::RP2040ArduinoPlatform() #ifndef KNX_NO_DEFAULT_UART : ArduinoPlatform(&KNX_SERIAL) #endif { - #ifndef KNX_NO_DEFAULT_UART - knxUartPins(KNX_UART_RX_PIN, KNX_UART_TX_PIN); + #ifdef KNX_UART_RX_PIN + _rxPin = KNX_UART_RX_PIN; + #endif + #ifdef KNX_UART_TX_PIN + _txPin = KNX_UART_TX_PIN; #endif #ifndef USE_RP2040_EEPROM_EMULATION _memoryType = Flash; @@ -87,14 +82,8 @@ RP2040ArduinoPlatform::RP2040ArduinoPlatform( HardwareSerial* s) : ArduinoPlatfo void RP2040ArduinoPlatform::knxUartPins(pin_size_t rxPin, pin_size_t txPin) { - SerialUART* serial = dynamic_cast(_knxSerial); - if(serial) - { - if (rxPin != UART_PIN_NOT_DEFINED) - serial->setRX(rxPin); - if (txPin != UART_PIN_NOT_DEFINED) - serial->setTX(txPin); - } + _rxPin = rxPin; + _txPin = txPin; } void RP2040ArduinoPlatform::setupUart() @@ -102,6 +91,10 @@ void RP2040ArduinoPlatform::setupUart() SerialUART* serial = dynamic_cast(_knxSerial); if(serial) { + if (_rxPin != UART_PIN_NOT_DEFINED) + serial->setRX(_rxPin); + if (_txPin != UART_PIN_NOT_DEFINED) + serial->setTX(_txPin); serial->setPollingMode(); } diff --git a/src/rp2040_arduino_platform.h b/src/rp2040_arduino_platform.h index b71b3b4d..613ba27c 100644 --- a/src/rp2040_arduino_platform.h +++ b/src/rp2040_arduino_platform.h @@ -128,6 +128,8 @@ class RP2040ArduinoPlatform : public ArduinoPlatform #endif protected: IPAddress mcastaddr; protected: uint16_t _port; + protected: pin_size_t _rxPin = UART_PIN_NOT_DEFINED; + protected: pin_size_t _txPin = UART_PIN_NOT_DEFINED; #endif };