From cd0bce0c20ca1d896b528ad028032cb74e40f3b4 Mon Sep 17 00:00:00 2001 From: Nanosonde <2073569+nanosonde@users.noreply.github.com> Date: Fri, 17 Jul 2020 12:55:00 +0200 Subject: [PATCH] Remove MEDIUM_TYPE and use MASK_VERSION --- examples/knx-linux-coupler/CMakeLists.txt | 1 - examples/knx-linux-coupler/main.cpp | 8 +--- examples/knx-linux/CMakeLists.txt | 2 +- src/knx/config.h | 12 +++++- src/knx/data_link_layer.cpp | 5 --- src/knx_facade.cpp | 45 ++++++++++++----------- src/knx_facade.h | 5 +-- 7 files changed, 38 insertions(+), 40 deletions(-) diff --git a/examples/knx-linux-coupler/CMakeLists.txt b/examples/knx-linux-coupler/CMakeLists.txt index 7d35ad2..e61549d 100644 --- a/examples/knx-linux-coupler/CMakeLists.txt +++ b/examples/knx-linux-coupler/CMakeLists.txt @@ -134,4 +134,3 @@ include_directories(../../src) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wno-unknown-pragmas -g -O0") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wno-unknown-pragmas -g -O0") set_property(TARGET knx-linux PROPERTY CXX_STANDARD 11) -add_definitions(-DMEDIUM_TYPE=5) diff --git a/examples/knx-linux-coupler/main.cpp b/examples/knx-linux-coupler/main.cpp index 66b4373..750ebef 100644 --- a/examples/knx-linux-coupler/main.cpp +++ b/examples/knx-linux-coupler/main.cpp @@ -30,13 +30,9 @@ bool isSendHidReportPossible() { return false; } -#if MEDIUM_TYPE == 5 + KnxFacade knx; -#elif MEDIUM_TYPE == 2 -KnxFacade knx; -#else -#error Only MEDIUM_TYPE IP and RF supported -#endif +//KnxFacade knx; void appLoop() { diff --git a/examples/knx-linux/CMakeLists.txt b/examples/knx-linux/CMakeLists.txt index db8f902..f7a39d6 100644 --- a/examples/knx-linux/CMakeLists.txt +++ b/examples/knx-linux/CMakeLists.txt @@ -134,4 +134,4 @@ include_directories(../../src) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wno-unknown-pragmas -g -O0") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wno-unknown-pragmas -g -O0") set_property(TARGET knx-linux PROPERTY CXX_STANDARD 11) -add_definitions(-DMEDIUM_TYPE=5) + diff --git a/src/knx/config.h b/src/knx/config.h index 1b03cd0..5c4771b 100644 --- a/src/knx/config.h +++ b/src/knx/config.h @@ -12,7 +12,17 @@ #define GPIO_GDO0_PIN 24 // GPIO 24 (GPIO_GEN5) -> WiringPi: 5 -> Pin number on header: 18 #endif -//#define MEDIUM_TYPE 2 +// Normal devices +#define MASK_VERSION 0x07B0 +//#define MASK_VERSION 0x02B0 +//#define MASK_VERSION 0x05B0 + +// Couplers +// 0x091A: IP/TP1 +// 0x29B0: TP1/RF +//#define MASK_VERSION 0x091A +//#define MASK_VERSION 0x29B0 + #define USE_RF #define USE_TP #define USE_IP diff --git a/src/knx/data_link_layer.cpp b/src/knx/data_link_layer.cpp index 6ab3b10..6bb2559 100644 --- a/src/knx/data_link_layer.cpp +++ b/src/knx/data_link_layer.cpp @@ -128,12 +128,7 @@ bool DataLinkLayer::sendTelegram(NPDU & npdu, AckType ack, uint16_t destinationA frame.addressType(addrType); frame.priority(priority); frame.repetition(RepititionAllowed); -#if (MEDIUM_TYPE == 5)||(MEDIUM_TYPE == 0) - // Make sure to always send as normal Broadcast on closed media (TP and IP) - frame.systemBroadcast(Broadcast); -#else frame.systemBroadcast(systemBroadcast); -#endif if (npdu.octetCount() <= 15) frame.frameType(StandardFrame); diff --git a/src/knx_facade.cpp b/src/knx_facade.cpp index a26089c..6f4c5fa 100644 --- a/src/knx_facade.cpp +++ b/src/knx_facade.cpp @@ -4,37 +4,38 @@ #ifdef ARDUINO_ARCH_SAMD // predefined global instance for TP or RF - #ifdef MEDIUM_TYPE - #if MEDIUM_TYPE == 0 - KnxFacade knx; - #elif MEDIUM_TYPE == 2 - KnxFacade knx; - #else - #error "Only TP and RF supported for Arduino SAMD platform!" - #endif + #if MASK_VERSION == 0x07B0 + KnxFacade knx; + #elif MASK_VERSION == 0x27B0 + KnxFacade knx; #else - #error "No medium type specified for platform Arduino_SAMD! Please set MEDIUM_TYPE! (TP:0, RF:2, IP:5)" + #error Mask version not supported on ARDUINO_ARCH_SAMD #endif + #elif ARDUINO_ARCH_ESP8266 // predefined global instance for IP only - KnxFacade knx; + #if MASK_VERSION == 0x07B0 + KnxFacade knx; + #else + #error Mask version not supported on ARDUINO_ARCH_ESP8266 + #endif + #elif ARDUINO_ARCH_ESP32 // predefined global instance for TP or IP - #ifdef MEDIUM_TYPE - #if MEDIUM_TYPE == 0 - KnxFacade knx; - #elif MEDIUM_TYPE == 5 - KnxFacade knx; - #else - #error "Only TP and IP supported for Arduino ESP32 platform!" - #endif - #else - // Compatibility + #if MASK_VERSION == 0x07B0 + KnxFacade knx; + #elif MASK_VERSION == 0x57B0 KnxFacade knx; - //#error "No medium type specified for platform Arduino ESP32! Please set MEDIUM_TYPE! (TP:0, RF:2, IP:5)" + #else + #error Mask version not supported on ARDUINO_ARCH_ESP8266 #endif + #elif ARDUINO_ARCH_STM32 - KnxFacade knx; + #if MASK_VERSION == 0x07B0 + KnxFacade knx; + #else + #error Mask version not supported on ARDUINO_ARCH_STM32 + #endif #elif __linux__ // no predefined global instance #endif diff --git a/src/knx_facade.h b/src/knx_facade.h index 6db2ae2..e905567 100644 --- a/src/knx_facade.h +++ b/src/knx_facade.h @@ -2,10 +2,6 @@ #include "knx/bits.h" #include "knx/config.h" -// Set default medium type to TP if no external definitions was given -#ifndef MEDIUM_TYPE -#define MEDIUM_TYPE 0 -#endif #ifdef ARDUINO_ARCH_SAMD #include "samd_platform.h" @@ -27,6 +23,7 @@ #include "linux_platform.h" #include "knx/bau57B0.h" #include "knx/bau27B0.h" + #include "knx/bau07B0.h" #include "knx/bau091A.h" #endif