Language-specific MAVLink libraries ("source files") can be created from XML Message Definitions using Python-based command line or GUI generator tools. The supported output languages for each version of the MAVLink protocol are listed in Supported Languages (these include C, C#, Java, Python etc).
The tools must already have been set up as described in Install MAVLink (in particular Tkinter must be installed to use the GUI tool).
message_definitions/v1.0/ contains XML definitions for a number of different dialects. Dialect files that have dependencies on other XML files must be located in the same directory. Since most MAVLink dialects depend on the common.xml message set, you should place your dialect with the others in that folder.
MAVLink Generator (mavgenerate.py) is a header generation tool GUI written in Python. It can be run from anywhere using Python's
python -m mavgenerate
Choose the target XML file (typically in mavlink/message_definitions/1.0).
If using a custom dialect, first copy it into the above directory (if the dialect is dependent on common.xml it must be located in the same directory).
- Choose an output directory (e.g. mavlink/include).
- Select the target output programming language.
- Select the target MAVLink protocol version (ideally 2.0)
Generation will fail if the protocol is not supported by the selected programming language.
- Optionally check Validate and/or Validate Units (if checked validates XML specifications).
- Click Generate to create the source files.
mavgen.py is a command-line interface for generating a language-specific MAVLink library. After the
mavlink directory has been added to the
PYTHONPATH, it can be run by executing from the command line.
This is the backend used by mavgenerate.py. The documentation below explains all the options for both tools.
For example, to generate MAVLink 2 C libraries for a dialect named your_custom_dialect.xml:
python -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated/include/mavlink/v2.0 message_definitions/v1.0/your_custom_dialect.xml
The full syntax can be output by running mavgen with the
-h flag (reproduced below):