### Build C Examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/publish_subscribe_with_backpressure/README.md Builds the C examples, including the publish-subscribe backpressure example. Ensure dependencies are installed before running. ```sh cmake -S . -B target/ff/cc/build -DBUILD_EXAMPLES=ON -DBUILD_CXX=OFF cmake --build target/ff/cc/build ``` -------------------------------- ### Run Discovery Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/discovery/README.md Executes the discovery example to list active services. This command should be run after starting other example services. ```sh ./target/ff/cc/build/examples/cxx/discovery/example_c_discovery ``` -------------------------------- ### Build Out-of-Tree C++ Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-cxx/README.md Build an example project that uses the installed iceoryx2 C++ bindings. This demonstrates how to link against the installed libraries in a custom project. ```bash cmake -S examples/cxx -B target/ff/out-of-tree/examples/cxx \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/out-of-tree/examples/cxx ``` -------------------------------- ### Building Out-of-Tree C Examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-c/README.md After installing the C bindings and libraries, use these commands to build C examples independently. Ensure the CMAKE_PREFIX_PATH points to the installation directory. ```bash cmake -S examples/c -B target/ff/out-of-tree/examples/c \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/out-of-tree/examples/c ``` -------------------------------- ### Run Wait Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/event_multiplexing/README.md Starts the event multiplexing wait example, monitoring events on 'fuu' and 'bar' services. ```sh ./target/ff/cc/build/examples/cxx/event_multiplexing/example_cxx_event_multiplexing_wait -s fuu -t bar ``` -------------------------------- ### Run Publish-Subscribe Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/discovery_service/README.md Start the publish-subscribe subscriber example. Its appearance as a new service should be detected by the discovery service example. ```rust cargo run --example publish_subscribe_subscriber ``` -------------------------------- ### Build C examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/cross-compile/linux-arm.md Build the C examples after configuring CMake with the appropriate toolchain and installation paths. ```bash cmake --build target/ff/out-of-tree/examples/c/publish_subscribe ``` -------------------------------- ### Build iceoryx2 C++ Examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/blackboard/README.md Builds the C++ examples for iceoryx2, including the blackboard example. Ensure dependencies are installed before running. ```sh cmake -S . -B target/ff/cc/build -DBUILD_EXAMPLES=ON cmake --build target/ff/cc/build ``` -------------------------------- ### Run Discovery Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/discovery/README.md Executes the iceoryx2 discovery example to list active services. This command should be run after starting other services. ```sh ./target/ff/cc/build/examples/cxx/discovery/example_cxx_discovery ``` -------------------------------- ### Run Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/event_based_communication/README.md Starts the publisher process for the event-based communication example. This script emits samples periodically and notifies subscribers. ```sh poetry --project iceoryx2-ffi/python run python examples/python/event_based_communication/publisher.py ``` -------------------------------- ### Run IPC Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/service_types/README.md This command starts the IPC publisher example, which utilizes `iox2_service_type_e_IPC` for inter-process communication. Shared memory resources will be visible, and the service will be discoverable. ```sh ./target/ff/cc/build/examples/c/service_types/example_c_service_types_ipc_publisher ``` -------------------------------- ### Run Discovery Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/discovery/README.md Executes the discovery example to list static service details of active services. This command should be run after starting other services. ```sh cargo run --example discovery ``` -------------------------------- ### Run Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/publish_subscribe_with_backpressure/README.md Execute the publisher process for the backpressure example. This command starts the process that sends messages periodically. ```sh cargo run --example publish_subscribe_with_backpressure_handler_publisher ``` -------------------------------- ### Build C++ Examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/publish_subscribe_with_backpressure/README.md Builds the C++ examples using CMake. Ensure all dependencies are installed before running. ```sh cmake -S . -B target/ff/cc/build -DBUILD_EXAMPLES=ON cmake --build target/ff/cc/build ``` -------------------------------- ### Run IPC Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/service_types/README.md Starts the IPC publisher example using `ServiceType::Ipc` for inter-process communication. Shared memory resources will be created. ```sh ./target/ff/cc/build/examples/cxx/service_types/example_cxx_service_types_ipc_publisher ``` -------------------------------- ### Build iceoryx2 Examples Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/docker/README.md Build the publisher and subscriber examples for iceoryx2. These commands are typically run on the host before starting Docker containers. ```sh cargo build --example publish_subscribe_publisher cargo build --example publish_subscribe_subscriber ``` -------------------------------- ### Include Install Setup Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-bb/cxx/CMakeLists.txt Includes an external CMake script for handling installation rules. This is typically used to define how the project's targets and files should be installed. ```cmake include(${CMAKE_CURRENT_LIST_DIR}/cmake/install.cmake) ``` -------------------------------- ### Build Examples with Custom Vocabulary Types Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/custom_vocabulary_types/README.md This command builds the iceoryx2 examples using an out-of-tree build, simulating integration into a custom project with the previously installed custom vocabulary types. ```console cmake -S examples/cxx \ -B target/ff/cc/out-of-tree \ -DCMAKE_PREFIX_PATH=$(pwd)/target/ff/cc/install cmake --build target/ff/cc/out-of-tree ``` -------------------------------- ### Run Opener Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/service_attributes/README.md Executes the C service attributes opener example. ```sh ./target/ff/cc/build/examples/c/service_attributes/example_c_service_attributes_opener ``` -------------------------------- ### Build C examples with CMake toolchain Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/cross-compile/linux-arm.md Build C examples using a CMake toolchain file and specifying installation paths for the iceoryx2-C library. Ensure paths are absolute and correct for your system. ```bash cmake -S examples/c/publish_subscribe \ -B target/ff/out-of-tree/examples/c/publish_subscribe \ -DCMAKE_TOOLCHAIN_FILE="/full/path/to/.../cross-example.cmake" \ -DCMAKE_PREFIX_PATH="/full/path/to/.../iceoryx2/target/ff/cc/install" \ -Diceoryx2-c_DIR="/full/path/to/.../iceoryx2/target/ff/cc/install/lib/cmake/iceoryx2-c" \ -DCMAKE_FIND_DEBUG_MODE=ON ``` -------------------------------- ### Docker Compose Setup Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/docker/README.md Starts the iceoryx2 test setup using docker-compose. Ensure the /tmp/iceoryx2 directory is created before running this command. This command assumes the docker-compose.yml file is at the specified path relative to the project root. ```sh mkdir /tmp/iceoryx2 docker-compose -f examples/rust/docker/docker-compose.yml --project-directory . up ``` -------------------------------- ### Run Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/publish_subscribe_with_backpressure/README.md Execute the subscriber process for the backpressure example. This command starts the process that receives and prints messages. ```sh cargo run --example publish_subscribe_with_backpressure_handler_subscriber ``` -------------------------------- ### Print Hello World Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/design-documents/template.md A simple example demonstrating how to print a string to the console within a feature. ```rust println!("hello world from my feature"); ``` -------------------------------- ### Run Waiter Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/event_multiplexing/README.md Launches the event multiplexing waiter example, specifying the services 'fuu' and 'bar' to monitor. ```sh ./target/ff/cc/build/examples/c/event_multiplexing/example_c_event_multiplexing_wait fuu bar ``` -------------------------------- ### Run Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/event_based_communication/README.md Launches the event-based communication publisher example. This should be run in a separate terminal. ```sh ./target/ff/cc/build/examples/cxx/event_based_communication/example_cxx_event_based_communication_publisher ``` -------------------------------- ### Run iceoryx2 Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/service_variant_customization/README.md Execute the publisher example for the service variant customization. This will demonstrate the custom communication mechanism in action. ```sh cargo run --example service_variant_customization_publisher ``` -------------------------------- ### Enter Virtual Environment and Run Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/README.md Enter the project's virtual environment using Poetry and then execute a Python example script. ```sh poetry --project iceoryx2-ffi/python shell ``` ```python python examples/python/publish_subscribe/publisher.py ``` -------------------------------- ### Run Creator Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/service_attributes/README.md Executes the C service attributes creator example. ```sh ./target/ff/cc/build/examples/c/service_attributes/example_c_service_attributes_creator ``` -------------------------------- ### Run Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/event_based_communication/README.md Execute the publisher side of the event-based communication example using cargo. ```sh cargo run --example event_based_comm_publisher ``` -------------------------------- ### Run WaitSet Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/event_multiplexing/README.md Execute the WaitSet example by specifying the services to monitor using the -s option. ```sh cargo run --example event_multiplexing_wait -- -s "fuu" -s "bar" ``` -------------------------------- ### Run Notifier Example (Service fuu) Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/event_multiplexing/README.md Launches the event multiplexing notifier example for service 'fuu' with event ID '123'. ```sh ./target/ff/cc/build/examples/c/event_multiplexing/example_c_event_multiplexing_notifier 123 fuu ``` -------------------------------- ### Run Discovery Service Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/discovery_service/README.md Execute the discovery service example application. This application subscribes to updates from the running service discovery service. ```rust cargo run --example discovery_service ``` -------------------------------- ### Simple Developer Build for iceoryx2-c Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-c/README.md Use this command for a straightforward developer setup. It builds the C bindings along with examples and tests, utilizing Cargo for the Rust components. ```bash cmake -S . -B target/ff/cc/build -DBUILD_EXAMPLES=ON -DBUILD_TESTING=ON cmake --build target/ff/cc/build ``` -------------------------------- ### Zig Subscriber Example with iceoryx2 Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/user-documentation/use-iceoryx2-with-zig.md This Zig code snippet demonstrates how to set up a subscriber to receive data using iceoryx2. It covers node creation, service definition, subscriber setup, and sample reception. Ensure the `transmission_data.h` header is in the same directory. ```zig const iox2_root = "/full/path/to/.../iceoryx2/target/ff/cc/install"; const zig_proj_root = "/full/path/to/.../src"; const std = @import("std"); const iox2 = @cImport({ @cInclude(iox2_root ++ "/include/iceoryx2/v0.9.999/iox2/iceoryx2.h"); @cInclude(zig_proj_root ++ "/transmission_data.h"); }); pub fn main() !void { // create new node const node_builder_handle: iox2.iox2_node_builder_h = iox2.iox2_node_builder_new(null); var node_handle: iox2.iox2_node_h = null; if (iox2.iox2_node_builder_create( node_builder_handle, null, iox2.iox2_service_type_e_IPC, &node_handle ) != iox2.IOX2_OK) { std.log.err("Could not create node!\n", .{}); } // create service name const service_name_value = "My/Funk/ServiceName"; var service_name: iox2.iox2_service_name_h = null; if (iox2.iox2_service_name_new( null, service_name_value, service_name_value.len, &service_name ) != iox2.IOX2_OK) { std.log.err("Unable to create service name!\n", .{}); iox2.iox2_node_drop(node_handle); } // create service builder const service_name_ptr: iox2.iox2_service_name_ptr = iox2.iox2_cast_service_name_ptr(service_name); const service_builder: iox2.iox2_service_builder_h = iox2.iox2_node_service_builder(&node_handle, null, service_name_ptr); const service_builder_pub_sub: iox2.iox2_service_builder_pub_sub_h = iox2.iox2_service_builder_pub_sub(service_builder); // set pub sub payload type const payload_type_name = "16TransmissionData"; if (iox2.iox2_service_builder_pub_sub_set_payload_type_details( &service_builder_pub_sub, iox2.iox2_type_variant_e_FIXED_SIZE, payload_type_name, payload_type_name.len, @sizeOf(iox2.TransmissionData), @alignOf(iox2.TransmissionData) ) != iox2.IOX2_OK) { std.log.err("Unable to set type details\n", .{}); iox2.iox2_service_name_drop(service_name); } // create service var service: iox2.iox2_port_factory_pub_sub_h = null; if (iox2.iox2_service_builder_pub_sub_open_or_create( service_builder_pub_sub, null, &service) != iox2.IOX2_OK) { std.log.err("Unable to create service!\n", .{}); iox2.iox2_service_name_drop(service_name); } // create subscriber const subscriber_builder: iox2.iox2_port_factory_subscriber_builder_h = iox2.iox2_port_factory_pub_sub_subscriber_builder(&service, null); var subscriber: iox2.iox2_subscriber_h = null; if (iox2.iox2_port_factory_subscriber_builder_create(subscriber_builder, null, &subscriber) != iox2.IOX2_OK) { std.log.err("Unable to create subscriber!\n", .{}); iox2.iox2_service_name_drop(service_name); } while (iox2.iox2_node_wait(&node_handle, 1, 0) == iox2.IOX2_OK) { // receive sample var sample: iox2.iox2_sample_h = null; if (iox2.iox2_subscriber_receive(&subscriber, null, &sample) != iox2.IOX2_OK) { std.log.err("Failed to receive sample\n", .{}); iox2.iox2_service_name_drop(service_name); } if (sample != null) { var payload: ?*iox2.TransmissionData = null; const casted_payload: *?*const anyopaque = @ptrCast(&payload); iox2.iox2_sample_payload(&sample, casted_payload, null); if (payload) |msg| { std.log.info("received: TransmissionData: .x: {}, .y: {}, .funky: {} \n", .{ msg.x, msg.y, msg.funky, }); } iox2.iox2_sample_drop(sample); } } } ``` -------------------------------- ### Run Local PubSub Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/service_types/README.md Command to execute the local pubsub example, which uses intra-process communication. ```sh python examples/python/service_types/local_pubsub.py ``` -------------------------------- ### Run Notifier Example (Service bar) Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/event_multiplexing/README.md Launches the event multiplexing notifier example for service 'bar' with event ID '456'. ```sh ./target/ff/cc/build/examples/c/event_multiplexing/example_c_event_multiplexing_notifier 456 bar ``` -------------------------------- ### Setup Virtual Environment for iceoryx2-ffi/python Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/python-bindings.md Installs dependencies and creates a virtual environment for the iceoryx2 Python bindings. Optionally, you can enter the virtual environment to skip the 'poetry run' prefix for subsequent commands. ```sh cd $(git rev-parse --show-toplevel) # Install dependencies and create virtual environment poetry --project iceoryx2-ffi/python install # (OPTIONAL) Enter the virtual environment - skip the 'poetry run' prefix for all commands poetry --project iceoryx2-ffi/python shell ``` -------------------------------- ### Build and Install iceoryx2-bb-cxx Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-cxx/README.md Build and install the `iceoryx2-bb-cxx` component, ensuring the C bindings installation path is provided via CMAKE_PREFIX_PATH. ```bash cmake -S iceoryx2-bb/cxx -B target/ff/bb-cxx/build \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/bb-cxx/build cmake --install target/ff/bb-cxx/build --prefix target/ff/cc/install ``` -------------------------------- ### Run IPC Publisher Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/service_types/README.md Command to run the IPC publisher example, demonstrating inter-process communication. ```sh python examples/python/service_types/ipc_publisher.py ``` -------------------------------- ### Run iceoryx2 Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/service_variant_customization/README.md Execute the subscriber example for the service variant customization. This will demonstrate the custom communication mechanism in action. ```sh cargo run --example service_variant_customization_subscriber ``` -------------------------------- ### Install iceoryx2-cli Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-cli/README.md Install the iceoryx2-cli using cargo. ```console cargo install iceoryx2-cli ``` -------------------------------- ### Run Python Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/python-bindings.md Executes a Python example script for the event listener within the iceoryx2 Python bindings project. ```sh cd $(git rev-parse --show-toplevel) poetry --project iceoryx2-ffi/python run python examples/python/event/listener.py ``` -------------------------------- ### Build and Run Bare Metal Example with Semihosting Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/nostd/bare-metal/README.md Builds and runs a bare metal example using the `semihosting` feature for output during QEMU emulation. This is useful for debugging and observing application behavior on the target. ```console cargo run --example bare_metal_nostd_publish_subscribe --features semihosting ``` -------------------------------- ### Run Blackboard Opener Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/blackboard/README.md Executes the C example that reads and prints values from the blackboard. Multiple instances of this reader can run simultaneously. ```sh ./target/ff/cc/build/examples/c/blackboard/example_c_opener ``` -------------------------------- ### Run Blackboard Creator Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/blackboard_event_based_communication/README.md Execute this command in a terminal to run the creator side of the blackboard event-based communication example. ```sh cargo run --example blackboard_event_based_creator ``` -------------------------------- ### Run Blackboard Creator Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/blackboard/README.md Execute the `blackboard_creator` example in a terminal to set up the blackboard service with initial key-value pairs. This must be run before any readers. ```sh cargo run --example blackboard_creator ``` -------------------------------- ### Install Rust Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/README.md Install Rust using the official recommended approach via a curl script. This is a prerequisite for building iceoryx2. ```sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` -------------------------------- ### Install Dependencies with Poetry Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/blackboard/README.md Installs all necessary dependencies for the iceoryx2 Python examples using Poetry. ```sh poetry --project iceoryx2-ffi/python install ``` -------------------------------- ### Run Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/event_based_communication/README.md Launches the event-based communication subscriber example. This should be run in a separate terminal. Multiple subscribers can run in parallel. ```sh ./target/ff/cc/build/examples/cxx/event_based_communication/example_cxx_event_based_communication_subscriber ``` -------------------------------- ### Run Blackboard Opener Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/blackboard_event_based_communication/README.md Execute this command in a separate terminal to run the opener side of the blackboard event-based communication example. ```sh cargo run --example blackboard_event_based_opener ``` -------------------------------- ### Run iceoryx2 Event Notifier Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/event/README.md Launches the iceoryx2 event notifier example in a separate terminal. This process periodically sends notifications. ```sh ./target/ff/cc/build/examples/cxx/event/example_cxx_event_notifier ``` -------------------------------- ### Build ROS 2 Example Package Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/integrations/ros2/examples/README.md Builds a specific ROS 2 example package using colcon after sourcing the ROS 2 environment and the workspace setup. ```bash cd source /opt/ros//setup.bash && source install/setup.bash colcon build --packages-select ``` -------------------------------- ### Start remote test server on QNX target Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/qnx.md Prepare and start the remote test server on the QNX target machine. This involves mounting a shared drive, copying the server executable, and running it with specific options. ```bash mount -t dos /dev/hd1t6 /mnt/shared cp /mnt/shared/remote-test-server-x86_64 /data/home/root/remote-test-server chmod +x /data/home/root/remote-test-server RUST_TEST_THREADS=1 ./remote-test-server -v --bind 0.0.0.0:12345 --sequential ``` -------------------------------- ### Run IPC Threadsafe Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/service_types/README.md Starts the IPC thread-safe subscriber example using `ServiceType::Ipc`. This demonstrates port thread safety by launching an additional listening thread. ```sh ./target/ff/cc/build/examples/cxx/service_types/example_cxx_service_types_ipc_threadsafe_subscriber ``` -------------------------------- ### Run Subscriber Process Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/publish_subscribe_with_backpressure/README.md Starts the subscriber process for the publish-subscribe example. Run this in a separate terminal. ```sh ./target/ff/cc/build/examples/cxx/publish_subscribe_backpressure/example_cxx_publish_subscribe_backpressure_subscriber ``` -------------------------------- ### Run Blackboard Creator Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/blackboard/README.md Executes the C example responsible for creating the blackboard service and populating it with initial key-value pairs. This must be run before any readers or writers. ```sh ./target/ff/cc/build/examples/c/blackboard/example_c_creator ``` -------------------------------- ### Run IPC Threadsafe Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/service_types/README.md This command starts the IPC thread-safe subscriber example, demonstrating inter-process communication and port thread safety with `iox2_service_type_e_IPC`. It launches an additional thread to listen for messages. ```sh ./target/ff/cc/build/examples/c/service_types/example_c_service_types_ipc_threadsafe_subscriber ``` -------------------------------- ### Run Subscriber Process Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/publish_subscribe_with_backpressure/README.md Starts the subscriber process for the publish-subscribe backpressure example. This process listens for messages from the publisher. ```sh ./target/ff/cc/build/examples/c/publish_subscribe_backpressure/example_c_publish_subscribe_backpressure_subscriber ``` -------------------------------- ### Run Publish-Subscribe Subscriber Service Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/discovery/README.md Starts the C++ publish-subscribe subscriber example. This service needs to be running to be discovered. ```sh ./target/ff/cc/build/examples/cxx/publish_subscribe/example_c_publish_subscribe_subscriber ``` -------------------------------- ### Run Event Listener Service Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/discovery/README.md Starts the C++ event listener example. This service needs to be running to be discovered. ```sh ./target/ff/cc/build/examples/cxx/event/example_c_event_listener ``` -------------------------------- ### Start remote benchmark server on QNX target Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/qnx.md Prepare and start the remote test server on the QNX target machine for running benchmarks. This involves mounting a shared drive, copying the server executable, and running it. ```bash mount -t dos /dev/hd1t6 /mnt/shared cp /mnt/shared/remote-test-server-x86_64 /data/home/root/remote-test-server chmod +x /data/home/root/remote-test-server RUST_TEST_THREADS=1 /data/home/root/remote-test-server -v --bind 0.0.0.0:12345 --sequential ``` -------------------------------- ### Run Waiter Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/event_multiplexing/README.md Starts the waiter script, which monitors events on specified services. This script should be run in a terminal to listen for notifications. ```sh poetry --project iceoryx2-ffi/python run python examples/python/event_multiplexing/wait.py fuu bar ``` -------------------------------- ### Run Publisher Process Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/publish_subscribe_with_backpressure/README.md Starts the publisher process for the publish-subscribe backpressure example. This process sends messages periodically and demonstrates backpressure handling. ```sh ./target/ff/cc/build/examples/c/publish_subscribe_backpressure/example_c_publish_subscribe_backpressure_publisher ``` -------------------------------- ### Minimal expect Test Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/how-to-write-end-to-end-tests.md Spawns two processes and asserts expected output from the most recent one. Includes common setup and test assertions. ```sh #!/usr/bin/expect #### Common Setup set REPO_ROOT [exec git rev-parse --show-toplevel] cd ${REPO_ROOT} source ${REPO_ROOT}/iceoryx2-testing/end-to-end-testing/common.exp #### Test Setup set timeout 10 spawn cargo run --example publish_subscribe_publisher spawn cargo run --example publish_subscribe_subscriber #### Test Assertion expect_output "received: TransmissionData { x: 3, y: 9, funky: 2436.36 }*" show_test_passed ``` -------------------------------- ### Configure CMake for C bindings Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/cross-compile/linux-arm.md Configure CMake to build C bindings, disabling examples and specifying installation prefixes and the Rust build artifact path for cross-compilation. ```bash cmake -S . -B target/ff/cc/build -DBUILD_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=target/ff/cc/install -DBUILD_CXX=OFF -DRUST_BUILD_ARTIFACT_PATH="$( pwd )/target/aarch64-unknown-linux-gnu/release" ``` -------------------------------- ### Run Publisher with Docker Compose Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/docker/README.md Starts an additional publisher using sudo privileges after the docker-compose setup is running. This allows connecting to services managed by the docker-compose environment. ```sh cd iceoryx2 sudo ./target/debug/examples/publish_subscribe_publisher ``` -------------------------------- ### Run Local PubSub Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/service_types/README.md This command executes the local pub-sub example, which uses `iox2_service_type_e_LOCAL` for intra-process communication. No external resources are created, and services are not discoverable via `iox2 service list`. ```sh ./target/ff/cc/build/examples/c/service_types/example_c_service_types_local_pubsub ``` -------------------------------- ### Create Symlinks for Colcon and Cargo Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/integrations/ros2/examples/README.md Creates two essential symlinks: one to make the example package discoverable by colcon, and another to link the ROS install space for Cargo build discovery. ```bash # 1. Make the package discoverable by colcon. ln -s /integrations/ros2/examples/ /src/ # 2. Symlink the ROS install space so it can be discovered by the # Cargo build. ln -sfn /install /integrations/ros2/examples//.ros_install ``` -------------------------------- ### IPC Publisher and Threadsafe Subscriber Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/service_types/README.md Demonstrates inter-process communication using `ipc::Service` for the publisher and `ipc_threadsafe::Service` for a thread-safe subscriber. This setup creates shared memory resources and makes services discoverable. ```rust let node = NodeBuilder::new() .create::()?; ``` ```rust let node = NodeBuilder::new() .create::()?; ``` -------------------------------- ### Run iceoryx2 Blackboard Creator Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/cxx/blackboard/README.md Launches the blackboard creator process, which initializes the shared memory blackboard service with key-value pairs. This must run before any openers. ```sh ./target/ff/cc/build/examples/cxx/blackboard/example_cxx_blackboard_creator ``` -------------------------------- ### Run C++ Publisher Example with Bazel Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/bazel/README.md Build and run the C++ publisher example using Bazel. This requires a separate terminal for the subscriber. ```bash bazel run //cxx:example_publisher_cpp ``` -------------------------------- ### Build and Install iceoryx2-cxx Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-cxx/README.md Build and install the main C++ bindings, using the previously installed artifacts by specifying the CMAKE_PREFIX_PATH. ```bash cmake -S iceoryx2-cxx -B target/ff/cxx/build \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/cxx/build cmake --install target/ff/cxx/build --prefix target/ff/cc/install ``` -------------------------------- ### Run Blackboard Opener Example Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/rust/blackboard/README.md Execute the `blackboard_opener` example in a terminal to read and print values from the blackboard. Multiple readers can run simultaneously, but only one writer is permitted. ```sh cargo run --example blackboard_opener ``` -------------------------------- ### Run Client Process Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/request_response/README.md Executes the C request-response client example. ```sh ./target/ff/cc/build/examples/c/request_response/example_c_request_response_client ``` -------------------------------- ### Install Git using Chocolatey Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/windows.md Installs Git on Windows using the Chocolatey package manager. Ensure Chocolatey is installed first. ```powershell choco install -y git ``` -------------------------------- ### Run QNX Image on QEMU using mkqnximage Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/doc/development-setup/qnx.md This command uses `mkqnximage --run` to start a previously created QNX image in QEMU. It requires the QNX toolchain to be sourced and the current directory to be set to the image directory. ```bash export QNX_TOOLCHAIN="$HOME/qnx710" source $QNX_TOOLCHAIN/qnxsdp-env.sh export IMAGE_DIR="$HOME/images/minimal" cd $IMAGE_DIR mkqnximage --run ``` -------------------------------- ### Install Poetry and Dependencies Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/python/README.md Install Poetry for Python virtual environment management and add the poetry-plugin-shell. Ensure ~/.local/bin is in your PATH. Then, install all project dependencies. ```sh curl -sSL https://install.python-poetry.org | python3 - ``` ```sh which poetry # should show '$HOME/.local/bin/poetry' ``` ```sh poetry self add poetry-plugin-shell ``` ```sh poetry --project iceoryx2-ffi/python install ``` -------------------------------- ### Build and Install iceoryx2-c (C Bindings) Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-cxx/README.md Build and install the C bindings, specifying the Rust build artifact path and the installation prefix for the CMake package. ```bash cmake -S iceoryx2-c -B target/ff/c/build \ -DRUST_BUILD_ARTIFACT_PATH="$( pwd )/target/release" \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/c/build cmake --install target/ff/c/build --prefix target/ff/cc/install ``` -------------------------------- ### Integrator Build for iceoryx2-ffi-c Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2-c/README.md Recommended for production, this process separately builds the iceoryx2-ffi-c crate and installs it. It then configures the C bindings build to use the pre-built artifacts. ```bash cargo build --release --package iceoryx2-ffi-c cmake -S iceoryx2-cmake-modules -B target/ff/cmake-modules/build cmake --install target/ff/cmake-modules/build --prefix target/ff/cc/install cmake -S iceoryx2-c -B target/ff/c/build \ -DRUST_BUILD_ARTIFACT_PATH="$( pwd )/target/release" \ -DCMAKE_PREFIX_PATH="$( pwd )/target/ff/cc/install" cmake --build target/ff/c/build cmake --install target/ff/c/build --prefix target/ff/cc/install ``` -------------------------------- ### Run Server Process Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/request_response/README.md Executes the C request-response server example. ```sh ./target/ff/cc/build/examples/c/request_response/example_c_request_response_server ``` -------------------------------- ### Install Ubuntu Dependencies Source: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/examples/c/README.md Installs C/C++ compiler and library dependencies on Ubuntu. ```sh sudo ./internal/scripts/install_dependencies_ubuntu.sh ```