-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
58 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
``` |