ecal.yaml#
eCAL has many options that can be configured via an .yaml file which is located at:
Windows:
%localappdata%\eCAL\ecal.yamlUbuntu:
/etc/ecal/ecal.yaml
Loading strategy (Priority)#
The eCAL configuration file is loaded based on the following priorities, whereever it is found first.
If you want a specific eCAL Node to run with another ecal.yaml than the others, you can set the ECAL_DATA variable before starting the process, e.g. from a batch or shell skript.
Also, if you place a ecal.yaml in the working directory of the process, it will be loaded if ECAL_DATA is not specified first.
In order to create the eCAL configuration files in the marked (*) directories, you can use the ecal_generate_config tool, which is part of the eCAL installation.
It will generate the files in the first of the marked directories that is writable.
Important
This loading strategy is valid for eCAL 6.0 and up.
Windows:
%ECAL_DATA%\ecal.yaml%cd%\ecal.yaml%localappdata%\eCAL\ecal.yaml*%ProgramData%\eCAL\ecal.yaml* (fallback)
Ubuntu:
$ECAL_DATA/ecal.yaml$PWD/ecal.yaml$HOME/.ecal/ecal.yaml*/etc/ecal/ecal.yaml(fallback)
Note
When compiling eCAL from source:
In previous versions (before eCAL 6.0.0), you could set CMAKE_INSTALL_SYSCONFDIR to change the default configuration path and the applications could still find it on Linux.
This is not the case anymore.
Instead, when installing your build to a custom path, a directory next to lib named etc will be created containing the ecal.yaml file if no CMAKE_INSTALL_SYSCONFDIR is set.
That file in etc relativ to the ecal_core library will be used if no other is found.
ecal.yaml options#
Here you can find the current ecal.yaml options with description and default values. You can download the file here or generate it with the ecal_generate_config tool.
-
1# _____ _ _ ____ _ _ 2# | ____|___| (_)_ __ ___ ___ ___ / ___| / \ | | 3# | _| / __| | | '_ \/ __|/ _ \ _____ / _ \ | / _ \ | | 4# | |__| (__| | | |_) \__ \ __/ |_____| | __/ |___ / ___ \| |___ 5# |_____\___|_|_| .__/|___/\___| \___|\____/_/ \_\_____| 6# |_| 7# _ _ _ __ _ _ _ 8# __ _| | ___ | |__ __ _| | ___ ___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __ 9# / _` | |/ _ \| '_ \ / _` | | / __/ _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \ 10# | (_| | | (_) | |_) | (_| | | | (_| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | | 11# \__, |_|\___/|_.__/ \__,_|_| \___\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_| 12# |___/ |___/ 13 14 15# Operation configuration 16# eCAL components communication mode ("local" or "network"): 17# "local": local host only communication (default) 18# "network": communication across network boundaries 19communication_mode: "local" 20 21 22# Registration layer configuration 23registration: 24 # Topic registration refresh cylce (has to be smaller then registration timeout! Default: 1000) 25 registration_refresh: 1000 26 # Timeout for topic registration in ms (internal, Default: 60000) 27 registration_timeout: 10000 28 # Enable to receive registration information on the same local machine 29 loopback: true 30 # SHM transport domain that enables interprocess mechanisms across (virtual) 31 # host borders (e.g, Docker); by default equivalent to local host name 32 shm_transport_domain: "" 33 34 local: 35 # Specify the transport type for local registration 36 # "shm": shared memory based registration 37 # "udp": udp based registration (default) 38 transport_type: "udp" 39 shm: 40 # Domain name for shared memory based registration 41 domain: "ecal_mon" 42 # Queue size of registration events 43 queue_size: 1024 44 udp: 45 # Specify port for local registration traffic 46 port: 14000 47 48 network: 49 # Specify the transport type for network registration 50 # "udp": udp based registration (default) 51 transport_type: "udp" 52 udp: 53 # Specify port for network registration traffic 54 port: 14000 55 56 57# Transport layer configuration 58transport_layer: 59 udp: 60 # UDP configuration version (Since eCAL 5.12.) 61 # v1: default behavior 62 # v2: new behavior, comes with a bit more intuitive handling regarding masking of the groups 63 config_version: "v2" 64 # Multicast port number 65 port: 14002 66 # v1: Mask maximum number of dynamic multicast group (range 0.0.0.1-0.0.0.255) 67 # v2: Masks are now considered like routes masking (range 255.0.0.0-255.255.255.255) 68 mask: "255.255.255.240" 69 # Send buffer in bytes 70 send_buffer: 5242880 71 # Receive buffer in bytes 72 receive_buffer: 5242880 73 # Maximum UDP datagram size in bytes 74 # Default: 65507 = 64 KiB - 20 (IPv4 header) - 8 (UDP header) - 1 75 # This is the maximum payload size for a single UDP datagram imposed by IPv4. 76 max_datagram_size: 65507 77 # Linux specific setting to join all network interfaces independend of their link state. 78 # Enabling ensures that eCAL processes receive data when they are started before the 79 # network devices are up and running. 80 join_all_interfaces: false 81 # Windows specific setting to enable receiving UDP traffic with the Npcap based receiver 82 npcap_enabled: false 83 84 # Local mode multicast group and ttl 85 local: 86 # Multicast group base. All registration and logging is sent on this address 87 group: "127.255.255.255" 88 # TTL (hop limit) is used to determine the amount of routers being traversed towards the destination 89 ttl: 1 90 91 network: 92 # Multicast group base. All registration and logging is sent on this address 93 group: "239.0.0.1" 94 # TTL (hop limit) is used to determine the amount of routers being traversed towards the destination 95 ttl: 3 96 97 tcp: 98 # Reader amount of threads that shall execute workload 99 number_executor_reader: 4 100 # Writer amount of threads that shall execute workload 101 number_executor_writer: 4 102 # Reconnection attemps the session will try to reconnect in case of an issue 103 max_reconnections: 5 104 105 106# Publisher specific base settings 107publisher: 108 layer: 109 # Base configuration for shared memory publisher 110 shm: 111 # Enable layer 112 enable: true 113 # Enable zero copy shared memory transport mode 114 zero_copy_mode: false 115 # Force connected subscribers to send acknowledge event after processing the message. 116 # The publisher send call is blocked on this event with this timeout (0 == no handshake). 117 acknowledge_timeout_ms: 0 118 # Maximum number of used buffers (needs to be greater than 1, default = 1) 119 memfile_buffer_count: 1 120 # Default memory file size for new publisher 121 memfile_min_size_bytes: 4096 122 # Dynamic file size reserve before recreating memory file if topic size changes 123 memfile_reserve_percent: 50 124 125 # Base configuration for UDP publisher 126 udp: 127 # Enable layer 128 enable: true 129 130 # Base configuration for TCP publisher 131 tcp: 132 # Enable layer 133 enable: true 134 135 # Priority list for layer usage in local mode (Default: SHM > UDP > TCP) 136 priority_local: ["shm", "udp", "tcp"] 137 # Priority list for layer usage in cloud mode (Default: UDP > TCP) 138 priority_network: ["udp", "tcp"] 139 140 141# Subscriber specific base configuration 142subscriber: 143 layer: 144 # Base configuration for shared memory subscriber 145 shm: 146 # Enable layer 147 enable: true 148 149 # Base configuration for UDP subscriber 150 udp: 151 # Enabler layer 152 enable: true 153 154 # Base configuration for TCP subscriber 155 tcp: 156 # Enable layer 157 enable: false 158 159 # Enable dropping of payload messages that arrive out of order 160 drop_out_of_order_messages: true 161 162 163# Time configuration 164time: 165 # Time synchronisation interface name (dynamic library) 166 # The name will be extended with platform suffix (32|64), debug suffix (d) and platform extension (.dll|.so) 167 # Available modules are: 168 # - ecaltime-localtime local system time without synchronization 169 # - ecaltime-linuxptp For PTP / gPTP synchronization over ethernet on Linux 170 # (device configuration in ecaltime.ini) 171 rt: "ecaltime-localtime" 172 # Specify the module name for replaying 173 replay: "" 174 175 176# eCAL Application Configuration 177application: 178 # Configuration for eCAL Sys 179 sys: 180 # Apps blacklist to be excluded when importing tasks from cloud 181 filter_excl: "^eCALSysClient$|^eCALSysGUI$|^eCALSys$" 182 # Process specific configuration 183 terminal: 184 # Linux only command for starting applications with an external terminal emulator. 185 # e.g. /usr/bin/x-terminal-emulator -e 186 # /usr/bin/gnome-terminal -x 187 # /usr/bin/xterm -e 188 # If empty, the command will be ignored. 189 emulator: "" 190 191 192# Logging configuration 193logging: 194 # Configuration for file, udp and console log provider 195 # Possible levels are: "info", "warning", "error", "fatal", "debug1", "debug2", "debug3", "debug4" 196 # Can be combined like 197 # log_level: ["warning", "fatal", "debug1", ...] 198 provider: 199 # Console logging configuration 200 console: 201 # Enable console logging 202 enable: true 203 # Log level for console output 204 log_level: ["info", "warning", "error", "fatal"] 205 # File logging configuration 206 file: 207 # Enable file logging 208 enable: false 209 # Log level for file output 210 log_level: [] 211 # UDP logging configuration 212 udp: 213 # Enable UDP logging 214 enable: true 215 # Log level for UDP output 216 log_level: ["info", "warning", "error", "fatal"] 217 # File specific configuration 218 file_config: 219 # Log file path 220 path: "" 221 # UDP specific configuration 222 udp_config: 223 # UDP Port for sending logging data 224 port: 14001 225 # Configuration for udp log receiver 226 receiver: 227 # Enable log receiving (UDP only) 228 enable: false 229 # UDP specific configuration 230 udp_config: 231 # UDP Port for sending logging data 232 port: 14001