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:

    1. %ECAL_DATA%\ecal.yaml

    2. %cd%\ecal.yaml

    3. %localappdata%\eCAL\ecal.yaml *

    4. %ProgramData%\eCAL\ecal.yaml * (fallback)

  • Ubuntu:

    1. $ECAL_DATA/ecal.yaml

    2. $PWD/ecal.yaml

    3. $HOME/.ecal/ecal.yaml *

    4. /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.

  • ecal.yaml

      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