1. Before you start

1.1. About the Documentation

This documentation is continuously developed, corrected and improved to assist you in bringing CENA to bare on your use-cases and applications.

This documentation is rendered in HTML (and possibly other formats) using Sphinx, the documentations source code included with the CENA written in Markdown and reStructured text.

Feel free to contact us you have corrections, amendments or simply feedback on our documentation.

This documentation is intended as a guide, not a API reference document. This is provided as a separate set of HTML documentation produced by Doxygen.

1.1.1. Target audience

Within this documentation we assume that you are familiar with the C++ programming language. We also assume that you are not stranger to object orientation and common paradigms such as SOLID principles and that you are fluent in UML.

This documentation does not strive to be a programming tutorial and will not go into detail on how to configure and use linkers, libraries, projects, makefiles and other “tools of the trade”.

1.1.2. Notation

In this documentation, monospaced highlighting is used to denote class names or code constructs.

italic highlighting is used to denote names of components or conceptual units. Usage with names like ControlEngine is obvious, but when used e.g. as example this highlightling means that “example” will used to consistently refer to a specific concept.

If something is highlighted in bold, it is meant to draw your attention; either because it is really important or because it helps you quickly scan the document for context.

1.2. Prerequisites

To get started, you will need

  • A preinstalled and configured C++ toolchain for your target platform

    • Optionally - but highly advisable - is the use of a modern IDE with code introspection and integrated (remote) debugger

  • Either

    • A CMake based project of you own that uses CENA as a linkable dependency or

    • CENA and its source code (which is based on CMake itself)

We advise you get started on in a windows or linux environment for your convenience, though CENA is not in any way limited to these platforms.

1.2.1. Dependencies

Like any software, CENA comes with dependencies on third party tools.

Tip

Optional dependencies

Note that you do not need all the tools listed here; a somewhat modern CMake and C/C++ toolchain will suffice if you want to “just build binaries”.

To build this project from source, you will need:

  • CMake 3.16 or higher

  • A C Compiler supporting C99 or newer

  • A C++ Compiler supporting C++17 or newer

  • For generating source-code documentation (optional)

  • For generating tests (optional)

  • For generating coverage information (optional)

    • Depending on your compiler either

      • GCovr and LCov (GCC)

      • llvm-cov (LLVM/Clang)

  • For static code analysis (optional)

    • cppcheck

The software has the following package dependencies that need to be provided by the system

  • libc (for malloc, free, calloc…); may be provided by alternative to glibc, e.g. FreeRTOS