Expand description

The MAVLink message set.

Message sets and the Message trait

Each message set has its own module with corresponding data types, including a MavMessage enum that represents all possible messages in that message set. The Message trait is used to represent messages in an abstract way, and each MavMessage enum implements this trait (for example, ardupilotmega::MavMessage). This is then monomorphized to the specific message set you are using in your application at compile-time via type parameters. If you expect ArduPilotMega-flavored messages, then you will need a MavConnection<ardupilotmega::MavMessage> and you will receive ardupilotmega::MavMessages from it.

Some message sets include others. For example, all message sets except common include the common message set. This is represented with extra values in the MavMessage enum: a message in the common message set received on an ArduPilotMega connection will be an ardupilotmega::MavMessage::common(common::MavMessage).

Please note that if you want to enable a given message set, you must also enable the feature for the message sets that it includes. For example, you cannot use the ardupilotmega feature without also using the uavionix and icarous features.



Encapsulation of the Mavlink message and the header, important to preserve information about the sender system and component id

Metadata from a MAVLink packet header


Versions of the Mavlink protocol that we support


Message framing marker for mavlink v1

Message framing marker for mavlink v2


A MAVLink connection


Connect to a MAVLink node by address string.

Read a MAVLink v1 message from a Read stream.

Read a MAVLink v2 message from a Read stream.

Write a MAVLink v1 message to a Write stream.

Write a MAVLink v2 message to a Write stream.

Write a message using the given mavlink version