'Returns an object that can be used to create \'raw\' MAVLink messages that are appropriate for this vehicle.
The message can then be sent using :py:func:`send_mavlink(message) <dronekit.Vehicle.send_mavlink>`.
.. note::
Vehicles support a subset of the messages defined in the MAVLink standard. For more information
about the supported sets see wiki topics:
`Copter Commands in Guided Mode <http://dev.ardupilot.com/wiki/copter-commands-in-guided-mode/>`_
and `Plane Commands in Guided Mode <http://dev.ardupilot.com/wiki/plane-commands-in-guided-mode/>`_.
All message types are defined in the central MAVLink github repository.  For example, a Pixhawk understands
the following messages (from `pixhawk.xml <https://github.com/mavlink/mavlink/blob/master/message_definitions/v1.0/pixhawk.xml>`_):
.. code:: xml
<message id="153" name="IMAGE_TRIGGER_CONTROL">
<field type="uint8_t" name="enable">0 to disable, 1 to enable</field>
</message>
The name of the factory method will always be the lower case version of the message name with *_encode* appended.
Each field in the XML message definition must be listed as arguments to this factory method.  So for this example
message, the call would be:
.. code:: python
msg = vehicle.message_factory.image_trigger_control_encode(True)
vehicle.send_mavlink(msg)
Some message types include "addressing information". If present, there is no need to specify the ``target_system``
id (just set to zero) as DroneKit will automatically update messages with the correct ID for the connected
vehicle before sending.
The ``target_component`` should be set to 0 (broadcast) unless the message is to specific component.
CRC fields and sequence numbers (if defined in the message type) are automatically set by DroneKit and can also
be ignored/set to zero.
For more information see the guide topic: :ref:`guided_mode_how_to_send_commands`.'

@property
def message_factory(self):

    return self._master.mav
