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