Add coupler support (#79)

* save work.

* save work

* save work

* save work

* save work

* Remember which interface received the cemi frame

* save work

* save work

* save work

* Use default value from PID_ROUTING_COUNT

* Add simple alternative to std::function without smart pointers or move semantics

* Remove include

* Add more comments about cleanup

* save work

* Remove forgotten code.

* Move crc16Ccitt to bits.c as it also used for PID_MCB

* save work

* move comment

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* derive from TableObject instead of InterfaceObject

* save work

* save work

* Fix wrong pointer arithmetic in TableObject

* Filter table setting/clearing

* move comment

* save work

* save work

* save work

* handle SBC on closed media

* save work

* move coupler example to different dir

* Restore device example for linux

* save work

* Remove MEDIUM_TYPE and use MASK_VERSION

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* save work

* Replace MEDIUM_TYPE by MASK_VERSION

* Remove adafruit/travis-ci tests

* Disable travis ci cache for platformio

* Fix missing changes

* Fix cemi server and add missing MASK_VERSION definitions

* Enable platformio caching on travis ci again

* Handle device address update for routing decision

* source address is set in network layer and not in data link layer

* Add remaining APCI types that are used with system broadcast

* Add debug print for routing

* Remove simple_functional

* Fix CMakLists.txt

* Use MASK_VERSION to conditionally compile code.

* Remove fixed version reuqirement from platform esp8266

* Add demo-coupler for MCUs

* Remove simple_functional.h from demo knx-linux

* Enable CI for coupler demos

* Correct path for knx-linux-coupler

* Fix knx_facade.h

* Refactor NetworkLayer to use getInterface() for devices and getPrimaryInterface(), getSecondaryInterface() for couplers

* Add platformio configs for other currently possible mask/platform combinations

* Add class diagrams and remove obsolete includes

* Add some minimal docs
This commit is contained in:
nanosonde
2020-09-06 21:41:34 +02:00
committed by GitHub
parent 52d3866e41
commit 77a796a39c
83 changed files with 6406 additions and 946 deletions

17
doc/knx_coupler_notes.md Normal file
View File

@@ -0,0 +1,17 @@
KNX Coupler
===========
Implementation Notes
--------------------
* Add support for coupler model 1.x and coupler model 2.0 (only used for TP1/RF coupler so far)
* currently implemented mask versions: 091A (IP/TP1 coupler) and 2920 (TP1/RF coupler)
ToDo:
-----
* class NetworkLayerCoupler: add support for all ACK modes for medium TP1, currently ALL received frames are ACK'ed (mode 2).
* handle MasterReset according to spec. for router object
Development environment
-----------------------
* see linux coupler example

View File

@@ -0,0 +1,25 @@
KNX Data Secure
===============
Implementation Notes
--------------------
* Implementation based on application note AN158 v07 KNX Data Security
* AES-128 is implemented in software, no hardware acceleration used currently
* Secure device setup with ETS-5.7.x tested and working
* Secure group communication needs more testing
* Support for FDSK generation
* Support for P2P mode prepared
* No support for LTE-mode[T_Data_Tag_Group] (zone key table is already there) currently
* No support roles (and no plan to implement this in the near future)
ToDo:
-----
* Add support for AN192 v04 Coupler security extensions (a.k.a. Secure Proxy which translates between unsecured and secured devices)
* Handle S-A_Sync Service when initially the last valid sequence nummer is not known during runtime, i.e. group communication
* handle MasterReset according to spec. for security interface object
Development environment
-----------------------
* see linux example on how to generate the FDSK string which needs to be entered in the ETS
* use BAU57B0, but fake the mask by setting _deviceObj.maskVersion(0x07B0). This "emulates" a TP1 device which is reachable over an IP router
* To generate a KNX ETS product database with support for KNX Data Secure, use the latest version of the CreateKnxProd tool which supports schema version 20.