Thanks for your interest in contributing to adsblib. This document explains how to build the project, run the validation suite, and submit changes.
-Wall -Wextra -Werror.malloc/calloc/realloc in adsblib.c). This is a hard design constraint, not a style preference.adsblib.h minimal and documented with Doxygen comments.CHANGELOG.md following Keep a Changelog.Verify the build succeeded:
The independent C unit tests are the quickest local check and do not require Python or external packages:
Encoder correctness is validated through validation/encoder_validation.ipynb, which cross-checks adsblib's output against pyModeS — CRC, callsign, CPR, altitude, velocity (subsonic and supersonic), surface position, and stress tests.
The CI-ready integration command is the script version of this validation:
The notebook remains available as an interactive example with plots and expanded exploratory output.
The notebook loads adsblib through ctypes, so you must build the shared library before running it. It looks in the current directory and then the repository root:
Then run all cells (Run All / Restart & Run All). Notes:
adsblib.c/.h. ctypes.CDLL loads the shared library once per process; re-running "Run All" without restarting the kernel can silently keep testing the previous build. Use Kernel → Restart & Run All, not just Run All, whenever the library changed..dylib/.so is a local artifact (already covered by .gitignore) — don't commit it.If you'd rather run it headlessly instead of opening Jupyter (e.g. to sanity-check from a terminal or a script), nbclient executes the notebook end-to-end and writes the outputs back into the .ipynb:
If you add or change encoding behavior, extend the notebook with cases that cover it, including edge cases and invalid inputs, not just the happy path — see TEST 7/TEST 8 for the current examples of adding a new message type's cross-check.
adsblib.c / adsblib.h (tabs for indentation, braces on their own line).main.CHANGELOG.md under an [Unreleased] section describing your change.Please use the GitHub issue templates (bug report / feature request) when opening an issue. Include:
This project follows the Code of Conduct. By participating, you are expected to uphold it.