Contributing

We welcome contributions to the project! This document outlines the process for contributing code, reporting issues, and suggesting improvements.

Setting Up Your Development Environment

We work with VS Code [1]. To set it up to contribute, follow these steps:

  1. Build the project

    Follow the instructions in the Build & Install section to build the project. It is important to build the project before setting up your development environment to ensure that VS Code can find the necessary include files.

  2. Set up VS Code:

    Add the following settings to your .vscode/settings.json:

    {
       "C_Cpp.codeAnalysis.clangTidy.enabled": true,
       "C_Cpp.codeAnalysis.clangTidy.useBuildPath": true,
       "C_Cpp.clang_format_fallbackStyle": "Google",
       "C_Cpp.codeAnalysis.exclude": {
          "**/extern/**": true,
          "**/build/**": true,
          "**/usr/include/**": true,
          "**/usr/lib/**": true
       },
       "[cpp]": {
          "editor.tabSize": 2
       },
       "[cuda-cpp]": {
          "editor.tabSize": 2
       },
       "search.exclude": {
          "**/.git": true,
          "**/extern": true,
          "**/doxyxml": true,
          "**/build": true,
          "**/html": true
       }
    }
    

    Make sure to install the C/C++ Extension Pack extension from the VS Code marketplace.

  3. Create the ``.vscode/c_cpp_properties.json`` file:

    {
       "configurations": [
          {
             "name": "Linux",
             "compileCommands": "${workspaceFolder}/build/compile_commands.json",
             "intelliSenseMode": "linux-gcc-x64",
             "cStandard": "c17",
             "cppStandard": "c++17"
          }
       ],
       "version": 4
    }
    

    This assumes that the cross compiler is installed in ~/tools/arm/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf. Update the path if necessary.

Reporting Issues

If you encounter any issues while using the project, please report them on the project’s issue tracker. Provide as much detail as possible, including steps to reproduce the issue, the expected behavior, and any relevant logs or screenshots.

Submitting Code

To submit code to the project, follow these steps:

  1. Fork the repository:

    Create a fork of the repository on GitLab.

  2. Create a new branch:

    git checkout -b my-feature-branch
    
  3. Make your changes:

    Ensure your code follows the project’s coding standards and includes appropriate tests.

  4. Commit your changes:

    git commit -m "Description of my changes"
    
  5. Push your changes:

    git push origin my-feature-branch
    
  6. Create a merge request:

    Open a merge request on GitLab and provide a detailed description of your changes.

Code Style

Please follow the project’s coding standards when contributing code. This includes using clang-format with the Google style and ensuring all code is properly documented.

Testing

Ensure that all tests pass before submitting your code. You can run the tests using the following command from within the doc directory:

python -m unittest discover

For further information on running tests, see the Tests section.

Thank you for contributing to the project!

Bibliography