Thanks to visit codestin.com
Credit goes to github.com

Skip to content

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

Using cmake FetchContent

To use the library with FetchContent in cmake, add the following to the CMakeLists.txt:

include(FetchContent)
FetchContent_Declare(
  ulog_cpp
  GIT_REPOSITORY https://github.com/PX4/ulog_cpp.git
  GIT_TAG v1.0.0
  SYSTEM
  EXCLUDE_FROM_ALL)

FetchContent_MakeAvailable(ulog_cpp)

target_link_libraries(YOUR_PROJECT PUBLIC
        ulog_cpp::ulog_cpp
)

As a submodule

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

About

C++ library for reading and writing ULog files

Resources

License

Stars

Watchers

Forks

Packages

No packages published