From b7182954237a69ef5ea865d126dcb1c2b9600cd3 Mon Sep 17 00:00:00 2001 From: M-Byte Date: Wed, 8 Jun 2022 09:37:55 +0200 Subject: [PATCH] Add defines for LED, button and serial port To make supporting different board layouts easier, this introduces some new defines: For all platforms: - `KNX_LED` - the programming LED, defaults to `LED_BUILTIN` - `KNX_BUTTON` - the programming button, defaults to `0` For Arduino platforms: - `KNX_DEBUG_SERIAL` - the serial port that is used for debugging, defaults to `Serial` - `KNX_SERIAL` - the serial port used for communication with the TPUART, default depends on platform --- src/arduino_platform.cpp | 8 ++++---- src/arduino_platform.h | 4 ++++ src/esp32_platform.cpp | 12 ++++++++---- src/esp_platform.cpp | 12 ++++++++---- src/knx_facade.h | 13 ++++++++++--- src/rp2040_arduino_platform.cpp | 5 ++++- src/samd_platform.cpp | 6 +++++- src/stm32_platform.cpp | 8 ++++++-- 8 files changed, 49 insertions(+), 19 deletions(-) diff --git a/src/arduino_platform.cpp b/src/arduino_platform.cpp index 8c58dfb..62ab8a9 100644 --- a/src/arduino_platform.cpp +++ b/src/arduino_platform.cpp @@ -7,7 +7,7 @@ #endif #ifndef KNX_NO_PRINT -Stream* ArduinoPlatform::SerialDebug = &Serial; +Stream* ArduinoPlatform::SerialDebug = &KNX_DEBUG_SERIAL; #endif ArduinoPlatform::ArduinoPlatform() : _knxSerial(nullptr) @@ -22,13 +22,13 @@ void ArduinoPlatform::fatalError() { while (true) { -#ifdef LED_BUILTIN +#ifdef KNX_LED static const long LED_BLINK_PERIOD = 200; if ((millis() % LED_BLINK_PERIOD) > (LED_BLINK_PERIOD / 2)) - digitalWrite(LED_BUILTIN, HIGH); + digitalWrite(KNX_LED, HIGH); else - digitalWrite(LED_BUILTIN, LOW); + digitalWrite(KNX_LED, LOW); #endif } } diff --git a/src/arduino_platform.h b/src/arduino_platform.h index 3ef5047..29d846e 100644 --- a/src/arduino_platform.h +++ b/src/arduino_platform.h @@ -2,6 +2,10 @@ #include "Arduino.h" +#ifndef KNX_DEBUG_SERIAL +#define KNX_DEBUG_SERIAL Serial +#endif + class ArduinoPlatform : public Platform { public: diff --git a/src/esp32_platform.cpp b/src/esp32_platform.cpp index c6a600b..f6c4812 100644 --- a/src/esp32_platform.cpp +++ b/src/esp32_platform.cpp @@ -6,9 +6,13 @@ #include "knx/bits.h" +#ifndef KNX_SERIAL +#define KNX_SERIAL Serial1 +#endif + Esp32Platform::Esp32Platform() #ifndef KNX_NO_DEFAULT_UART - : ArduinoPlatform(&Serial1) + : ArduinoPlatform(&KNX_SERIAL) #endif { } @@ -55,10 +59,10 @@ void Esp32Platform::setupMultiCast(uint32_t addr, uint16_t port) { IPAddress mcastaddr(htonl(addr)); - Serial.printf("setup multicast addr: %s port: %d ip: %s\n", mcastaddr.toString().c_str(), port, + KNX_DEBUG_SERIAL.printf("setup multicast addr: %s port: %d ip: %s\n", mcastaddr.toString().c_str(), port, WiFi.localIP().toString().c_str()); uint8_t result = _udp.beginMulticast(mcastaddr, port); - Serial.printf("result %d\n", result); + KNX_DEBUG_SERIAL.printf("result %d\n", result); } void Esp32Platform::closeMultiCast() @@ -83,7 +87,7 @@ int Esp32Platform::readBytesMultiCast(uint8_t * buffer, uint16_t maxLen) if (len > maxLen) { - Serial.printf("udp buffer to small. was %d, needed %d\n", maxLen, len); + KNX_DEBUG_SERIAL.printf("udp buffer to small. was %d, needed %d\n", maxLen, len); fatalError(); } diff --git a/src/esp_platform.cpp b/src/esp_platform.cpp index 67bcef1..b74dedd 100644 --- a/src/esp_platform.cpp +++ b/src/esp_platform.cpp @@ -7,9 +7,13 @@ #include "knx/bits.h" +#ifndef KNX_SERIAL +#define KNX_SERIAL Serial +#endif + EspPlatform::EspPlatform() #ifndef KNX_NO_DEFAULT_UART - : ArduinoPlatform(&Serial) + : ArduinoPlatform(&KNX_SERIAL) #endif { } @@ -55,10 +59,10 @@ void EspPlatform::setupMultiCast(uint32_t addr, uint16_t port) _multicastPort = port; IPAddress mcastaddr(_multicastAddr); - Serial.printf("setup multicast addr: %s port: %d ip: %s\n", mcastaddr.toString().c_str(), port, + KNX_DEBUG_SERIAL.printf("setup multicast addr: %s port: %d ip: %s\n", mcastaddr.toString().c_str(), port, WiFi.localIP().toString().c_str()); uint8 result = _udp.beginMulticast(WiFi.localIP(), mcastaddr, port); - Serial.printf("result %d\n", result); + KNX_DEBUG_SERIAL.printf("result %d\n", result); } void EspPlatform::closeMultiCast() @@ -83,7 +87,7 @@ int EspPlatform::readBytesMultiCast(uint8_t * buffer, uint16_t maxLen) if (len > maxLen) { - Serial.printf("udp buffer to small. was %d, needed %d\n", maxLen, len); + KNX_DEBUG_SERIAL.printf("udp buffer to small. was %d, needed %d\n", maxLen, len); fatalError(); } diff --git a/src/knx_facade.h b/src/knx_facade.h index f3369c9..9d12182 100644 --- a/src/knx_facade.h +++ b/src/knx_facade.h @@ -48,13 +48,20 @@ #else #if !defined(LED_BUILTIN) #define LED_BUILTIN 5 // see GPIO_PinConfig gpioPinConfigs[] - #endif +#endif #include "cc1310_platform.h" #ifndef KNX_NO_AUTOMATIC_GLOBAL_INSTANCE extern void buttonUp(); #endif #endif +#ifndef KNX_LED + #define KNX_LED LED_BUILTIN +#endif +#ifndef KNX_BUTTON + #define KNX_BUTTON 0 +#endif + typedef const uint8_t* (*RestoreCallback)(const uint8_t* buffer); typedef uint8_t* (*SaveCallback)(uint8_t* buffer); typedef void (*IsrFunctionPtr)(); @@ -405,8 +412,8 @@ template class KnxFacade : private SaveRestore ProgLedOnCallback _progLedOnCallback = 0; ProgLedOffCallback _progLedOffCallback = 0; uint32_t _ledPinActiveOn = LOW; - uint32_t _ledPin = LED_BUILTIN; - uint32_t _buttonPin = 0; + uint32_t _ledPin = KNX_LED; + uint32_t _buttonPin = KNX_BUTTON; SaveCallback _saveCallback = 0; RestoreCallback _restoreCallback = 0; volatile bool _toggleProgMode = false; diff --git a/src/rp2040_arduino_platform.cpp b/src/rp2040_arduino_platform.cpp index 2dcb9f2..7392223 100644 --- a/src/rp2040_arduino_platform.cpp +++ b/src/rp2040_arduino_platform.cpp @@ -43,10 +43,13 @@ A RAM-buffered Flash can be use by defining USE_RP2040_LARGE_EEPROM_EMULATION #error "KNX_FLASH_OFFSET must be multiple of 4096" #endif +#ifndef KNX_SERIAL +#define KNX_SERIAL Serial1 +#endif RP2040ArduinoPlatform::RP2040ArduinoPlatform() #ifndef KNX_NO_DEFAULT_UART - : ArduinoPlatform(&Serial1) + : ArduinoPlatform(&KNX_SERIAL) #endif { #ifndef USE_RP2040_EEPROM_EMULATION diff --git a/src/samd_platform.cpp b/src/samd_platform.cpp index e5633dc..fc85645 100644 --- a/src/samd_platform.cpp +++ b/src/samd_platform.cpp @@ -12,9 +12,13 @@ #error "KNX_FLASH_SIZE must be multiple of 1024" #endif +#ifndef KNX_SERIAL +#define KNX_SERIAL Serial1 +#endif + SamdPlatform::SamdPlatform() #ifndef KNX_NO_DEFAULT_UART - : ArduinoPlatform(&Serial1) + : ArduinoPlatform(&KNX_SERIAL) #endif { #ifndef USE_SAMD_EEPROM_EMULATION diff --git a/src/stm32_platform.cpp b/src/stm32_platform.cpp index 5e3a88c..a0d9fca 100644 --- a/src/stm32_platform.cpp +++ b/src/stm32_platform.cpp @@ -4,9 +4,13 @@ #include #include "knx/bits.h" +#ifndef KNX_SERIAL +#define KNX_SERIAL Serial2 +#endif + Stm32Platform::Stm32Platform() #ifndef KNX_NO_DEFAULT_UART - : ArduinoPlatform(&Serial2) + : ArduinoPlatform(&KNX_SERIAL) #endif { } @@ -44,7 +48,7 @@ uint8_t * Stm32Platform::getEepromBuffer(uint16_t size) _eepromPtr = new uint8_t[size]; eeprom_buffer_fill(); for (uint16_t i = 0; i < size; ++i) - _eepromPtr[i] = eeprom_buffered_read_byte(i); + _eepromPtr[i] = eeprom_buffered_read_byte(i); } return _eepromPtr;