ecal.yaml#
eCAL has many options that can be configured via an .yaml file which is located at:
Windows:
%localappdata%\eCAL\ecal.yaml
Ubuntu:
/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)<ecal installation directory>\etc\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 # Linux specific setting to join all network interfaces independend of their link state. 74 # Enabling ensures that eCAL processes receive data when they are started before the 75 # network devices are up and running. 76 join_all_interfaces: false 77 # Windows specific setting to enable receiving UDP traffic with the Npcap based receiver 78 npcap_enabled: false 79 80 # Local mode multicast group and ttl 81 local: 82 # Multicast group base. All registration and logging is sent on this address 83 group: "127.255.255.255" 84 # TTL (hop limit) is used to determine the amount of routers being traversed towards the destination 85 ttl: 1 86 87 network: 88 # Multicast group base. All registration and logging is sent on this address 89 group: "239.0.0.1" 90 # TTL (hop limit) is used to determine the amount of routers being traversed towards the destination 91 ttl: 3 92 93 tcp: 94 # Reader amount of threads that shall execute workload 95 number_executor_reader: 4 96 # Writer amount of threads that shall execute workload 97 number_executor_writer: 4 98 # Reconnection attemps the session will try to reconnect in case of an issue 99 max_reconnections: 5 100 101 102# Publisher specific base settings 103publisher: 104 layer: 105 # Base configuration for shared memory publisher 106 shm: 107 # Enable layer 108 enable: true 109 # Enable zero copy shared memory transport mode 110 zero_copy_mode: false 111 # Force connected subscribers to send acknowledge event after processing the message. 112 # The publisher send call is blocked on this event with this timeout (0 == no handshake). 113 acknowledge_timeout_ms: 0 114 # Maximum number of used buffers (needs to be greater than 1, default = 1) 115 memfile_buffer_count: 1 116 # Default memory file size for new publisher 117 memfile_min_size_bytes: 4096 118 # Dynamic file size reserve before recreating memory file if topic size changes 119 memfile_reserve_percent: 50 120 121 # Base configuration for UDP publisher 122 udp: 123 # Enable layer 124 enable: true 125 126 # Base configuration for TCP publisher 127 tcp: 128 # Enable layer 129 enable: true 130 131 # Priority list for layer usage in local mode (Default: SHM > UDP > TCP) 132 priority_local: ["shm", "udp", "tcp"] 133 # Priority list for layer usage in cloud mode (Default: UDP > TCP) 134 priority_network: ["udp", "tcp"] 135 136 137# Subscriber specific base configuration 138subscriber: 139 layer: 140 # Base configuration for shared memory subscriber 141 shm: 142 # Enable layer 143 enable: true 144 145 # Base configuration for UDP subscriber 146 udp: 147 # Enabler layer 148 enable: true 149 150 # Base configuration for TCP subscriber 151 tcp: 152 # Enable layer 153 enable: false 154 155 # Enable dropping of payload messages that arrive out of order 156 drop_out_of_order_messages: true 157 158 159# Time configuration 160time: 161 # Time synchronisation interface name (dynamic library) 162 # The name will be extended with platform suffix (32|64), debug suffix (d) and platform extension (.dll|.so) 163 # Available modules are: 164 # - ecaltime-localtime local system time without synchronization 165 # - ecaltime-linuxptp For PTP / gPTP synchronization over ethernet on Linux 166 # (device configuration in ecaltime.ini) 167 rt: "ecaltime-localtime" 168 # Specify the module name for replaying 169 replay: "" 170 171 172# eCAL Application Configuration 173application: 174 # Configuration for eCAL Sys 175 sys: 176 # Apps blacklist to be excluded when importing tasks from cloud 177 filter_excl: "^eCALSysClient$|^eCALSysGUI$|^eCALSys$" 178 # Process specific configuration 179 terminal: 180 # Linux only command for starting applications with an external terminal emulator. 181 # e.g. /usr/bin/x-terminal-emulator -e 182 # /usr/bin/gnome-terminal -x 183 # /usr/bin/xterm -e 184 # If empty, the command will be ignored. 185 emulator: "" 186 187 188# Logging configuration 189logging: 190 # Configuration for file, udp and console log provider 191 # Possible levels are: "info", "warning", "error", "fatal", "debug1", "debug2", "debug3", "debug4" 192 # Can be combined like 193 # log_level: ["warning", "fatal", "debug1", ...] 194 provider: 195 # Console logging configuration 196 console: 197 # Enable console logging 198 enable: true 199 # Log level for console output 200 log_level: ["warning", "error", "fatal"] 201 # File logging configuration 202 file: 203 # Enable file logging 204 enable: false 205 # Log level for file output 206 log_level: [] 207 # UDP logging configuration 208 udp: 209 # Enable UDP logging 210 enable: true 211 # Log level for UDP output 212 log_level: ["info", "warning", "error", "fatal"] 213 # File specific configuration 214 file_config: 215 # Log file path 216 path: "" 217 # UDP specific configuration 218 udp_config: 219 # UDP Port for sending logging data 220 port: 14001 221 # Configuration for udp log receiver 222 receiver: 223 # Enable log receiving (UDP only) 224 enable: false 225 # UDP specific configuration 226 udp_config: 227 # UDP Port for sending logging data 228 port: 14001