From 45b0b4a64121b8345203dd6bbcdf7ab23c0127b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Wed, 2 Aug 2023 14:26:39 +0200 Subject: [PATCH] add README --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b002f6 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# 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 POSIX for file IO). +- 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 +```