Nothing Special   »   [go: up one dir, main page]

Skip to content
/ ulog_cpp Public

C++ library for reading and writing ULog files

License

Notifications You must be signed in to change notification settings

PX4/ulog_cpp

Repository files navigation

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 platform-specific fsync/FlushFileBuffers).
  • 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