A MAVLink generator with a permissive MIT license. This project is for a MAVLink generator ONLY. No additional features or tools will be included in this project.
Language | Generator Status | Notes |
---|---|---|
C | 40% | |
Python | 10% | |
Graphviz | 100% | Generates message structure diagrams for documentation |
Embedded C++ | 20% | C++ implementation with no STL or dynamic allocation |
ReStructuredText | 95% | Sphinx-compatible RST docs of messages that can also utilize the dot files produced by the graphviz generator |
- Capable of generation based on complex include trees
- Simple, lean helper methods within generated code
- Thorough unit tests
- Versioned releases
One feature I've wanted in pymavlink for quite some time is the ability to generate mavlink code from more advanced include trees, such as the one below.
Such support allows developers to better isolate specific modules of a MAVLink message system. Thus avoiding large, hard to navigate definition files.
Stuff about parsing based on char arrays instead of single character
Thorough tests on both the generator and the generated code mean user can have assurances the library will work as expected with every update
Proper release versioning means compatibility can break between major versions. This becomes increasingly important as the project ages to help keep code uncluttered and readable.
- yaml-based generation configuration
- Use
@dataclass
for python-generated message classes - generator option to only regen on CRC_EXTRA changes