Unverified Commit 2e033034 authored by Gus Grubba's avatar Gus Grubba Committed by GitHub
Browse files

Merge pull request #8272 from mavlink/pr-document

Code documentation and updates
parents ef5bfab7 cc74ecea
# -------------------------------------------------
# QGroundControl - Micro Air Vehicle Groundstation
# Please see our website at <http://qgroundcontrol.org>
# Maintainer:
# Lorenz Meier <lm@inf.ethz.ch>
# (c) 2009-2019 QGroundControl Developers
# License terms set in COPYING.md
# -------------------------------------------------
################################################################################
#
# (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
#
# QGroundControl is licensed according to the terms in the file
# COPYING.md in the root of the source code directory.
#
################################################################################
#
# This file contains configuration settings which are common to both the QGC Application and
......
################################################################################
#
# (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
#
# QGroundControl is licensed according to the terms in the file
# COPYING.md in the root of the source code directory.
#
################################################################################
#
# [REQUIRED] Add support for <inttypes.h> to Windows.
#
......
# -------------------------------------------------
# QGroundControl - Micro Air Vehicle Groundstation
# Please see our website at <http://qgroundcontrol.org>
# Maintainer:
# Lorenz Meier <lm@inf.ethz.ch>
# (c) 2009-2014 QGroundControl Developers
# License terms set in COPYING.md
# -------------------------------------------------
################################################################################
#
# (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
#
# QGroundControl is licensed according to the terms in the file
# COPYING.md in the root of the source code directory.
#
################################################################################
installer {
DEFINES += QGC_INSTALL_RELEASE
......
# -------------------------------------------------
# QGroundControl - Micro Air Vehicle Groundstation
# Please see our website at <http://qgroundcontrol.org>
# Maintainer:
# Lorenz Meier <lm@inf.ethz.ch>
# (c) 2009-2011 QGroundControl Developers
# License terms set in COPYING.md
# -------------------------------------------------
################################################################################
#
# (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
#
# QGroundControl is licensed according to the terms in the file
# COPYING.md in the root of the source code directory.
#
################################################################################
QMAKE_POST_LINK += echo "Copying files"
......
This diff is collapsed.
Linux/Mac OS X
==============
To install doxygen:
$sudo apt-get install doxygen
Mac OS X
========
To install doxygen and dot:
brew install doxygen dot
If the above does not work go to:
http://www.stack.nl/~dimitri/doxygen/download.html for the correct download.
Then go to the following website for inforamtion on the install:
http://www.stack.nl/~dimitri/doxygen/install.html
doxyqml:
https://github.com/agateau/doxyqml
$sudo pip3 install doxyqml
Then to generate the html, run the following code while you are in the qgroundcontrol/doc directory:
$doxygen Doxyfile
The html file index.html should be in doc/html unless you chenged the output directory.
The other option for generating the documentation is to use the wizard:
$doxywizard &
doxywizard information:
http://www.stack.nl/~dimitri/doxygen/doxywizard_usage.html
Or go to the Doxygen Manual for information at the website noted below.
Windows
=======
Go to the following website for the correct download and follow the wizard to install:
http://www.stack.nl/~dimitri/doxygen/download.html
Run the wizard to generate the documentation.
Go to the website below or the Doxygen Manual for information on running doxywizard.
http://www.stack.nl/~dimitri/doxygen/doxywizard_usage.html
Doxygen Manual
==============
http://www.stack.nl/~dimitri/doxygen/
The html file index.html should be in doc/html.
#! /bin/bash
# This hack is a wrapper to GraphViz dot that removes any nodes that
# are contained in the following list.
LABELS_TO_FILTER="QObject Item"
ARGS=$@
for ARG in ${ARGS}
do
if [ -e ${ARG} ]
then
FILENAME=$(basename "${ARG}")
EXT="${FILENAME##*.}"
if [ ${EXT} == "dot" ]
then
DOT_FILE=${ARG}
for LABEL_TO_FILTER in ${LABELS_TO_FILTER}
do
NODE_NAME=$(grep "label=\"${LABEL_TO_FILTER}\"" ${DOT_FILE} | awk '{print $1}')
if [[ ! -z "${NODE_NAME}" ]]
then
echo "${NODE_NAME} is labelled ${LABEL_TO_FILTER}, filtering..."
sed -i -e "/${NODE_NAME}/d" ${DOT_FILE}
fi
done
break
fi
fi
done
/usr/local/bin/dot ${ARGS}
<!-- HTML header for doxygen 1.8.16-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo" style="width:64px;height:64px;"/></td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;">
<div style="font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px;">$projectname
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
<!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF-->
<td style="padding-left: 0.5em;">
<div id="projectbrief">$projectbrief</div>
</td>
<!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME-->
<!--BEGIN DISABLE_INDEX-->
<!--BEGIN SEARCHENGINE-->
<td>$searchbox</td>
<!--END SEARCHENGINE-->
<!--END DISABLE_INDEX-->
</tr>
</tbody>
</table>
</div>
<!--END TITLEAREA-->
<!-- end header part -->
# Link Management
The LinkManager creates, configures and maintains communication links. Links are created either through the user
interface or programmatically. The LinkConfiguration base classs defines the means to configure a given link
while the LinkInterface exposes the link itself.
Link specializations such as UDPLink, TCPLink, SerialLink, etc. are implemented in their own derived classes as well
as their equivalent configuration derivations such as UDPConfiguration, TCPConfiguration, SerialConfiguration, etc.
Links are primarily responsible to send and receive (MAVLink) data to and from a vehicle. When data arrives, the link will emit a
LinkInterface::bytesReceived signal and when data needs to be sent back to a vehicle, the code uses its
LinkInterface::writeBytesSafe method.
<div align="center">
<img src="../links.svg" style="width:80%; height=auto;">
</div>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="39.94 147.94 656.5 346" width="656.5" height="346">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="39.94" y="147.94">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(342 153) rotate(90) scale(90)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(135 274.5) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(342 274.5) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(342 396) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient" gradientTransform="translate(135 396) rotate(90) scale(90)"/>
<font-face font-family="Helvetica Neue" font-size="12" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9691"/>
<stop offset=".45238096" stop-color="#eb7e79"/>
<stop offset="1" stop-color="#d56560"/>
</linearGradient>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient_2" gradientTransform="translate(471.00007 479.8125) rotate(-90) scale(27)"/>
<linearGradient x1="0" x2="1" id="Gradient_3" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#54ba6b"/>
<stop offset=".45238096" stop-color="#6dd98a"/>
<stop offset="1" stop-color="#84f8a8"/>
</linearGradient>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient_3" gradientTransform="translate(471.00007 402.1875) rotate(90) scale(27)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L -4 3 L 0 0 L -4 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L 0 3 L 0 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledDiamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 4 -3 L 0 0 L 4 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 19:58:23 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_2" filter="url(#Shadow)">
<path d="M 261 153 L 423 153 C 427.97056 153 432 157.02944 432 162 L 432 234 C 432 238.97056 427.97056 243 423 243 L 261 243 C 256.02944 243 252 238.97056 252 234 L 252 162 C 252 157.02944 256.02944 153 261 153 Z" fill="url(#Obj_Gradient)"/>
<path d="M 261 153 L 423 153 C 427.97056 153 432 157.02944 432 162 L 432 234 C 432 238.97056 427.97056 243 423 243 L 261 243 C 256.02944 243 252 238.97056 252 234 L 252 162 C 252 157.02944 256.02944 153 261 153 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 191)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="45.393555" y="11">LinkManager</tspan>
</text>
</g>
<g id="Graphic_6" filter="url(#Shadow)">
<path d="M 54 274.5 L 216 274.5 C 220.97056 274.5 225 278.52944 225 283.5 L 225 355.5 C 225 360.47056 220.97056 364.5 216 364.5 L 54 364.5 C 49.02944 364.5 45 360.47056 45 355.5 L 45 283.5 C 45 278.52944 49.02944 274.5 54 274.5 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 54 274.5 L 216 274.5 C 220.97056 274.5 225 278.52944 225 283.5 L 225 355.5 C 225 360.47056 220.97056 364.5 216 364.5 L 54 364.5 C 49.02944 364.5 45 360.47056 45 355.5 L 45 283.5 C 45 278.52944 49.02944 274.5 54 274.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(50 312.5)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="23.79004" y="11">LinkConfiguration</tspan>
</text>
</g>
<g id="Graphic_9" filter="url(#Shadow)">
<path d="M 261 274.5 L 423 274.5 C 427.97056 274.5 432 278.52944 432 283.5 L 432 355.5 C 432 360.47056 427.97056 364.5 423 364.5 L 261 364.5 C 256.02944 364.5 252 360.47056 252 355.5 L 252 283.5 C 252 278.52944 256.02944 274.5 261 274.5 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 261 274.5 L 423 274.5 C 427.97056 274.5 432 278.52944 432 283.5 L 432 355.5 C 432 360.47056 427.97056 364.5 423 364.5 L 261 364.5 C 256.02944 364.5 252 360.47056 252 355.5 L 252 283.5 C 252 278.52944 256.02944 274.5 261 274.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 312.5)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="11">LinkInterface</tspan>
</text>
</g>
<g id="Graphic_11" filter="url(#Shadow)">
<path d="M 261 396 L 423 396 C 427.97056 396 432 400.02944 432 405 L 432 477 C 432 481.97056 427.97056 486 423 486 L 261 486 C 256.02944 486 252 481.97056 252 477 L 252 405 C 252 400.02944 256.02944 396 261 396 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 261 396 L 423 396 C 427.97056 396 432 400.02944 432 405 L 432 477 C 432 481.97056 427.97056 486 423 486 L 261 486 C 256.02944 486 252 481.97056 252 477 L 252 405 C 252 400.02944 256.02944 396 261 396 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 434)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="59.7959" y="11">UDPLink</tspan>
</text>
</g>
<g id="Graphic_13" filter="url(#Shadow)">
<path d="M 54 396 L 216 396 C 220.97056 396 225 400.02944 225 405 L 225 477 C 225 481.97056 220.97056 486 216 486 L 54 486 C 49.02944 486 45 481.97056 45 477 L 45 405 C 45 400.02944 49.02944 396 54 396 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 54 396 L 216 396 C 220.97056 396 225 400.02944 225 405 L 225 477 C 225 481.97056 220.97056 486 216 486 L 54 486 C 49.02944 486 45 481.97056 45 477 L 45 405 C 45 400.02944 49.02944 396 54 396 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(50 434)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="27.390625" y="11">UDPConfiguration</tspan>
</text>
</g>
<g id="Group_50">
<g id="Graphic_14" filter="url(#Shadow)">
<path d="M 517.5 396.5625 L 679.5 396.5625 C 684.4706 396.5625 688.5 400.59194 688.5 405.5625 L 688.5 425.8125 C 688.5 430.78306 684.4706 434.8125 679.5 434.8125 L 517.5 434.8125 C 512.52944 434.8125 508.5 430.78306 508.5 425.8125 L 508.5 405.5625 C 508.5 400.59194 512.52944 396.5625 517.5 396.5625 Z" fill="#c0ffc0"/>
<path d="M 517.5 396.5625 L 679.5 396.5625 C 684.4706 396.5625 688.5 400.59194 688.5 405.5625 L 688.5 425.8125 C 688.5 430.78306 684.4706 434.8125 679.5 434.8125 L 517.5 434.8125 C 512.52944 434.8125 508.5 430.78306 508.5 425.8125 L 508.5 405.5625 C 508.5 400.59194 512.52944 396.5625 517.5 396.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(513.5 401.5195)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="25.336">bytesReceived</tspan>
</text>
</g>
<g id="Graphic_15" filter="url(#Shadow)">
<path d="M 517.5 447.1875 L 679.5 447.1875 C 684.4706 447.1875 688.5 451.21694 688.5 456.1875 L 688.5 476.4375 C 688.5 481.40806 684.4706 485.4375 679.5 485.4375 L 517.5 485.4375 C 512.52944 485.4375 508.5 481.40806 508.5 476.4375 L 508.5 456.1875 C 508.5 451.21694 512.52944 447.1875 517.5 447.1875 Z" fill="#ffc0c0"/>
<path d="M 517.5 447.1875 L 679.5 447.1875 C 684.4706 447.1875 688.5 451.21694 688.5 456.1875 L 688.5 476.4375 C 688.5 481.40806 684.4706 485.4375 679.5 485.4375 L 517.5 485.4375 C 512.52944 485.4375 508.5 481.40806 508.5 476.4375 L 508.5 456.1875 C 508.5 451.21694 512.52944 447.1875 517.5 447.1875 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(513.5 452.1445)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="64.324" y="11">Method</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="34.591797" y="25.336">writeBytesSafe</tspan>
</text>
</g>
<g id="Graphic_16" filter="url(#Shadow)">
<path d="M 498.75013 459.5625 L 498.75013 473.0625 L 463.25 473.0625 L 463.25 479.8125 L 443.25 466.3125 L 463.25 452.8125 L 463.25 459.5625 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 498.75013 459.5625 L 498.75013 473.0625 L 463.25 473.0625 L 463.25 479.8125 L 443.25 466.3125 L 463.25 452.8125 L 463.25 459.5625 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_17" filter="url(#Shadow)">
<path d="M 443.25 422.4375 L 443.25 408.9375 L 478.7501 408.9375 L 478.7501 402.1875 L 498.75013 415.6875 L 478.7501 429.1875 L 478.7501 422.4375 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 443.25 422.4375 L 443.25 408.9375 L 478.7501 408.9375 L 478.7501 402.1875 L 498.75013 415.6875 L 478.7501 429.1875 L 478.7501 422.4375 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_43">
<line x1="342" y1="252.25" x2="342" y2="274.5" marker-start="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_45">
<line x1="135" y1="374.4" x2="135" y2="396" marker-start="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_46">
<line x1="342" y1="374.4" x2="342" y2="396" marker-start="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_47">
<line x1="225" y1="441" x2="242.75" y2="441" marker-end="url(#FilledDiamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_49">
<line x1="225" y1="319.5" x2="242.75" y2="319.5" marker-end="url(#FilledDiamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="62.44 1241.44 625 427" width="625" height="427">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="62.44" y="1241.44">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(182.25 1608.75) rotate(90) scale(51.75)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(182.25 1434.375) rotate(90) scale(51.75)"/>
<font-face font-family="Helvetica Neue" font-size="10" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(130.5 1521.5625) rotate(90) scale(51.75)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(483.75 1434.375) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient" gradientTransform="translate(483.75 1608.75) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient" gradientTransform="translate(649.125 1345.5) rotate(90) scale(315)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 4 -3 L 0 0 L 4 3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient" gradientTransform="translate(483.75 1521.5625) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_8" xl:href="#Gradient" gradientTransform="translate(319.5 1521.5625) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_9" xl:href="#Gradient" gradientTransform="translate(483.75 1345.5) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_10" xl:href="#Gradient" gradientTransform="translate(319.5 1345.5) rotate(90) scale(51.75)"/>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 21:29:41 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_51" filter="url(#Shadow)">
<path d="M 128.25 1608.75 L 236.25 1608.75 C 241.22056 1608.75 245.25 1612.7794 245.25 1617.75 L 245.25 1651.5 C 245.25 1656.4706 241.22056 1660.5 236.25 1660.5 L 128.25 1660.5 C 123.27944 1660.5 119.25 1656.4706 119.25 1651.5 L 119.25 1617.75 C 119.25 1612.7794 123.27944 1608.75 128.25 1608.75 Z" fill="url(#Obj_Gradient)"/>
<path d="M 128.25 1608.75 L 236.25 1608.75 C 241.22056 1608.75 245.25 1612.7794 245.25 1617.75 L 245.25 1651.5 C 245.25 1656.4706 241.22056 1660.5 236.25 1660.5 L 128.25 1660.5 C 123.27944 1660.5 119.25 1656.4706 119.25 1651.5 L 119.25 1617.75 C 119.25 1612.7794 123.27944 1608.75 128.25 1608.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(124.25 1627.625)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="32.7959" y="11">Vehicle</tspan>
</text>
</g>
<g id="Graphic_52" filter="url(#Shadow)">
<path d="M 128.25 1434.375 L 236.25 1434.375 C 241.22056 1434.375 245.25 1438.4044 245.25 1443.375 L 245.25 1477.125 C 245.25 1482.0956 241.22056 1486.125 236.25 1486.125 L 128.25 1486.125 C 123.27944 1486.125 119.25 1482.0956 119.25 1477.125 L 119.25 1443.375 C 119.25 1438.4044 123.27944 1434.375 128.25 1434.375 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 128.25 1434.375 L 236.25 1434.375 C 241.22056 1434.375 245.25 1438.4044 245.25 1443.375 L 245.25 1477.125 C 245.25 1482.0956 241.22056 1486.125 236.25 1486.125 L 128.25 1486.125 C 123.27944 1486.125 119.25 1482.0956 119.25 1477.125 L 119.25 1443.375 C 119.25 1438.4044 123.27944 1434.375 128.25 1434.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(124.25 1453.25)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="11.192383" y="11">LinkInterface</tspan>
</text>
</g>
<g id="Graphic_54" filter="url(#Shadow)">
<circle cx="182.25" cy="1279.125" r="32.6250521315494" fill="#a2fba2"/>
<circle cx="182.25" cy="1279.125" r="32.6250521315494" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(154.625 1264.845)" fill="black">
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="5.585" y="12">Telemetry</tspan>
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="18.36" y="26.28">Link</tspan>
</text>
</g>
<g id="Graphic_55" filter="url(#Shadow)">
<path d="M 76.5 1521.5625 L 184.5 1521.5625 C 189.47056 1521.5625 193.5 1525.592 193.5 1530.5625 L 193.5 1564.3125 C 193.5 1569.283 189.47056 1573.3125 184.5 1573.3125 L 76.5 1573.3125 C 71.52944 1573.3125 67.5 1569.283 67.5 1564.3125 L 67.5 1530.5625 C 67.5 1525.592 71.52944 1521.5625 76.5 1521.5625 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 76.5 1521.5625 L 184.5 1521.5625 C 189.47056 1521.5625 193.5 1525.592 193.5 1530.5625 L 193.5 1564.3125 C 193.5 1569.283 189.47056 1573.3125 184.5 1573.3125 L 76.5 1573.3125 C 71.52944 1573.3125 67.5 1569.283 67.5 1564.3125 L 67.5 1530.5625 C 67.5 1525.592 71.52944 1521.5625 76.5 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(72.5 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="3.991211" y="11">MAVLinkProtocol</tspan>
</text>
</g>
<g id="Line_56">
<line x1="182.25" y1="1321.65" x2="182.25" y2="1424.475" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_57">
<line x1="150.75" y1="1486.125" x2="135.41178" y2="1512.9669" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_58">
<line x1="130.5" y1="1573.3125" x2="145.83822" y2="1600.1544" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_59">
<line x1="213.75" y1="1608.75" x2="213.75" y2="1496.025" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_61" filter="url(#Shadow)">
<path d="M 411.75 1434.375 L 555.75 1434.375 C 560.72056 1434.375 564.75 1438.4044 564.75 1443.375 L 564.75 1477.125 C 564.75 1482.0956 560.72056 1486.125 555.75 1486.125 L 411.75 1486.125 C 406.77944 1486.125 402.75 1482.0956 402.75 1477.125 L 402.75 1443.375 C 402.75 1438.4044 406.77944 1434.375 411.75 1434.375 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 411.75 1434.375 L 555.75 1434.375 C 560.72056 1434.375 564.75 1438.4044 564.75 1443.375 L 564.75 1477.125 C 564.75 1482.0956 560.72056 1486.125 555.75 1486.125 L 411.75 1486.125 C 406.77944 1486.125 402.75 1482.0956 402.75 1477.125 L 402.75 1443.375 C 402.75 1438.4044 406.77944 1434.375 411.75 1434.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1453.25)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="36.393555" y="11">LinkManager</tspan>
</text>
</g>
<g id="Graphic_62" filter="url(#Shadow)">
<path d="M 411.75 1608.75 L 555.75 1608.75 C 560.72056 1608.75 564.75 1612.7794 564.75 1617.75 L 564.75 1651.5 C 564.75 1656.4706 560.72056 1660.5 555.75 1660.5 L 411.75 1660.5 C 406.77944 1660.5 402.75 1656.4706 402.75 1651.5 L 402.75 1617.75 C 402.75 1612.7794 406.77944 1608.75 411.75 1608.75 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 411.75 1608.75 L 555.75 1608.75 C 560.72056 1608.75 564.75 1612.7794 564.75 1617.75 L 564.75 1651.5 C 564.75 1656.4706 560.72056 1660.5 555.75 1660.5 L 411.75 1660.5 C 406.77944 1660.5 402.75 1656.4706 402.75 1651.5 L 402.75 1617.75 C 402.75 1612.7794 406.77944 1608.75 411.75 1608.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1627.625)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="7.588867" y="11">MultiVehicleManager</tspan>
</text>
</g>
<g id="Graphic_63" filter="url(#Shadow)">
<path d="M 627.75 1345.5 L 670.5 1345.5 C 675.4706 1345.5 679.5 1349.5294 679.5 1354.5 L 679.5 1651.5 C 679.5 1656.4706 675.4706 1660.5 670.5 1660.5 L 627.75 1660.5 C 622.77944 1660.5 618.75 1656.4706 618.75 1651.5 L 618.75 1354.5 C 618.75 1349.5294 622.77944 1345.5 627.75 1345.5 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 627.75 1345.5 L 670.5 1345.5 C 675.4706 1345.5 679.5 1349.5294 679.5 1354.5 L 679.5 1651.5 C 679.5 1656.4706 675.4706 1660.5 670.5 1660.5 L 627.75 1660.5 C 622.77944 1660.5 618.75 1656.4706 618.75 1651.5 L 618.75 1354.5 C 618.75 1349.5294 622.77944 1345.5 627.75 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(623.75 1496)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="18.173828" y="11">UI</tspan>
</text>
</g>
<g id="Line_64">
<line x1="245.25" y1="1460.25" x2="393.5" y2="1460.25" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_65">
<line x1="245.25" y1="1634.625" x2="393.5" y2="1634.625" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_66">
<line x1="574.4419" y1="1462.2691" x2="609.0581" y2="1469.4809" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_67">
<line x1="572.908" y1="1629.0164" x2="610.592" y2="1603.1086" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_68" filter="url(#Shadow)">
<path d="M 411.75 1521.5625 L 555.75 1521.5625 C 560.72056 1521.5625 564.75 1525.592 564.75 1530.5625 L 564.75 1564.3125 C 564.75 1569.283 560.72056 1573.3125 555.75 1573.3125 L 411.75 1573.3125 C 406.77944 1573.3125 402.75 1569.283 402.75 1564.3125 L 402.75 1530.5625 C 402.75 1525.592 406.77944 1521.5625 411.75 1521.5625 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 411.75 1521.5625 L 555.75 1521.5625 C 560.72056 1521.5625 564.75 1525.592 564.75 1530.5625 L 564.75 1564.3125 C 564.75 1569.283 560.72056 1573.3125 555.75 1573.3125 L 411.75 1573.3125 C 406.77944 1573.3125 402.75 1569.283 402.75 1564.3125 L 402.75 1530.5625 C 402.75 1525.592 406.77944 1521.5625 411.75 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="18.390625" y="11">QGCCameraManager</tspan>
</text>
</g>
<g id="Graphic_69" filter="url(#Shadow)">
<path d="M 265.5 1521.5625 L 373.5 1521.5625 C 378.47056 1521.5625 382.5 1525.592 382.5 1530.5625 L 382.5 1564.3125 C 382.5 1569.283 378.47056 1573.3125 373.5 1573.3125 L 265.5 1573.3125 C 260.52944 1573.3125 256.5 1569.283 256.5 1564.3125 L 256.5 1530.5625 C 256.5 1525.592 260.52944 1521.5625 265.5 1521.5625 Z" fill="url(#Obj_Gradient_8)"/>
<path d="M 265.5 1521.5625 L 373.5 1521.5625 C 378.47056 1521.5625 382.5 1525.592 382.5 1530.5625 L 382.5 1564.3125 C 382.5 1569.283 378.47056 1573.3125 373.5 1573.3125 L 265.5 1573.3125 C 260.52944 1573.3125 256.5 1569.283 256.5 1564.3125 L 256.5 1530.5625 C 256.5 1525.592 260.52944 1521.5625 265.5 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(261.5 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x=".390625" y="11">QGCCameraControl</tspan>
</text>
</g>
<g id="Line_70">
<line x1="382.5" y1="1547.4375" x2="393.5" y2="1547.4375" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_71">
<line x1="319.5" y1="1573.3125" x2="253.00023" y2="1616.6381" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_72">
<line x1="574.37754" y1="1545.1309" x2="609.12246" y2="1536.8066" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_75" filter="url(#Shadow)">
<path d="M 411.75 1345.5 L 555.75 1345.5 C 560.72056 1345.5 564.75 1349.5294 564.75 1354.5 L 564.75 1388.25 C 564.75 1393.2206 560.72056 1397.25 555.75 1397.25 L 411.75 1397.25 C 406.77944 1397.25 402.75 1393.2206 402.75 1388.25 L 402.75 1354.5 C 402.75 1349.5294 406.77944 1345.5 411.75 1345.5 Z" fill="url(#Obj_Gradient_9)"/>
<path d="M 411.75 1345.5 L 555.75 1345.5 C 560.72056 1345.5 564.75 1349.5294 564.75 1354.5 L 564.75 1388.25 C 564.75 1393.2206 560.72056 1397.25 555.75 1397.25 L 411.75 1397.25 C 406.77944 1397.25 402.75 1393.2206 402.75 1388.25 L 402.75 1354.5 C 402.75 1349.5294 406.77944 1345.5 411.75 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1364.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="32.79297" y="11">VideoManager</tspan>
</text>
</g>
<g id="Graphic_74" filter="url(#Shadow)">
<path d="M 265.5 1345.5 L 373.5 1345.5 C 378.47056 1345.5 382.5 1349.5294 382.5 1354.5 L 382.5 1388.25 C 382.5 1393.2206 378.47056 1397.25 373.5 1397.25 L 265.5 1397.25 C 260.52944 1397.25 256.5 1393.2206 256.5 1388.25 L 256.5 1354.5 C 256.5 1349.5294 260.52944 1345.5 265.5 1345.5 Z" fill="url(#Obj_Gradient_10)"/>
<path d="M 265.5 1345.5 L 373.5 1345.5 C 378.47056 1345.5 382.5 1349.5294 382.5 1354.5 L 382.5 1388.25 C 382.5 1393.2206 378.47056 1397.25 373.5 1397.25 L 265.5 1397.25 C 260.52944 1397.25 256.5 1393.2206 256.5 1388.25 L 256.5 1354.5 C 256.5 1349.5294 260.52944 1345.5 265.5 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(261.5 1364.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="11.192383" y="11">VideoReceiver</tspan>
</text>
</g>
<g id="Line_73">
<line x1="382.5" y1="1371.375" x2="393.5" y2="1371.375" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_76" filter="url(#Shadow)">
<circle cx="319.5" cy="1279.125" r="32.6250521315494" fill="#a2fba2"/>
<circle cx="319.5" cy="1279.125" r="32.6250521315494" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(291.875 1264.845)" fill="black">
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="14.94" y="12">Video</tspan>
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="18.36" y="26.28">Link</tspan>
</text>
</g>
<g id="Line_77">
<line x1="319.5" y1="1311.75" x2="319.5" y2="1335.6" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_78">
<line x1="572.908" y1="1376.9836" x2="610.592" y2="1402.8914" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>
QGroundControl Architecture Documentation {#mainpage}
=========================================
#### High Level Diagram
<div align="center">
<img src="../qgcmain.svg" style="width:80%; height=auto;">
</div>
* [Link Management](links.md)
* [Vehicle Management](vehicleMgmt.md)
# Vehicle Management
The singleton MAVLinkProtocol implements the target slot for all LinkInterface::bytesReceived signals. As data is received, it parses and builds MAVLink messages.
All messages are then sent through a MAVLinkProcotol::messageReceived signal. In addition, when it detects a heartbeat message,
it emits MAVLinkProcotol::vehicleHeartbeatInfo signals.
The singleton MultiVehicleManager is responsible for creating and maintaining instances of the Vehicle class. When it receives a MAVLinkProcotol::vehicleHeartbeatInfo
signal for the first time, it creates a vehicle instance, recording the vehicle ID and the link used.
The Vehicle class holds all the functionality to handle vehicles. It receives all messages sent from the vehicle and manages all messages and commands to that vehicle.
<div align="center">
<img src="../vehicleMgmt.svg" style="width:80%; height=auto;">
</div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="-2.81 667.69 720.2501 425" width="720.2501" height="425">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="-2.81" y="667.69">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(358.50003 672.75) rotate(90) scale(90)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<font-face font-family="Helvetica Neue" font-size="12" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9691"/>
<stop offset=".45238096" stop-color="#eb7e79"/>
<stop offset="1" stop-color="#d56560"/>
</linearGradient>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient_2" gradientTransform="translate(225.75007 731.25) rotate(-90) scale(27)"/>
<linearGradient x1="0" x2="1" id="Gradient_3" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#54ba6b"/>
<stop offset=".45238096" stop-color="#6dd98a"/>
<stop offset="1" stop-color="#84f8a8"/>
</linearGradient>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient_3" gradientTransform="translate(489.00007 678.375) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(358.50003 831.375) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient_3" gradientTransform="translate(489.00007 730.125) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient_2" gradientTransform="translate(221.99993 862.875) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient" gradientTransform="translate(358.50003 994.75) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_8" xl:href="#Gradient_2" gradientTransform="translate(221.99993 1026.25) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_9" xl:href="#Gradient_3" gradientTransform="translate(489.00007 1026.25) rotate(90) scale(27)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L -4 3 L 0 0 L -4 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 20:02:31 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_20" filter="url(#Shadow)">
<path d="M 277.50003 672.75 L 439.50003 672.75 C 444.4706 672.75 448.50003 676.7794 448.50003 681.75 L 448.50003 753.75 C 448.50003 758.7206 444.4706 762.75 439.50003 762.75 L 277.50003 762.75 C 272.52947 762.75 268.50003 758.7206 268.50003 753.75 L 268.50003 681.75 C 268.50003 676.7794 272.52947 672.75 277.50003 672.75 Z" fill="url(#Obj_Gradient)"/>
<path d="M 277.50003 672.75 L 439.50003 672.75 C 444.4706 672.75 448.50003 676.7794 448.50003 681.75 L 448.50003 753.75 C 448.50003 758.7206 444.4706 762.75 439.50003 762.75 L 277.50003 762.75 C 272.52947 762.75 268.50003 758.7206 268.50003 753.75 L 268.50003 681.75 C 268.50003 676.7794 272.52947 672.75 277.50003 672.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 710.75)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="11">MAVLinkProtocol</tspan>
</text>
</g>
<g id="Graphic_22" filter="url(#Shadow)">
<path d="M 11.25 697.5 L 173.25 697.5 C 178.22056 697.5 182.25 701.5294 182.25 706.5 L 182.25 726.75 C 182.25 731.7206 178.22056 735.75 173.25 735.75 L 11.25 735.75 C 6.279437 735.75 2.25 731.7206 2.25 726.75 L 2.25 706.5 C 2.25 701.5294 6.279437 697.5 11.25 697.5 Z" fill="#ffc0c0"/>
<path d="M 11.25 697.5 L 173.25 697.5 C 178.22056 697.5 182.25 701.5294 182.25 706.5 L 182.25 726.75 C 182.25 731.7206 178.22056 735.75 173.25 735.75 L 11.25 735.75 C 6.279437 735.75 2.25 731.7206 2.25 726.75 L 2.25 706.5 C 2.25 701.5294 6.279437 697.5 11.25 697.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 702.457)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="25.336">bytesReceived</tspan>
</text>
</g>
<g id="Graphic_21" filter="url(#Shadow)">
<path d="M 198 711 L 198 724.5 L 233.50013 724.5 L 233.50013 731.25 L 253.50013 717.75 L 233.50013 704.25 L 233.50013 711 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 198 711 L 198 724.5 L 233.50013 724.5 L 233.50013 731.25 L 253.50013 717.75 L 233.50013 704.25 L 233.50013 711 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_24" filter="url(#Shadow)">
<path d="M 537.75 672.75 L 699.75 672.75 C 704.7206 672.75 708.75 676.7794 708.75 681.75 L 708.75 702 C 708.75 706.9706 704.7206 711 699.75 711 L 537.75 711 C 532.77944 711 528.75 706.9706 528.75 702 L 528.75 681.75 C 528.75 676.7794 532.77944 672.75 537.75 672.75 Z" fill="#c0ffc0"/>
<path d="M 537.75 672.75 L 699.75 672.75 C 704.7206 672.75 708.75 676.7794 708.75 681.75 L 708.75 702 C 708.75 706.9706 704.7206 711 699.75 711 L 537.75 711 C 532.77944 711 528.75 706.9706 528.75 702 L 528.75 681.75 C 528.75 676.7794 532.77944 672.75 537.75 672.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(533.75 677.707)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="12.988281" y="25.336">vehicleHeartbeatInfo</tspan>
</text>
</g>
<g id="Graphic_23" filter="url(#Shadow)">
<path d="M 461.25 698.625 L 461.25 685.125 L 496.7501 685.125 L 496.7501 678.375 L 516.7501 691.875 L 496.7501 705.375 L 496.7501 698.625 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 461.25 698.625 L 461.25 685.125 L 496.7501 685.125 L 496.7501 678.375 L 516.7501 691.875 L 496.7501 705.375 L 496.7501 698.625 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_28" filter="url(#Shadow)">
<path d="M 277.50003 831.375 L 439.50003 831.375 C 444.4706 831.375 448.50003 835.4044 448.50003 840.375 L 448.50003 912.375 C 448.50003 917.3456 444.4706 921.375 439.50003 921.375 L 277.50003 921.375 C 272.52947 921.375 268.50003 917.3456 268.50003 912.375 L 268.50003 840.375 C 268.50003 835.4044 272.52947 831.375 277.50003 831.375 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 277.50003 831.375 L 439.50003 831.375 C 444.4706 831.375 448.50003 835.4044 448.50003 840.375 L 448.50003 912.375 C 448.50003 917.3456 444.4706 921.375 439.50003 921.375 L 277.50003 921.375 C 272.52947 921.375 268.50003 917.3456 268.50003 912.375 L 268.50003 840.375 C 268.50003 835.4044 272.52947 831.375 277.50003 831.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 869.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="16.588867" y="11">MultiVehicleManager</tspan>
</text>
</g>
<g id="Graphic_30" filter="url(#Shadow)">
<path d="M 537.75 724.5 L 699.75 724.5 C 704.7206 724.5 708.75 728.5294 708.75 733.5 L 708.75 753.75 C 708.75 758.7206 704.7206 762.75 699.75 762.75 L 537.75 762.75 C 532.77944 762.75 528.75 758.7206 528.75 753.75 L 528.75 733.5 C 528.75 728.5294 532.77944 724.5 537.75 724.5 Z" fill="#c0ffc0"/>
<path d="M 537.75 724.5 L 699.75 724.5 C 704.7206 724.5 708.75 728.5294 708.75 733.5 L 708.75 753.75 C 708.75 758.7206 704.7206 762.75 699.75 762.75 L 537.75 762.75 C 532.77944 762.75 528.75 758.7206 528.75 753.75 L 528.75 733.5 C 528.75 728.5294 532.77944 724.5 537.75 724.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(533.75 729.457)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="25.336">messageReceived</tspan>
</text>
</g>
<g id="Graphic_29" filter="url(#Shadow)">
<path d="M 461.25 750.375 L 461.25 736.875 L 496.7501 736.875 L 496.7501 730.125 L 516.7501 743.625 L 496.7501 757.125 L 496.7501 750.375 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 461.25 750.375 L 461.25 736.875 L 496.7501 736.875 L 496.7501 730.125 L 516.7501 743.625 L 496.7501 757.125 L 496.7501 750.375 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_32" filter="url(#Shadow)">
<path d="M 11.25 857.25 L 173.25 857.25 C 178.22056 857.25 182.25 861.2794 182.25 866.25 L 182.25 886.5 C 182.25 891.4706 178.22056 895.5 173.25 895.5 L 11.25 895.5 C 6.279437 895.5 2.25 891.4706 2.25 886.5 L 2.25 866.25 C 2.25 861.2794 6.279437 857.25 11.25 857.25 Z" fill="#ffc0c0"/>
<path d="M 11.25 857.25 L 173.25 857.25 C 178.22056 857.25 182.25 861.2794 182.25 866.25 L 182.25 886.5 C 182.25 891.4706 178.22056 895.5 173.25 895.5 L 11.25 895.5 C 6.279437 895.5 2.25 891.4706 2.25 886.5 L 2.25 866.25 C 2.25 861.2794 6.279437 857.25 11.25 857.25 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 862.207)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="12.988281" y="25.336">vehicleHeartbeatInfo</tspan>
</text>
</g>
<g id="Graphic_31" filter="url(#Shadow)">
<path d="M 194.24987 883.125 L 194.24987 869.625 L 229.75 869.625 L 229.75 862.875 L 249.75 876.375 L 229.75 889.875 L 229.75 883.125 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 194.24987 883.125 L 194.24987 869.625 L 229.75 869.625 L 229.75 862.875 L 249.75 876.375 L 229.75 889.875 L 229.75 883.125 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_34" filter="url(#Shadow)">
<path d="M 277.50003 994.75 L 439.50003 994.75 C 444.4706 994.75 448.50003 998.7794 448.50003 1003.75 L 448.50003 1075.75 C 448.50003 1080.7206 444.4706 1084.75 439.50003 1084.75 L 277.50003 1084.75 C 272.52947 1084.75 268.50003 1080.7206 268.50003 1075.75 L 268.50003 1003.75 C 268.50003 998.7794 272.52947 994.75 277.50003 994.75 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 277.50003 994.75 L 439.50003 994.75 C 444.4706 994.75 448.50003 998.7794 448.50003 1003.75 L 448.50003 1075.75 C 448.50003 1080.7206 444.4706 1084.75 439.50003 1084.75 L 277.50003 1084.75 C 272.52947 1084.75 268.50003 1080.7206 268.50003 1075.75 L 268.50003 1003.75 C 268.50003 998.7794 272.52947 994.75 277.50003 994.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 1032.75)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="59.7959" y="11">Vehicle</tspan>
</text>
</g>
<g id="Graphic_36" filter="url(#Shadow)">
<path d="M 11.25 1020.625 L 173.25 1020.625 C 178.22056 1020.625 182.25 1024.6544 182.25 1029.625 L 182.25 1049.875 C 182.25 1054.8456 178.22056 1058.875 173.25 1058.875 L 11.25 1058.875 C 6.279437 1058.875 2.25 1054.8456 2.25 1049.875 L 2.25 1029.625 C 2.25 1024.6544 6.279437 1020.625 11.25 1020.625 Z" fill="#ffc0c0"/>
<path d="M 11.25 1020.625 L 173.25 1020.625 C 178.22056 1020.625 182.25 1024.6544 182.25 1029.625 L 182.25 1049.875 C 182.25 1054.8456 178.22056 1058.875 173.25 1058.875 L 11.25 1058.875 C 6.279437 1058.875 2.25 1054.8456 2.25 1049.875 L 2.25 1029.625 C 2.25 1024.6544 6.279437 1020.625 11.25 1020.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 1025.582)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="25.336">messageReceived</tspan>
</text>
</g>
<g id="Graphic_35" filter="url(#Shadow)">
<path d="M 194.24987 1046.5 L 194.24987 1033 L 229.75 1033 L 229.75 1026.25 L 249.75 1039.75 L 229.75 1053.25 L 229.75 1046.5 Z" fill="url(#Obj_Gradient_8)"/>
<path d="M 194.24987 1046.5 L 194.24987 1033 L 229.75 1033 L 229.75 1026.25 L 249.75 1039.75 L 229.75 1053.25 L 229.75 1046.5 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_38" filter="url(#Shadow)">
<path d="M 538.5001 1020.625 L 700.5001 1020.625 C 705.47064 1020.625 709.5001 1024.6544 709.5001 1029.625 L 709.5001 1049.875 C 709.5001 1054.8456 705.47064 1058.875 700.5001 1058.875 L 538.5001 1058.875 C 533.5295 1058.875 529.5001 1054.8456 529.5001 1049.875 L 529.5001 1029.625 C 529.5001 1024.6544 533.5295 1020.625 538.5001 1020.625 Z" fill="#c0ffc0"/>
<path d="M 538.5001 1020.625 L 700.5001 1020.625 C 705.47064 1020.625 709.5001 1024.6544 709.5001 1029.625 L 709.5001 1049.875 C 709.5001 1054.8456 705.47064 1058.875 700.5001 1058.875 L 538.5001 1058.875 C 533.5295 1058.875 529.5001 1054.8456 529.5001 1049.875 L 529.5001 1029.625 C 529.5001 1024.6544 533.5295 1020.625 538.5001 1020.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(534.5001 1025.582)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.782" y="11">Call</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="34.591797" y="25.336">writeBytesSafe</tspan>
</text>
</g>
<g id="Graphic_39" filter="url(#Shadow)">
<path d="M 461.25 1046.5 L 461.25 1033 L 496.7501 1033 L 496.7501 1026.25 L 516.7501 1039.75 L 496.7501 1053.25 L 496.7501 1046.5 Z" fill="url(#Obj_Gradient_9)"/>
<path d="M 461.25 1046.5 L 461.25 1033 L 496.7501 1033 L 496.7501 1026.25 L 516.7501 1039.75 L 496.7501 1053.25 L 496.7501 1046.5 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_48">
<line x1="358.50003" y1="930.625" x2="358.50003" y2="994.75" marker-start="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>
......@@ -587,7 +587,6 @@ HEADERS += \
src/JsonHelper.h \
src/KMLFileHelper.h \
src/LogCompressor.h \
src/MG.h \
src/MissionManager/CameraCalc.h \
src/MissionManager/CameraSection.h \
src/MissionManager/CameraSpec.h \
......@@ -691,7 +690,6 @@ HEADERS += \
src/comm/LinkManager.h \
src/comm/LogReplayLink.h \
src/comm/MAVLinkProtocol.h \
src/comm/ProtocolInterface.h \
src/comm/QGCMAVLink.h \
src/comm/TCPLink.h \
src/comm/UDPLink.h \
......
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
......
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
......
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment