mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	Merge pull request #268 from mgeramb/setUartPins
Allow to set uart pins for RP2040 and ESP32 platform
This commit is contained in:
		
						commit
						a1b7e5d459
					
				@ -10,17 +10,42 @@
 | 
				
			|||||||
#define KNX_SERIAL Serial1
 | 
					#define KNX_SERIAL Serial1
 | 
				
			||||||
#endif
 | 
					#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()
 | 
					Esp32Platform::Esp32Platform()
 | 
				
			||||||
#ifndef KNX_NO_DEFAULT_UART
 | 
					#ifndef KNX_NO_DEFAULT_UART
 | 
				
			||||||
    : ArduinoPlatform(&KNX_SERIAL)
 | 
					    : ArduinoPlatform(&KNX_SERIAL)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					#ifndef KNX_NO_DEFAULT_UART
 | 
				
			||||||
 | 
					    knxUartPins(KNX_UART_RX_PIN, KNX_UART_TX_PIN);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Esp32Platform::Esp32Platform(HardwareSerial* s) : ArduinoPlatform(s)
 | 
					Esp32Platform::Esp32Platform(HardwareSerial* s) : ArduinoPlatform(s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Esp32Platform::knxUartPins(int8_t rxPin, int8_t txPin)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _rxPin = rxPin;
 | 
				
			||||||
 | 
					    _txPin = txPin;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ESP specific uart handling with pins
 | 
				
			||||||
 | 
					void Esp32Platform::setupUart()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _knxSerial->begin(19200, SERIAL_8E1, _rxPin, _txPin);
 | 
				
			||||||
 | 
					    while (!_knxSerial) 
 | 
				
			||||||
 | 
					        ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint32_t Esp32Platform::currentIpAddress()
 | 
					uint32_t Esp32Platform::currentIpAddress()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return WiFi.localIP();
 | 
					    return WiFi.localIP();
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,10 @@ public:
 | 
				
			|||||||
    Esp32Platform();
 | 
					    Esp32Platform();
 | 
				
			||||||
    Esp32Platform(HardwareSerial* s);
 | 
					    Esp32Platform(HardwareSerial* s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // uart
 | 
				
			||||||
 | 
					    void knxUartPins(int8_t rxPin, int8_t txPin);
 | 
				
			||||||
 | 
					    void setupUart() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ip stuff
 | 
					    // ip stuff
 | 
				
			||||||
    uint32_t currentIpAddress() override;
 | 
					    uint32_t currentIpAddress() override;
 | 
				
			||||||
    uint32_t currentSubnetMask() override;
 | 
					    uint32_t currentSubnetMask() override;
 | 
				
			||||||
@ -36,6 +40,8 @@ public:
 | 
				
			|||||||
    void commitToEeprom();
 | 
					    void commitToEeprom();
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    WiFiUDP _udp;
 | 
					    WiFiUDP _udp;
 | 
				
			||||||
 | 
					    int8_t _rxPin = -1; 
 | 
				
			||||||
 | 
					    int8_t _txPin = -1;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -49,11 +49,22 @@ A RAM-buffered Flash can be use by defining USE_RP2040_LARGE_EEPROM_EMULATION
 | 
				
			|||||||
#define KNX_SERIAL Serial1
 | 
					#define KNX_SERIAL Serial1
 | 
				
			||||||
#endif
 | 
					#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()
 | 
					RP2040ArduinoPlatform::RP2040ArduinoPlatform()
 | 
				
			||||||
#ifndef KNX_NO_DEFAULT_UART
 | 
					#ifndef KNX_NO_DEFAULT_UART
 | 
				
			||||||
    : ArduinoPlatform(&KNX_SERIAL)
 | 
					    : ArduinoPlatform(&KNX_SERIAL)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    #ifndef KNX_NO_DEFAULT_UART
 | 
				
			||||||
 | 
					    knxUartPins(KNX_UART_RX_PIN, KNX_UART_TX_PIN);
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
    #ifndef USE_RP2040_EEPROM_EMULATION
 | 
					    #ifndef USE_RP2040_EEPROM_EMULATION
 | 
				
			||||||
    _memoryType = Flash;
 | 
					    _memoryType = Flash;
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
@ -66,6 +77,18 @@ RP2040ArduinoPlatform::RP2040ArduinoPlatform( HardwareSerial* s) : ArduinoPlatfo
 | 
				
			|||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RP2040ArduinoPlatform::setupUart()
 | 
					void RP2040ArduinoPlatform::setupUart()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    SerialUART* serial = dynamic_cast<SerialUART*>(_knxSerial);
 | 
					    SerialUART* serial = dynamic_cast<SerialUART*>(_knxSerial);
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,8 @@ public:
 | 
				
			|||||||
    RP2040ArduinoPlatform();
 | 
					    RP2040ArduinoPlatform();
 | 
				
			||||||
    RP2040ArduinoPlatform( HardwareSerial* s);
 | 
					    RP2040ArduinoPlatform( HardwareSerial* s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // uart
 | 
				
			||||||
 | 
					    void knxUartPins(pin_size_t rxPin, pin_size_t txPin);
 | 
				
			||||||
    void setupUart();
 | 
					    void setupUart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // unique serial number
 | 
					    // unique serial number
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user