The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network.
The goal of the ecal core only project is to create a modular core with clearly defined dependencies based on the configured features. This will enormously reduce the integration effort into other projects and the porting effort to specific hardware.
Visit the eCAL Documentation at 🌐 https://ecal.io for more information.
- C/C++ language support only
- internal communication protocol based on nanopb instead of google::protobuf
- innerprocess communication layer removed (handled by shared memory transport layer too)
The core is fully "wire compatible" to eclipse-ecal on all transport layers (shared memory, udp multicast, tcp) as well as on the discovery (registration, monitoring) layer.
git clone https://github.com/ecal-io/ecal-cop.git
cd ecal-cop
git submodule init
git submodule update
mkdir _build
cd _build
cmake .. -A x64
cmake --build .
This section provides documentation for the CMake options used in configuring the eCAL library. These options allow you to customize the build and enable or disable specific features. Please adapt the options according to your project requirements.
- This option controls whether the eCAL samples should be built. If not needed, you can disable this option to reduce build time.
- This option controls whether the eCAL protobuf samples should be built. If not needed, you can disable this option to reduce build time.
- Requires google::protobuf serialization library.
- This option determines whether the eCAL Google Tests should be built. If enabled, it includes the compilation of unit tests for eCAL. Disabling this option will skip the build of tests if they are not required in your development environment.
- Requires gtest library.
- This option determines whether the eCAL Google Tests using protobuf serialization should be built.
- Requires gtest library and google::protobuf serialization library.
- Enabling this option allows eCAL to be configured via an
ecal.ini
file. This file is used to set various configuration parameters for eCAL, providing flexibility in adjusting its behavior without modifying the source code. - Requires simpleini library.
- Enabling this option includes support for eCAL application command-line interfaces (cmd line). This allows you to interact with eCAL applications through the command line, providing additional runtime configuration options.
- Requires tclap library.
- Enabling this option activates the eCAL registration layer. This layer is responsible for managing and registering different components within the eCAL ecosystem, facilitating communication between them.
- Enabling this option activates the eCAL monitoring functionality.
- Enabling this option includes the eCAL publisher functionality. This is essential for components that need to publish data to the eCAL communication infrastructure.
- Enabling this option includes the eCAL subscriber functionality. This is crucial for components that need to subscribe to and receive data from the eCAL communication infrastructure.
- Enabling this option includes the eCAL server/client functionality.
- Enabling this option includes the eCAL time plugin functionality. This allows for precise synchronization of time across different components using eCAL.
- Enabling this option replaces the standard ASIO UDP receiver by a NPCAP based UDP receiver to increase the performance on Windows platforms.
- Requires udpcap library.
- Enabling this option activates the eCAL registration layer based on shared memory for high performance local communication scenarios only.
- Enabling this option includes the eCAL UDP Multicast message transport layer.
- Enabling this option includes the eCAL TCP message transport layer.
- Requires tcp_pubsub library.
- Enabling this option includes the eCAL local shared memory message transport layer.
Note: Please adjust these options based on your project's needs, ensuring that the selected features align with your desired functionality and dependencies.