Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

PX4/ulog_cpp

Open more actions menu

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

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.