* added support for RP2040 (Raspberry Pi Pico)
* support DPT9.009 (airflow) and DPT9.029 (absolute humidity)
* adapted to work with the latest arduino-pico core V1.11.0
- setPollingMode for knxSerial
* Made the rx loop shorter to avoid tx buffer saturation.
* sendSingleFrameByte return false on last byte
* sendSingleFrameByte return false on last byte
* * fix for save/restore of userdata
* change declaration of restore() in knx_facade.h to "const uint8_t* restore(const uint8_t* buffer)" to avoid calling default implementation in save_restore.h
* change typedefs to separate SaveCallback and RestoreCallback
* fix BME60 example, knx.setRestoreCallback() needs to use const uint8_t* as well
* fix commitToEeprom for ESP32
* trigger dirty flag for ESP32 to make sure data is committed
* fixes to enable partial programming (thanks to mumpf and proggerKA at KNX-UF!)
* add PID_MCB_TABLE to TableObject
* add CallBackProperty to send PID_MCB_TABLE
* calculate crc checksum using Crc16Citt when state switches to LOAD_COMPLETED
* add crc to save(), restore() and saveSize() to save crc to flash
* add CallBackProperty for read and write of PID_PROG_VERSION to ApplicationProgramObject
* create overrides for save, restore, and saveSize in ApplicationProgramObject to save _programVersion to flash
* improve crc calculation
* removed TableObject::crc16Citt method and use the one in bits.h
* do not save crc in flash, instead calculate on-the-fly in CallbackProperty when state==LS_LOADED
* use DataProperty to store PID_PROG_VERSION
* WARNING: segmentSize calculation for crc calculation is currently not correct. Need to somehow access size of data in class that inherits from TableObject (e.g. ApplicationObject or RouterObject)
* fix segment size in TableObject()
* save size after TableObject::allocTable() is called. Also change save() and restore() to save _size to flash. Modify saveSize()
* use _size to calculate crc value in CallbackProperty
* reduce footprint, save 5 byte
* add comment why _size field is needed
* remove PID_MCB_TABLE from RouterObject
* this is now implemented in TableObject
* generate unique serial number (#90)
* see https://github.com/ricaun/ArduinoUniqueID
* calculated from ESP.getEfuseMac() on ESP32
* ESP.getChipId() on ESP8266
* SERIAL_NUMBER_WORD_0-3 on SAMD
* HAL_GetUIDw0-2() on STM32
* defaults to 0x01020304 on other platforms
* fix variable name for ESP platform
* another fix variable name for ESP platform (need more coffee...)