# ulog_cpp **Repository Path**: px4pilot/ulog_cpp ## Basic Information - **Project Name**: ulog_cpp - **Description**: No description available - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-27 - **Last Updated**: 2024-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ ULog Library Streamed C++ [ULog](https://docs.px4.io/main/en/dev_log/ulog_file_format.html) 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](https://github.com/PX4/pyulog). 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](examples) subdirectory. ## Include in a project To add the library as a submodule with cmake, use the following steps: ```shell git submodule add https://github.com/PX4/ulog_cpp.git ulog_cpp ``` Then extend your `CMakeLists.txt` with: ```cmake add_subdirectory(ulog_cpp) target_link_libraries(YOUR_PROJECT PUBLIC ulog_cpp::ulog_cpp ) ``` ## Development For development, install the pre-commit scripts: ```shell pre-commit install ``` ### CI CI runs a number of checks which can be executed locally with the following commands. #### clang-tidy ```shell cd build make clang-tidy ``` #### Unit tests ```shell cd build make run-unit-tests ``` #### Linters (code formatting etc) These run automatically when committing code. To manually run them, use: ```shell pre-commit run -a ```