From 8d5dc5bf73582df121fead1f35285d2a542146fc Mon Sep 17 00:00:00 2001 From: Fabian Schmieder Date: Sun, 1 Sep 2019 20:49:28 +0200 Subject: [PATCH] setter/getter & overloaded constructor (ArduinoPlatform) for HardwareSerial-object (#31) * added overload to platform constructors for custom HardwareSerial-object * added setter/getter setUart & getUart * set Serial1 as default UART for ESP32 --- src/arduino_platform.cpp | 10 ++++++++++ src/arduino_platform.h | 2 ++ src/esp32_platform.cpp | 5 ++++- src/esp32_platform.h | 1 + src/esp_platform.cpp | 4 ++++ src/esp_platform.h | 1 + src/knx_facade.cpp | 3 ++- src/samd_platform.cpp | 4 ++++ src/samd_platform.h | 1 + 9 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/arduino_platform.cpp b/src/arduino_platform.cpp index a12c5b6..29309c7 100644 --- a/src/arduino_platform.cpp +++ b/src/arduino_platform.cpp @@ -68,6 +68,16 @@ int ArduinoPlatform::readBytes(uint8_t * buffer, uint16_t maxLen) return 0; } +void ArduinoPlatform::setUart( HardwareSerial& serial ) +{ + _knxSerial = serial; +} + +HardwareSerial& ArduinoPlatform::getUart() +{ + return _knxSerial; +} + void ArduinoPlatform::setupUart() { _knxSerial.begin(19200, SERIAL_8E1); diff --git a/src/arduino_platform.h b/src/arduino_platform.h index b5207fa..ce7fa54 100644 --- a/src/arduino_platform.h +++ b/src/arduino_platform.h @@ -25,6 +25,8 @@ class ArduinoPlatform : public Platform int readBytes(uint8_t* buffer, uint16_t maxLen); //uart + virtual void setUart( HardwareSerial& serial ); + virtual HardwareSerial& getUart(); virtual void setupUart(); virtual void closeUart(); virtual int uartAvailable(); diff --git a/src/esp32_platform.cpp b/src/esp32_platform.cpp index 88b9add..fc8cc1d 100644 --- a/src/esp32_platform.cpp +++ b/src/esp32_platform.cpp @@ -6,8 +6,11 @@ #include "knx/bits.h" +Esp32Platform::Esp32Platform() : ArduinoPlatform(Serial1) +{ +} -Esp32Platform::Esp32Platform() : ArduinoPlatform(Serial) +Esp32Platform::Esp32Platform( HardwareSerial& s) : ArduinoPlatform(s) { } diff --git a/src/esp32_platform.h b/src/esp32_platform.h index 3ecafba..79c0f96 100644 --- a/src/esp32_platform.h +++ b/src/esp32_platform.h @@ -11,6 +11,7 @@ class Esp32Platform : public ArduinoPlatform using ArduinoPlatform::_mulitcastPort; public: Esp32Platform(); + Esp32Platform( HardwareSerial& s); // ip stuff uint32_t currentIpAddress() override; diff --git a/src/esp_platform.cpp b/src/esp_platform.cpp index 71a121a..2ca2c5e 100644 --- a/src/esp_platform.cpp +++ b/src/esp_platform.cpp @@ -11,6 +11,10 @@ EspPlatform::EspPlatform() : ArduinoPlatform(Serial) { } +EspPlatform::EspPlatform( HardwareSerial& s) : ArduinoPlatform(s) +{ +} + uint32_t EspPlatform::currentIpAddress() { return WiFi.localIP(); diff --git a/src/esp_platform.h b/src/esp_platform.h index 75b2b21..a9b4670 100644 --- a/src/esp_platform.h +++ b/src/esp_platform.h @@ -12,6 +12,7 @@ class EspPlatform : public ArduinoPlatform public: EspPlatform(); + EspPlatform( HardwareSerial& s); // ip stuff uint32_t currentIpAddress() override; diff --git a/src/knx_facade.cpp b/src/knx_facade.cpp index 9f32b9b..82c4473 100644 --- a/src/knx_facade.cpp +++ b/src/knx_facade.cpp @@ -8,12 +8,13 @@ KnxFacade knx; #elif ARDUINO_ARCH_ESP8266 KnxFacade knx; #elif ARDUINO_ARCH_ESP32 +//KnxFacade knx; KnxFacade knx; #elif __linux__ #define ICACHE_RAM_ATTR #endif -ICACHE_RAM_ATTR void buttonUp() +ICACHE_RAM_ATTR void buttonUp() { #ifndef __linux__ knx._toogleProgMode = true; diff --git a/src/samd_platform.cpp b/src/samd_platform.cpp index 5fb8e42..31b1f03 100644 --- a/src/samd_platform.cpp +++ b/src/samd_platform.cpp @@ -10,6 +10,10 @@ SamdPlatform::SamdPlatform() : ArduinoPlatform(Serial1) { } +SamdPlatform::SamdPlatform( HardwareSerial& s) : ArduinoPlatform(s) +{ +} + void SamdPlatform::restart() { SerialDBG.println("restart"); diff --git a/src/samd_platform.h b/src/samd_platform.h index 4214e2d..7dbc70a 100644 --- a/src/samd_platform.h +++ b/src/samd_platform.h @@ -10,6 +10,7 @@ class SamdPlatform : public ArduinoPlatform { public: SamdPlatform(); + SamdPlatform( HardwareSerial& s); void restart(); uint8_t* getEepromBuffer(uint16_t size);