KNX cEMI Server 
===============

Implementation Notes
--------------------
* currently only implemented for KNX USB Data Interface (Tunnel) and not KNXnet/IP for now

* basically provides a complete KNX device (TP or RF) that also has a USB interface built-in which can be used to program either the local device stack or 
remote devices via the attached medium (TP or RF).
  * tested with ETS 5.7.x
  * tested with Net'N'Node
  * **Be careful when using this with TP as your HW setup might not have a galvanic isolation between the KNX bus and USB!**
    * An [USB isolator](https://www.olimex.com/Products/USB-Modules/USB-ISO/) might be the easiest option. Not tested!
    * ToDo: How is this realized in commercial KNX USB Data Interfaces?

* cEMI client address (e.g. ETS) is based on KNX physical address of the local device stack +1
  * Example: local device: 1.2.10 -> cEMI client address: 1.2.11
  * PropertyWrite commands to change the cEMI client address are only temporary until next device restart

* requires a USB stack which properly work with USB HID and provides interrupt IN/OUT endpoints for KNX HID reports.
  * normal Arduino USB device stack does NOT work as it is missing required functionality
  * TinyUSB stack is used instead, therefore the Adafruit SAMD core with TinyUSB enabled is used as the Arduino core

Development environment
-----------------------
* PlatformIO
* Segger J-Link EDU
* [GY-SAMD21 Board](https://eckstein-shop.de/GY-SAMD21-Mini-Breakout-fuer-Arduino), compatible to [Adafruit Feather M0](https://www.adafruit.com/product/2772)