Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions doc/website/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ In this document are tips and hints documented which can help for troubleshootin

## Does iceoryx run in a docker environment?

Yes. Take a look at the [icedocker example](../../iceoryx_examples/icedocker/)
Yes. Take a look at the [icedocker example](examples/icedocker.md)

## iceoryx crashes with SIGABRT when reserving shared memory in a docker envirnonment

Expand Down Expand Up @@ -33,7 +33,7 @@ Either

or

* Use the [blocking publisher feature](../../iceoryx_examples/iceoptions/)
* Use the [blocking publisher feature](examples/iceoptions.md)

!!! caution
The usage of the blocking publisher feature needs to be considered carefully as other subscribers will not receive
Expand Down Expand Up @@ -62,7 +62,7 @@ Possible solutions are one of the following:
1. Increase [memory configuration of RouDi](advanced/configuration-guide.md)
1. Make sure that the receiving frequency is higher than the publishing one
1. Reduce `SubscriberOptions::queueCapacity` to hold less samples in the mempool on the subscriber side
1. Consider using the [blocking publisher feature](../../iceoryx_examples/iceoptions/). The usage needs to be
1. Consider using the [blocking publisher feature](examples/iceoptions.md). The usage needs to be
considered carefully as other subscribers will not receive samples while the publisher is blocked.

!!! caution
Expand Down Expand Up @@ -162,13 +162,13 @@ docker run -it --shm-size="2g" ubuntu
To avoid undefined behavior of iceoryx posh it is recommended to terminate RouDi and the corresponding middleware
processes with SIGINT or SIGTERM. In RouDi, we have integrated a sighandler that catches the signals and gives RouDi
the chance to exit and clean-up everything. This also applies for processes. Therefore, we recommend adding a signalhandler
to your process (see [this example](../../iceoryx_examples/icedelivery/iox_publisher_untyped.cpp)).
to your process (see [this example](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_examples/icedelivery/iox_publisher_untyped.cpp)).

## How to use iceoryx as external dependency with bazel

Define iceoryx repository information in your [WORKSPACE](https://bazel.build/concepts/build-ref#workspace)
then calling bazel macro from [load_repositories.bzl](https://github.com/eclipse-iceoryx/iceoryx/blob/main/bazel/load_repositories.bzl)
and [setup_repositories.bzl](https://github.com/eclipse-iceoryx/iceoryx/blob/main/bazel/setup_repositories.bzl) for loading transitive dependencies.
then calling bazel macro from [load_repositories.bzl](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/bazel/load_repositories.bzl)
and [setup_repositories.bzl](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/bazel/setup_repositories.bzl) for loading transitive dependencies.

```
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
Expand All @@ -188,5 +188,4 @@ load("@eclipse_iceoryx//bazel:load_repositories.bzl", "load_repositories")
load("@eclipse_iceoryx//bazel:setup_repositories.bzl", "setup_repositories")
load_repositories()
setup_repositories()

```
14 changes: 7 additions & 7 deletions doc/website/advanced/configuration-guide.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Configuration guide

## CMake switches for configuring iceoryx_hoofs and iceoryx_posh build
## :material-cog: CMake switches for configuring iceoryx_hoofs and iceoryx_posh build

There are several configuration options set by default when iceoryx_hoofs
and iceoryx_posh are build. These options adjust the minimal log level compiled
Expand All @@ -21,8 +21,8 @@ in the shared memory segment called `iceoryx_mgmt` when RouDi is started.
| `IOX_MAX_INTERFACE_NUMBER` | Maximum number of interface ports which are used by gateways |
| `IOX_MAX_REQUESTS_PROCESSED_SIMULTANEOUSLY` | Maximum number of server can process request in parallel |

Have a look at [IceoryxHoofsDeployment.cmake](../../../iceoryx_hoofs/cmake/IceoryxHoofsDeployment.cmake) and
[IceoryxPoshDeployment.cmake](../../../iceoryx_posh/cmake/IceoryxPoshDeployment.cmake) for the default values of the constants.
Have a look at [IceoryxHoofsDeployment.cmake](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_hoofs/cmake/IceoryxHoofsDeployment.cmake) and
[IceoryxPoshDeployment.cmake](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_posh/cmake/IceoryxPoshDeployment.cmake) for the default values of the constants.

!!! hint
With the default values set, the size of `iceoryx_mgmt` is ~64.5 MByte. You
Expand Down Expand Up @@ -79,7 +79,7 @@ This way, the ACL feature is disabled across builds without needing to pass the
>
> This ensures that the flag is applied to the correct target from the imported repository.

## Configuring Mempools for RouDi
## :material-memory: Configuring Mempools for RouDi

RouDi supports several shared memory segments with different access rights, to
limit the read and write access between different applications. Memory pools
Expand All @@ -93,7 +93,7 @@ for communication.
user-payload will be smaller than the configured chunk-payload since some
space is needed for the other functionality.
Please have a look at the
[chunk_header.md](../../design/chunk_header.md)
[chunk_header.md](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/doc/design/chunk_header.md)
design document for a formula how to determine the necessary chunk-payload
size with user-header and extended user-payload alignment.

Expand Down Expand Up @@ -212,7 +212,7 @@ count = 100
```

When no configuration file is specified a hard-coded version similar to the
[default config](../../../iceoryx_posh/etc/iceoryx/roudi_config_example.toml)
[default config](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_posh/etc/iceoryx/roudi_config_example.toml)
will be used.

### Static configuration
Expand Down Expand Up @@ -254,4 +254,4 @@ int main(int argc, char* argv[])
```

A working example of a static config can be found
[here](../../../iceoryx_examples/iceperf/roudi_main_static_config.cpp).
[here](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_examples/iceperf/roudi_main_static_config.cpp).
4 changes: 2 additions & 2 deletions doc/website/advanced/installation-guide-for-contributors.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation guide for contributors

## Build and run tests
## :material-test-tube: Build and run tests

While developing on iceoryx, you may want to know if your changes will break existing functionality or if your
newly written tests will pass. For that purpose, we generate CMake targets that execute the tests. First,
Expand Down Expand Up @@ -55,7 +55,7 @@ Let's assume you want to execute only `ServiceDescription_test` from posh_module
While writing code on iceoryx you should use git hooks that automatically ensure that you follow the coding and style guidelines.
See [`git-hooks`](../../../tools/git-hooks/Readme.md).

## Use Sanitizer Scan
## :fontawesome-solid-pump-soap: Use Sanitizer Scan

Due to the fact that iceoryx works a lot with system memory, it should be ensured that errors like memory leaks are not introduced.
To prevent this, we use the clang toolchain which offers several tools for scanning the codebase. One of them is the
Expand Down
2 changes: 1 addition & 1 deletion doc/website/concepts/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The different libraries and their namespaces are depicted below.
Handy Objects Optimized For Safety (hoofs) is a library and contains various building blocks like fixed size containers,
concurrency classes and modern, next-gen C++ constructs from upcoming C++ standard releases.

For more information about the components, refer to its [detailed description](../../../iceoryx_hoofs/README.md).
For more information about the components, refer to its [detailed description](../advanced/iceoryx_hoofs.md).

### iceoryx posh

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ result = iox::nullopt;
```

For a complete list of available functions see
[`optional.hpp`](../../../iceoryx_hoofs/vocabulary/include/iox/optional.hpp).
[`optional.hpp`](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_hoofs/vocabulary/include/iox/optional.hpp).


## Expected
Expand All @@ -80,7 +80,7 @@ the 'either monad'. It is usually used to pass a value of type `T` or an error t
error type.

For more information on how it is used for error handling see
[error-handling.md](../../design/error-handling.md).
[error-handling.md](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/doc/design/error-handling.md).

Assume we have `E` as an error type, then we can create a value

Expand Down Expand Up @@ -121,7 +121,7 @@ result.and_then(handleValue).or_else(handleError);

There are more convenience functions such as `value_or` which provides the value or an alternative specified by the
user. These can be found in
[`expected.hpp`](../../../iceoryx_hoofs/vocabulary/include/iox/expected.hpp).
[`expected.hpp`](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_hoofs/vocabulary/include/iox/expected.hpp).

Note that when we move an `expected`, the origin contains a moved `T` or `E`, depending on the content before the move.
This reflects the behavior of moving the content out of the `iox::expected` as in
Expand Down
2 changes: 1 addition & 1 deletion doc/website/concepts/qos-policies.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ The three most important settings are:
2. Multiple publishers after the publisher called `stopOffer()` or is removed
The last n samples will never be received since they vanished. An arbitrary number of samples or nothing is received.

For more information about the options see the corresponding example [`iceoptions`](../../../iceoryx_examples/iceoptions/README.md).
For more information about the options see the corresponding example [`iceoptions`](../examples/iceoptions.md).

!!! info
If the `PublisherOptions::historyCapacity` is larger than `SubscriberOptions::queueCapacity` and blocking behaviour
Expand Down
26 changes: 13 additions & 13 deletions doc/website/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ All iceoryx libraries are deployed as independent CMake packages. Posh is using

## Prerequisites

### Dependencies
### :octicons-package-dependencies-16: Dependencies

- 64-bit hardware (e.g. x86_64 or aarch64; 32-bit hardware works, but only as technology preview and not meant for production)
- [CMake](https://cmake.org), 3.16 or later
Expand All @@ -15,7 +15,7 @@ All iceoryx libraries are deployed as independent CMake packages. Posh is using
- [libacl](http://download.savannah.gnu.org/releases/acl/), 2.2 or later. Only for Linux & QNX.
- optional, [ncurses](https://invisible-island.net/ncurses/), 6.2 or later. Required by introspection tool (only for Linux, QNX and MacOS).

### Mac OS
### :material-apple: Mac OS

Before installing iceoryx you need to install XCode and git. Optionally, ncurses library is required for
the introspection client. To install ncurses locally into your build folder follow these steps
Expand All @@ -33,7 +33,7 @@ make -j12
make install
```

### Linux
### :fontawesome-brands-linux: Linux

Although we strive to be fully POSIX-compliant, we recommend using Ubuntu 20.04 and at least GCC 8.3 for development.

Expand All @@ -52,12 +52,12 @@ sudo apt install libacl1-dev:i386 libc6-dev-i386 libc6-dev-i386-cross libstdc++6

Additionally, there is an optional dependency to the [cpptoml](https://github.com/skystrife/cpptoml) library, which is used to parse the RouDi config file containing mempool configuration.

### QNX
### :fontawesome-brands-blackberry: QNX

QNX SDP 7.1 is supported (shipping with gcc 8.3 respectively).

The easiest way to build iceoryx on QNX is by using the build script and providing a toolchain file.
We provide generic QNX SDP 7.0 toolchain files for ARM_64 and X86_64 in `./tools/toolchains/qnx` ([Direct Link](../../../tools/toolchains/qnx)).
We provide generic QNX SDP 7.0 toolchain files for ARM_64 and X86_64 in `./tools/toolchains/qnx` ([Direct Link](https://github.com/eclipse-iceoryx/iceoryx/tree/v3.0.0/tools/toolchains/qnx)).

ARM_64:

Expand All @@ -74,7 +74,7 @@ X86_64:
!!! attention
Please ensure that the folder `/var/lock` exist and the filesystem supports file locking.

### Windows
### :octicons-package-dependencies-16: Windows

In case you do not have a Windows installation, Microsoft provides free developer images from [here](https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/).

Expand All @@ -87,7 +87,7 @@ choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
```
Additional packages can be found [here](https://community.chocolatey.org/packages).

#### Setup for MSVC
#### :material-microsoft-visual-studio: Setup for MSVC

If the developer image from Microsoft is used, Visual Studio Community 2022 is already installed, else it can be found [here](https://visualstudio.microsoft.com/de/downloads/).

Expand All @@ -100,7 +100,7 @@ Alternatively, `C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC
!!! attention
A Windows SDK Version of at least `10.0.18362.0` is required.

#### Setup for MinGW
#### :simple-mingww64: Setup for MinGW

`MinGW` can also be used to build iceoryx on Windows. The easist way to do this is to use `chocolatey`.

Expand All @@ -113,7 +113,7 @@ The `MinGW` library path needs to be added to the `Path` environment variable.
$env:Path += 'C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin'
```

## Build with CMake
## :material-triangle: Build with CMake

!!! note
Building with CMake is the preferred way, for more complex actions like a coverage scan
Expand Down Expand Up @@ -181,10 +181,10 @@ The `CMakeLists.txt` from `iceoryx_meta` can be used to easily develop iceoryx w

### Build options

Please take a look at the CMake file [build_options.cmake](../../../iceoryx_meta/build_options.cmake)
Please take a look at the CMake file [build_options.cmake](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/iceoryx_meta/build_options.cmake)
to get an overview of the available build options for enabling additional features.

## Build with script
## :material-powershell: Build with script

As an alternative, we provide a build-test script which we use to integrate iceoryx into our infrastructure.
The intention of the script goes beyond building iceoryx, it is also used for the code coverage scan or the address-sanitizer runs on the CI.
Expand Down Expand Up @@ -215,7 +215,7 @@ You can use the `help` argument for getting an overview of the available options
!!! tip
The examples can be built with `-DEXAMPLES=ON` with iceoryx_meta or by providing the `examples` argument to the build script.

## Build with colcon
## :material-robot: Build with colcon

Alternatively, iceoryx can be built with [colcon](https://colcon.readthedocs.io/en/released/user/installation.html#using-debian-packages) to provide a smooth integration for ROS 2 developers.
To build the iceoryx_integrationtest package one requires a minimal [ROS 2 installation](https://docs.ros.org/en/foxy/Installation/Linux-Install-Debians.html).
Expand Down Expand Up @@ -246,7 +246,7 @@ colcon build

This build method makes the most sense in combination with [rmw_iceoryx](https://github.com/ros2/rmw_iceoryx.git)

## Build with Bazel
## :simple-bazel: Build with Bazel

A second option is to build iceoryx with [Bazel](https://bazel.build/) as an alternative build and test tool.
In comparison to CMake it offers an easier syntax with better performance and a hermetic build mode for reproducible builds.
Expand Down
18 changes: 9 additions & 9 deletions doc/website/getting-started/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ iox::popo::Subscriber<CounterTopic> subscriber({"Group", "Instance", "CounterTop
```

Now we can use the subscriber to receive data. For simplicity, we assume that we periodically check for new data. It
is also possible to explicitly wait for data using the [WaitSet](../../../iceoryx_examples/waitset/README.md) or
the [Listener](../../../iceoryx_examples/callbacks/README.md). The code to receive the data is the same, the only difference is the way we wake up before checking for data.
is also possible to explicitly wait for data using the [WaitSet](../examples/waitset.md) or
the [Listener](../examples/callbacks.md). The code to receive the data is the same, the only difference is the way we wake up before checking for data.

```cpp
while (keepRunning)
Expand All @@ -94,7 +94,7 @@ while (keepRunning)
By calling `take` we get an `expected` and hence we have to handle the potential error.

And that's it. We have created our first simple iceoryx example.
[Here](../../../iceoryx_examples/README.md) you can find further examples
[Here](../examples/index.md) you can find further examples
which demonstrate how iceoryx can be used and describe our API in more detail.

Now that we have applications capable of sending and receiving data, we can run the complete iceoryx system.
Expand Down Expand Up @@ -148,7 +148,7 @@ Shared memory is physical memory that is made accessible to multiple processes v
virtual address spaces.

For further information have a look at our
[shared memory concept article](../../shared-memory-communication.md).
[shared memory concept article](https://github.com/eclipse-iceoryx/iceoryx/blob/v3.0.0/doc/shared-memory-communication.md).

### Runtime

Expand Down Expand Up @@ -235,7 +235,7 @@ to process local constructs, no dynamic allocators

!!! info
Most of the STL types cannot be used, but some are reimplemented to meet the conditions above.
You can find an overview [here](../../../iceoryx_hoofs/README.md#cxx).
You can find an overview [here](../advanced/iceoryx_hoofs.md#cxx).

### Publisher

Expand Down Expand Up @@ -304,7 +304,7 @@ The WaitSet uses the [reactor pattern](https://en.wikipedia.org/wiki/Reactor_pat
strategy that one of the attached events occured at which it informs the user.

For more information on how to use the WaitSet see our
[WaitSet examples](../../../iceoryx_examples/waitset).
[WaitSet examples](../examples/waitset.md).

### Listener

Expand All @@ -326,13 +326,13 @@ connected callback that creates and sends a response, is executed.
Like the WaitSet, the Listener uses the reactor pattern.

For more information about the Listener see our
[callbacks example](../../../iceoryx_examples/callbacks).
[callbacks example](../examples/callbacks.md).

## API

The API is offered in two languages, C++ and C. Detailed information can be found in the
[C++ example](../../../iceoryx_examples/icedelivery) and
[C example](../../../iceoryx_examples/icedelivery_in_c).
[C++ example](../examples/icedelivery.md) and
[C example](../examples/icedelivery_in_c.md).

Many parts of the C++ API follow a functional programming approach which is less error-prone. This requires using
the monadic types `iox::expected` and `iox::optional` which are introduced
Expand Down
2 changes: 1 addition & 1 deletion iceoryx_examples/callbacks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ You just have to provide a reference to a value as additional argument in the `a
which is then provided as argument in your callback. One of the use cases is to get access
to members and methods of an object inside a static method which we demonstrate here.

This example is identical to the [ice_callbacks_subscriber.cpp](#ice_callbacks_subscriber.cpp)
This example is identical to the [ice_callbacks_subscriber.cpp](#ice_callbacks_subscribercpp)
one, except that we left out the cyclic heartbeat trigger. The key difference is that
the listener is now a class member and in every callback we would like to change
some member variables. For this we require an additional pointer to the object
Expand Down
2 changes: 1 addition & 1 deletion iceoryx_examples/callbacks_in_c/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ within the callback. To facilitate this we provide the functions called
additional void pointer for the callback as second argument.

The following example is a simplified version of the
[ice_c_callbacks_subscriber.c](#ice_c_callbacks_subscriber.c) example where we
[ice_c_callbacks_subscriber.c](#ice_c_callbacks_subscriberc) example where we
removed the cyclic heartbeat trigger. The key difference is that we have
a local variable called `counterService` in which we store the `leftCache`
and `rightCache` and we let the callback update that variable directly.
Expand Down
Loading
Loading