mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	* 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
		
			
				
	
	
		
			248 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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"
 |