Generating Source Files

Language-specific files can be generated using a Python script from the command line or via a GUI. The available languages for each version of the MAVLink protocol are listed in Introduction > Supported Languages (these include C, C#, Java, Python etc).

The tools must already have been set up as described in Getting Started > Installation section (in particular Tkinter must be installed to use the GUI tool).

Dialect XML 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 /message_definitions/v1.0/.

MAVLink Generator ( is a header generation tool GUI written in Python. It can be run from anywhere using Python's -m argument:

python -m mavgenerate

MAVLink Generator UI

Generator Steps:

  1. Choose the target XML file (typically in mavlink/message_definitions).
  2. Choose an output directory (e.g. mavlink/include).
  3. Select the target output programming language.
  4. Select the target MAVLink protocol version (ideally 2.0)

    Generation will fail if the protocol is not supported by the selected programming language.

  5. Optionally check Validate and/or Validate Units (if checked validates XML specifications).
  6. Click Generate to create the source files.

Mavgen (Command Line) 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 The documentation below explains all the options for both tools.

For example, to generate MAVLink 2 C libraries for the common.xml dialect:

python -m --lang=C --wire-protocol=2.0 --output=generated/include/mavlink/v2.0 message_definitions/v1.0/common.xml

The full syntax can be output by running mavgen with the -h flag (reproduced below):

usage: [-h] [-o OUTPUT]
                 [--lang {C,CS,JavaScript,Python,WLua,ObjC,Swift,Java,C++11}]
                 [--wire-protocol {0.9,1.0,2.0}] [--no-validate]
                 [--error-limit ERROR_LIMIT] [--strict-units]
                 XML [XML ...]

This tool generate implementations from MAVLink message definitions

positional arguments:
  XML                   MAVLink definitions

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        output directory.
  --lang {C,CS,JavaScript,Python,WLua,ObjC,Swift,Java,C++11}
                        language of generated code [default: Python]
  --wire-protocol {0.9,1.0,2.0}
                        MAVLink protocol version. [default: 1.0]
  --no-validate         Do not perform XML validation. Can speed up code
                        generation if XML files are known to be correct.
  --error-limit ERROR_LIMIT
                        maximum number of validation errors to display
  --strict-units        Perform validation of units attributes.

results matching ""

    No results matching ""