* add commitNonVolatileMemory overload to batch write chars n times to flash
* changed uint8_t getEepromBuffer(uint16_t size) to uint8_t getEepromBuffer(uint32_t size) to allow eeprom > 65k
* reworked PR #230
* reimplemented binary search for translateAsap()
- new prepareBinarySearch() after association_table change
- fallback to linear search if ETS does not provide sorted ASAP entries
- activated with #define BIN_SEARCH
* added required comments to explain algorithm
Co-authored-by: Waldemar Porscha <wp@porscha.eu>
* #175
added a binary search for address and assoc table
can be enabled by defining USE_BINSEARCH
* Corrected BIN_SEARCH
* AddressTableObject::contains minimal improve
* Review: changed ntohs to htons
* corrected byte order during access to sorted array
Co-authored-by: SirSydom <com@sirsydom.de>
Co-authored-by: Waldemar Porscha <wp@porscha.eu>
* RP2040 EEPROM/Flash compiler flag fix
only check flash size if Flash is used, not EEPROM
* RP2040 EEPROM/Flash compiler flag fix
use EEPROM emulation as default to allow build of the knx-demo (memory.h defines EEPROM size 1024 which doesn't work with Flashsize 4k)
* Update rp2040_arduino_platform.h
* 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
* GD32 flash workaround
Addressing #181
At least some GD32 devices seem to require unlocking the flash twice. As the unlock function exits with `HAL_OK` if the flash is already unlocked, STM32 devices can run the same code without issues.
* Add H8I8O and H8C09 configurations to knx-demo
Addressing #181
These configurations both serve as examples for the use of these boards and other custom boards that don't use the standard pinout.
* Add STM32 unlock target
This copies the brute force unlock approach by @pavkriz into a custom target. With this commit, it is possible to automatically unlock e.g. a H8I8O board without leaving the PlatformIO IDE.
See #181
* Update stm32_platform.cpp
Addresses a side effect of https://github.com/thelsing/knx/pull/177, which causes the eeprom buffer to be overwritten every time getEepromBuffer is called. This prevented programming of STM32 boards as their initial bus address was lost before programming.
* progbutton fix
* Update stm32_platform.cpp
Addresses a side effect of https://github.com/thelsing/knx/pull/177, which causes the eeprom buffer to be overwritten every time getEepromBuffer is called. This prevented programming of STM32 boards as their initial bus address was lost before programming.
* Update knx_facade.h
Remove superfluous attribute _buttonPinInterruptOn
* Update knx_facade.h
attachInterrup on CHANGE for progbutton detection
* Update stm32_platform.cpp
Addresses a side effect of https://github.com/thelsing/knx/pull/177, which causes the eeprom buffer to be overwritten every time getEepromBuffer is called. This prevented programming of STM32 boards as their initial bus address was lost before programming.
* Code style fix
- happens just with large applications
- occured mainly on SAMD platform
- new crc16ccitt algorithm without additional buffer
- reorder groupObjTable in memory for less fragmentation
Co-authored-by: Waldemar Porscha <waldemar.porscha@sap.com>
* Fix#191 by initializing the platform pointer in all KnxFacade constructors
* Revert "Fix #191 by initializing the platform pointer in all KnxFacade constructors"
This reverts commit adc05cfaf7.
* Alternative fix for #191 by initializing the platform pointer in KnxFacade(&bau) from the platform stored in bau
* GroupObjects can communicate internally
- GroupObjects use callback infrastructure also during write to bus
- external and internal write of a GO can be handled identically
- needs #define INTERNAL_GROUPOBJECT
* FIX-Works now also if SMALL_GROUPOBJECT is not set
* Remove #ifdef INTERNAL_GROUPOBJECT
Co-authored-by: Waldemar Porscha <waldemar.porscha@sap.com>