knx/src/knx.h
nanosonde d90843ba45
Add support for CC1310 platform based on SimpleLink SDK (#94)
* Initial commit

* Clean up

* Remove display code

* Change cmake build

* Add SimpleLink SDK for CC13xx/CC26xx as submodule

* Remove commented line from build.sh

* Working build

* Remove SDK submodule

* Squashed 'examples/knx-cc1310/coresdk_cc13xx_cc26xx/' content from commit 0d78d32

git-subtree-dir: examples/knx-cc1310/coresdk_cc13xx_cc26xx
git-subtree-split: 0d78d3280357416a5c0388148cda13717c9ffaa5

* Add more comments and enable Power_idleFunc() for NoRTOS variant.
Internal SDK driver functions which have to wait for something
will cause Power_idleFunc to be called instead of doing busy wait.

* Move CC1310 platform init around

* Optimize a bit more in debug build config as the binary does not fit into 128Kb flash otherwise.

* Explicitly list each source/header file in build config. Use linker group to resolve circular dependencies.

* Ignore vscode settings.json

* Increase stacks size

* Only compile CC1310 source code if #define DeviceFamily_CC13X0

* initial commit of CC1310 RF driver with first working RX version

* Better handling of buttonUp() across platforms

* Start cleanup

* continue cleanup

* Fix bau2920 compilation

* Continue cleanup

* Fix compilation in other examples

* Fix compilation

* htons() and ntohs() only for SAMD and STM32, but not for Linux and ESP8266 and ESP32

* htons(9 and ntohs() needed for CC13x0

* Continue cleanup

* Add CC1310 platform to CI

* Fix CI

* Use more recent toolchain from ARM

* Fix travis

* Use Ubuntu Focal

* Fix toolchain for travis

* Fix package name

* Fix toolchain

* Add libstdc++-dev package

* Add newlib packages

* Remove commented commands from CI

* Fix travis

* Fix compilation of knxPython

* Clean up linefeeds

* Fix RX callback

* Move RF CRC16-DNP to bits.cpp

* Fix TX

* Optimization: do not calc CRC for block1 again in rf_data_link_layer

* Make newline optional in printHex

* Cleanup. First working version: ETS5 programming of individual address via KNX/RF coupler.

* Use LEDs and Buttons to control ProgMode and Flash Erase

* Remove settings.json (VScode)

* Add README.md

* Update README.md

* Update README.md

* Fix typo
2020-11-10 21:52:38 +01:00

248 lines
7.7 KiB
C++

#pragma once
/** \page Classdiagramm KNX device
* This diagramm shows the most important classes of a normal KNX device.
@startuml
skinparam monochrome true
skinparam componentStyle uml2
note top of knx
Class diagram for a
<b><color:royalBlue>normal KNX device</color>
end note
package "knx" {
class BusAccessUnit [[class_bus_access_unit.html]]
class DeviceObject [[class_device_object.html]]
class BauSystemBDevice [[class_bau_system_b.html]]
BusAccessUnit<|--BauSystemB
BauSystemB<|--BauSystemBDevice
class ApplicationProgramObject [[class_application_program_object.html]]
BauSystemB*--ApplicationProgramObject
DeviceObject--*BauSystemB
class AddressTableObject [[class_address_table_object.html]]
BauSystemBDevice*--AddressTableObject
class AssociationTableObject [[class_association_table_object.html]]
BauSystemBDevice*--AssociationTableObject
class GroupObjectTableObject [[class_group_object_table_object.html]]
BauSystemBDevice*--GroupObjectTableObject
class GroupObject [[class_group_object.html]]
GroupObject<--GroupObjectTableObject
GroupObjectTableObject<--GroupObject
class ApplicationLayer [[class_application_layer.html]]
package knx-data-secure
{
class SecureApplicationLayer [[class_secure_application_layer.html]]
class SecurityInterfaceObject [[class_security_interface_object.html]]
SecureApplicationLayer-->SecurityInterfaceObject
SecurityInterfaceObject-->SecureApplicationLayer
BauSystemBDevice*--"SecurityInterfaceObject"
BauSystemBDevice*--"SecureApplicationLayer"
}
BauSystemBDevice*--"ApplicationLayer"
ApplicationLayer<|--SecureApplicationLayer
SecureApplicationLayer--*BauSystemBDevice
class TransportLayer [[class_transport_layer.html]]
TransportLayer--*BauSystemBDevice
class NetworkLayerDevice [[class_network_layer.html]]
NetworkLayerDevice--*BauSystemBDevice
class NetworkLayerEntity [[class_network_layer_entity.html]]
NetworkLayerEntity--*NetworkLayerDevice
class DataLinkLayer [[class_data_link_layer.html]]
ApplicationLayer-->SecureApplicationLayer
SecureApplicationLayer-->ApplicationLayer
ApplicationLayer-->BusAccessUnit
ApplicationLayer-->TransportLayer
SecureApplicationLayer-->TransportLayer
TransportLayer-->ApplicationLayer
TransportLayer-->SecureApplicationLayer
TransportLayer-->NetworkLayerDevice
NetworkLayerDevice-->TransportLayer
NetworkLayerEntity-->DataLinkLayer
DataLinkLayer-->NetworkLayerEntity
TransportLayer-->AddressTableObject
SecureApplicationLayer-->AddressTableObject
SecureApplicationLayer-->DeviceObject
DataLinkLayer-->DeviceObject
ApplicationLayer-->AssociationTableObject
class Dpt [[class_dpt.html]]
GroupObject->Dpt
package knx-ip
{
class IpDataLinkLayer [[class_ip_data_link_layer.html]]
IpDataLinkLayer--|>DataLinkLayer
class Bau57B0 [[class_bau57_b0.html]]
Bau57B0--|>BauSystemBDevice
Bau57B0*--IpDataLinkLayer
class IpParameterObject [[class_ip_parameter_object.html]]
IpParameterObject-->DeviceObject
Bau57B0*--IpParameterObject
IpDataLinkLayer-->IpParameterObject
}
package knx-tp
{
class TpUartDataLinkLayer [[class_tp_uart_data_link_layer.html]]
TpUartDataLinkLayer--|>DataLinkLayer
class Bau07B0 [[class_bau07_b0.html]]
Bau07B0*--TpUartDataLinkLayer
Bau07B0--|>BauSystemBDevice
}
package knx-rf
{
class RfDataLinkLayer [[class_rf_data_link_layer.html]]
RfDataLinkLayer--|>DataLinkLayer
class Bau27B0 [[class_bau27_b0.html]]
Bau27B0*--"RfDataLinkLayer"
Bau27B0--|>BauSystemBDevice
class RfMediumObject [[class_rf_medium_object.html]]
Bau27B0*--"RfMediumObject"
class RfPhysicalLayer [[class_rf_physical_layer.html]]
"RfDataLinkLayer"*--"RfPhysicalLayer"
}
package knx-cemi-server
{
class CemiServer [[class_cemi_server.html]]
class CemiServerObject [[class_cemi_server_object.html]]
class UsbTunnelInterface [[class_usb_tunnel_inerface.html]]
CemiServer*--"UsbTunnelInterface"
Bau57B0*--"CemiServer"
Bau57B0*--"CemiServerObject"
Bau27B0*--"CemiServer"
Bau27B0*--"CemiServerObject"
Bau07B0*--"CemiServer"
Bau07B0*--"CemiServerObject"
}
CemiServer-->DataLinkLayer
DataLinkLayer-->CemiServer
}
package platform
{
class Platform [[class_platform.html]]
class ArduinoPlatform [[class_arduino_platform.html]]
class SamdPlatform [[class_samd_platform.html]]
Platform<|--ArduinoPlatform
ArduinoPlatform<|--SamdPlatform
class EspPlatform [[class_esp_platform.html]]
ArduinoPlatform<|--EspPlatform
class Esp32Platform [[class_esp32_platform.html]]
ArduinoPlatform<|--Esp32Platform
class Stm32Platform [[class_stm32_platform.html]]
ArduinoPlatform<|--Stm32Platform
class LinuxPlatform [[class_linux_platform.html]]
LinuxPlatform--|>Platform
}
package frontend
{
class KnxFacade [[class_knx_facade.html]]
BauSystemBDevice<--KnxFacade
}
knx-->Platform
@enduml
* \page Classdiagramm KNX coupler
* This diagramm shows the most important classes of a KNX coupler.
@startuml
skinparam monochrome true
skinparam componentStyle uml2
note top of knx
Class diagram for a
<b><color:royalBlue>KNX coupler</color>
end note
package "knx" {
class BusAccessUnit [[class_bus_access_unit.html]]
class DeviceObject [[class_device_object.html]]
class BauSystemBCoupler [[class_bau_system_b.html]]
BusAccessUnit<|--BauSystemB
BauSystemB<|--BauSystemBCoupler
class ApplicationProgramObject [[class_application_program_object.html]]
BauSystemB*--ApplicationProgramObject
DeviceObject--*BauSystemB
class ApplicationLayer [[class_application_layer.html]]
package knx-data-secure
{
class SecureApplicationLayer [[class_secure_application_layer.html]]
class SecurityInterfaceObject [[class_security_interface_object.html]]
SecureApplicationLayer-->SecurityInterfaceObject
SecurityInterfaceObject-->SecureApplicationLayer
BauSystemBCoupler*--"SecurityInterfaceObject"
BauSystemBCoupler*--"SecureApplicationLayer"
}
BauSystemBCoupler*--"ApplicationLayer"
ApplicationLayer<|--SecureApplicationLayer
SecureApplicationLayer--*BauSystemBCoupler
class TransportLayer [[class_transport_layer.html]]
TransportLayer--*BauSystemBCoupler
class NetworkLayerEntity [[class_network_layer_entity.html]]
class NetworkLayerCoupler [[class_network_layer.html]]
{
NetworkLayerEntity[] _networkLayerEntities
}
NetworkLayerCoupler*--"NetworkLayerEntity"
NetworkLayerCoupler--*BauSystemBCoupler
class DataLinkLayer [[class_data_link_layer.html]]
ApplicationLayer-->SecureApplicationLayer
SecureApplicationLayer-->ApplicationLayer
ApplicationLayer-->BusAccessUnit
ApplicationLayer-->TransportLayer
SecureApplicationLayer-->TransportLayer
TransportLayer-->ApplicationLayer
TransportLayer-->SecureApplicationLayer
TransportLayer-->NetworkLayerCoupler
NetworkLayerCoupler-->TransportLayer
NetworkLayerEntity-->DataLinkLayer
DataLinkLayer-->NetworkLayerEntity
SecureApplicationLayer-->DeviceObject
DataLinkLayer-->DeviceObject
package knx-ip-tp
{
class IpDataLinkLayer [[class_ip_data_link_layer.html]]
IpDataLinkLayer--|>DataLinkLayer
class TpUartDataLinkLayer [[class_tp_uart_data_link_layer.html]]
TpUartDataLinkLayer--|>DataLinkLayer
class Bau091A [[class_bau09_1a.html]]
Bau091A--|>BauSystemBCoupler
Bau091A*--IpDataLinkLayer
Bau091A*--TpUartDataLinkLayer
class RouterObject [[class_router_object.html]]
class IpParameterObject [[class_ip_parameter_object.html]]
IpParameterObject-->DeviceObject
Bau091A*--"RouterObject"
Bau091A*--IpParameterObject
IpDataLinkLayer-->IpParameterObject
}
}
package platform
{
class Platform [[class_platform.html]]
class ArduinoPlatform [[class_arduino_platform.html]]
class SamdPlatform [[class_samd_platform.html]]
Platform<|--ArduinoPlatform
ArduinoPlatform<|--SamdPlatform
class EspPlatform [[class_esp_platform.html]]
ArduinoPlatform<|--EspPlatform
class Esp32Platform [[class_esp32_platform.html]]
ArduinoPlatform<|--Esp32Platform
class Stm32Platform [[class_stm32_platform.html]]
ArduinoPlatform<|--Stm32Platform
class LinuxPlatform [[class_linux_platform.html]]
LinuxPlatform--|>Platform
}
package frontend
{
class KnxFacade [[class_knx_facade.html]]
BauSystemBCoupler<--KnxFacade
}
knx-->Platform
@enduml
*/
#include "knx_facade.h"