/ulog_cpp

C++ library for reading and writing ULog files

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

C++ ULog Library

Streamed C++ ULog reader and writer library.

Properties

  • Options for keeping log data in memory or processing immediately.
  • Pure C++17 without additional dependencies (SimpleWriter requires POSIX for file IO).
  • The reader is ~10 times as fast compared to the python implementation. However, the API is more low-level, and if you're just looking for an easy-to-use parsing library, use pyulog.
  • Unsupported ULog features:
    • Appended data (DATA_APPENDED)
  • A little endian target machine is required (an error is thrown if this is not the case)
  • The reader keeps errors stored, so parsing can be continued and any errors can be read out at the end. The writer directly throws exceptions (ulog_cpp::ExceptionBase).

Examples

Check the examples subdirectory.

Include in a project

To add the library as a submodule with cmake, use the following steps:

git submodule add https://github.com/PX4/ulog_cpp.git ulog_cpp

Then extend your CMakeLists.txt with:

add_subdirectory(ulog_cpp)

target_link_libraries(YOUR_PROJECT PUBLIC
  ulog_cpp::ulog_cpp
)

Development

For development, install the pre-commit scripts:

pre-commit install

CI

CI runs a number of checks which can be executed locally with the following commands.

clang-tidy

cd build
make clang-tidy

Unit tests

cd build
make run-unit-tests

Linters (code formatting etc)

These run automatically when committing code. To manually run them, use:

pre-commit run -a