mirror of
https://github.com/thelsing/knx.git
synced 2025-06-17 01:17:18 +02:00
It includes also some optimizations for KNX-IP in general. Squashed commit of the following: commit 14bf9bef25ccc2c9bddefe7c8f1e0f6b1d63b3bc Author: Ing-Dom <dom@ing-dom.de> Date: Sun Dec 24 10:17:05 2023 +0100 clean up, remove KNX_LOG_IP commit 57223e46e414010662772989c2520cf1960ed268 Merge: 2911448a870dd8
Author: Ing-Dom <dom@ing-dom.de> Date: Sun Dec 24 10:10:19 2023 +0100 Merge remote-tracking branch 'remotes/origin/master' into rp2040_ip commit 2911448d22a454aacae472762677381acce6a159 Merge: 8ac6aec3c29d16
Author: Dom <dom@ing-dom.de> Date: Wed Dec 20 10:04:32 2023 +0100 Merge pull request #13 from OpenKNX/fix_serialnumber Fix serialnumber commit 8ac6aeccce20a9e5e1bbf5300008a72383f7ee71 Author: Ing-Dom <dom@ing-dom.de> Date: Thu Dec 14 12:28:02 2023 +0100 fix macAddress reading for Wifi commit 9db2cd58708e9d7bbfd485ada2ff38c829447c42 Author: Ing-Dom <dom@ing-dom.de> Date: Tue Dec 12 13:08:53 2023 +0100 remove LARGE_BUFFERS and clean up header files of ETHERNET_GENERIC commit 2f229ae90c6f72e01c2a9b9efe134f75fc85547c Author: Ing-Dom <dom@ing-dom.de> Date: Tue Dec 12 00:56:32 2023 +0100 temporary fix, solution needed for tunneling commit f6e7e619a454f43db10e644b41c58b43a1a2b453 Author: Ing-Dom <dom@ing-dom.de> Date: Mon Dec 11 13:54:26 2023 +0100 unified approach for different ip stacks with rp2040 plattform commit 4723edab84986bca6d31ea7b3083b1b7b8ef907e Author: Marco Scholl <develop@marco-scholl.de> Date: Mon Dec 11 08:34:25 2023 +0100 wip commit 5bf3e615c8649dd9c34be7b1fe6ad4062ce96c34 Author: Ing-Dom <dom@ing-dom.de> Date: Thu Dec 7 14:53:42 2023 +0100 ip and not ip in one rp2040 plattform commit aaca34a237686c5389888b7bd040b860331bdbff Merge: fd97f59d44606d
Author: Dom <dom@ing-dom.de> Date: Wed Dec 6 15:30:17 2023 +0100 Merge branch 'thelsing:master' into rp2040_lwip commit fd97f5920ef486ca955f5425cbcaec062e3ef977 Author: Marco Scholl <develop@marco-scholl.de> Date: Thu Nov 30 23:19:13 2023 +0100 dd sime ifdef to allow build without ip interface commit c665a79db9cee7063dd77a155108633db81ef8e8 Author: Ing-Dom <dom@ing-dom.de> Date: Tue Nov 14 10:03:48 2023 +0100 stub for handling SearchRequestExt to prevent console messages commit 50745be66681616681f67d7bdf17008f5d19640d Author: Ing-Dom <dom@ing-dom.de> Date: Tue Nov 14 00:02:49 2023 +0100 adding ip support for rp2040 plattform
106 lines
3.9 KiB
C++
106 lines
3.9 KiB
C++
#include "knx_facade.h"
|
|
|
|
#include "knx/bits.h"
|
|
|
|
#ifndef KNX_NO_AUTOMATIC_GLOBAL_INSTANCE
|
|
|
|
#if (defined(ARDUINO_ARCH_STM32) || \
|
|
defined(ARDUINO_ARCH_ESP32) || \
|
|
defined(ARDUINO_ARCH_ESP8266) || \
|
|
defined(ARDUINO_ARCH_SAMD) || \
|
|
defined(ARDUINO_ARCH_RP2040))
|
|
|
|
// Only ESP8266 and ESP32 have this define. For all other platforms this is just empty.
|
|
#ifndef ICACHE_RAM_ATTR
|
|
#define ICACHE_RAM_ATTR
|
|
#endif
|
|
|
|
#ifndef PROG_BTN_PRESS_MIN_MILLIS
|
|
#define PROG_BTN_PRESS_MIN_MILLIS 50
|
|
#endif
|
|
|
|
#ifndef PROG_BTN_PRESS_MAX_MILLIS
|
|
#define PROG_BTN_PRESS_MAX_MILLIS 500
|
|
#endif
|
|
|
|
|
|
ICACHE_RAM_ATTR void buttonEvent()
|
|
{
|
|
static uint32_t lastEvent=0;
|
|
static uint32_t lastPressed=0;
|
|
|
|
uint32_t diff = millis() - lastEvent;
|
|
if (diff >= PROG_BTN_PRESS_MIN_MILLIS && diff <= PROG_BTN_PRESS_MAX_MILLIS){
|
|
if (millis() - lastPressed > 200)
|
|
{
|
|
knx.toggleProgMode();
|
|
lastPressed = millis();
|
|
}
|
|
}
|
|
lastEvent = millis();
|
|
}
|
|
#endif
|
|
|
|
#ifdef ARDUINO_ARCH_SAMD
|
|
// predefined global instance for TP or RF or TP/RF coupler
|
|
#if MASK_VERSION == 0x07B0
|
|
KnxFacade<SamdPlatform, Bau07B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x27B0
|
|
KnxFacade<SamdPlatform, Bau27B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x2920
|
|
KnxFacade<SamdPlatform, Bau2920> knx(buttonEvent);
|
|
#else
|
|
#error "Mask version not supported on ARDUINO_ARCH_SAMD"
|
|
#endif
|
|
#elif defined(ARDUINO_ARCH_RP2040)
|
|
// predefined global instance for TP or RF or IP or TP/RF coupler or TP/IP coupler
|
|
#if MASK_VERSION == 0x07B0
|
|
KnxFacade<RP2040ArduinoPlatform, Bau07B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x27B0
|
|
KnxFacade<RP2040ArduinoPlatform, Bau27B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x57B0
|
|
KnxFacade<RP2040ArduinoPlatform, Bau57B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x2920
|
|
KnxFacade<RP2040ArduinoPlatform, Bau2920> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x091A
|
|
KnxFacade<RP2040ArduinoPlatform, Bau091A> knx(buttonEvent);
|
|
#else
|
|
#error "Mask version not supported on ARDUINO_ARCH_RP2040"
|
|
#endif
|
|
|
|
#elif defined(ARDUINO_ARCH_ESP8266)
|
|
// predefined global instance for TP or IP or TP/IP coupler
|
|
#if MASK_VERSION == 0x07B0
|
|
KnxFacade<EspPlatform, Bau07B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x57B0
|
|
KnxFacade<EspPlatform, Bau57B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x091A
|
|
KnxFacade<EspPlatform, Bau091A> knx(buttonEvent);
|
|
#else
|
|
#error "Mask version not supported on ARDUINO_ARCH_ESP8266"
|
|
#endif
|
|
|
|
#elif defined(ARDUINO_ARCH_ESP32)
|
|
// predefined global instance for TP or IP or TP/IP coupler
|
|
#if MASK_VERSION == 0x07B0
|
|
KnxFacade<Esp32Platform, Bau07B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x57B0
|
|
KnxFacade<Esp32Platform, Bau57B0> knx(buttonEvent);
|
|
#elif MASK_VERSION == 0x091A
|
|
KnxFacade<Esp32Platform, Bau091A> knx(buttonEvent);
|
|
#else
|
|
#error "Mask version not supported on ARDUINO_ARCH_ESP32"
|
|
#endif
|
|
|
|
#elif defined(ARDUINO_ARCH_STM32)
|
|
#if MASK_VERSION == 0x07B0
|
|
KnxFacade<Stm32Platform, Bau07B0> knx(buttonEvent);
|
|
#else
|
|
#error "Mask version not supported on ARDUINO_ARCH_STM32"
|
|
#endif
|
|
#else // Non-Arduino platforms and Linux platform
|
|
// no predefined global instance
|
|
#endif
|
|
|
|
#endif // KNX_NO_AUTOMATIC_GLOBAL_INSTANCE
|