Skip to content

Commit

Permalink
Merge pull request #269 from mgeramb/FixRP2040UARTPinHandling
Browse files Browse the repository at this point in the history
Fix for RP2040 UART pin handling: Setting of uart pins moved setupUart
  • Loading branch information
thelsing authored Jan 2, 2024
2 parents 7215f47 + c1691b7 commit 4deead3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 29 deletions.
17 changes: 6 additions & 11 deletions src/esp32_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
29 changes: 11 additions & 18 deletions src/rp2040_arduino_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,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;
Expand All @@ -86,21 +81,19 @@ RP2040ArduinoPlatform::RP2040ArduinoPlatform( HardwareSerial* s) : ArduinoPlatfo

void RP2040ArduinoPlatform::knxUartPins(pin_size_t rxPin, pin_size_t txPin)
{
SerialUART* serial = dynamic_cast<SerialUART*>(_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()
{
SerialUART* serial = dynamic_cast<SerialUART*>(_knxSerial);
if(serial)
{
if (_rxPin != UART_PIN_NOT_DEFINED)
serial->setRX(_rxPin);
if (_txPin != UART_PIN_NOT_DEFINED)
serial->setTX(_txPin);
serial->setPollingMode();
}

Expand Down
2 changes: 2 additions & 0 deletions src/rp2040_arduino_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
};

Expand Down

0 comments on commit 4deead3

Please sign in to comment.