diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 080e70d0..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - // See http://go.microsoft.com/fwlink/?LinkId=827846 - // for the documentation about the extensions.json format - "recommendations": [ - "platformio.platformio-ide" - ], - "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" - ] -} diff --git a/README.md b/README.md index 953cfa81..8f84371a 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,26 @@ # knx +This is a fork of the thelsing/knx stack from Thomas Kunze for and by the OpenKNX Team. + +While we did not remove support for any plattform, the testing focus is on RP2040 (main), ESP32 (experimental) and SAMD21(deprecated). + This projects provides a knx-device stack for arduino (ESP8266, ESP32, SAMD21, RP2040, STM32), CC1310 and linux. (more are quite easy to add) It implements most of System-B specification and can be configured with ETS. The necessary knxprod-files can be generated with the [Kaenx-Creator](https://github.com/OpenKNX/Kaenx-Creator) tool. -For ESP8266 and ESP32 [WifiManager](https://github.com/tzapu/WiFiManager) is used to configure wifi. - -Don't forget to reset ESP8266 manually (disconnect power) after flashing. The reboot doen't work during configuration with ETS otherwise. - -Generated documentation can be found [here](https://knx.readthedocs.io/en/latest/). - -## Stack configuration possibilities - -Specify prog button GPIO other then `GPIO0`: -```C++ -knx.buttonPin(3); // Use GPIO3 Pin -``` - -Specify a LED GPIO for programming mode other then the `LED_BUILTIN`: -```C++ -knx.ledPin(5); -``` - -Use a custom function instead of a LED connected to GPIO to indicate the programming mode: -```C++ -#include -#include -#include -// create a pixel strand with 1 pixel on PIN_NEOPIXEL -Adafruit_NeoPixel pixels(1, PIN_NEOPIXEL); - -void progLedOff() -{ - pixels.clear(); - pixels.show(); -} - -void progLedOn() -{ - pixels.setPixelColor(0, pixels.Color(20, 0, 0)); - pixels.show(); -} - -void main () -{ - knx.setProgLedOffCallback(progLedOff); - knx.setProgLedOnCallback(progLedOn); - [...] -} -``` - -More configuration options can be found in the examples. + +## Usage +See the examples for basic usage options + + +## Changelog + +### V2.1.0 - 2024-07-03 +- complete rework of the TPUart DataLinkLayer with support interrupt-based handling and optimized queue handling +- added DMA support for RP2040 platform +- fix some issues with continous integration causing github actions to fail +- added rp2040 plattform to knx-demo example +- added bool GroupObject::valueCompare method for only sending the value when it has changed + +### V2.0.0 - 2024-02-13 +- first OpenKNX version \ No newline at end of file diff --git a/library.json b/library.json new file mode 100644 index 00000000..a8ff4f3d --- /dev/null +++ b/library.json @@ -0,0 +1,23 @@ +{ + "name": "knx", + "version": "2.1.0", + "dependencies": { + }, + "description": "knx stack", + "homepage": "https://openknx.de", + "authors": [ + { + "name": "Thomas Kunze" + }, + { + "name": "OpenKNX", + "email": "info@openknx.de", + "url": "https://openknx.de", + "maintainer": true + } + ], + "repository": { + "type": "git", + "url": "https://github.com/OpenKNX/knx" + } +} \ No newline at end of file diff --git a/library.properties b/library.properties index 980e8ea7..8a6dcf82 100644 --- a/library.properties +++ b/library.properties @@ -1,6 +1,6 @@ name=knx -version=2.0.0 -author=Thomas Kunze et al. +version=2.1.0 +author=Thomas Kunze, the OpenKNX Team, et. al. maintainer=OpenKNX Team sentence=knx stack paragraph= diff --git a/src/knx_facade.h b/src/knx_facade.h index 84c7feaa..0e556672 100644 --- a/src/knx_facade.h +++ b/src/knx_facade.h @@ -270,10 +270,10 @@ template class KnxFacade : private SaveRestore pinMode(ledPin(), OUTPUT); progLedOff(); - pinMode(buttonPin(), INPUT_PULLUP); - + if (_progButtonISRFuncPtr && _buttonPin >= 0) { + pinMode(buttonPin(), INPUT_PULLUP); // Workaround for https://github.com/arduino/ArduinoCore-samd/issues/587 #if (ARDUINO_API_VERSION >= 10200) attachInterrupt(_buttonPin, _progButtonISRFuncPtr, (PinStatus)CHANGE);