Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
0ce6d773
Commit
0ce6d773
authored
Nov 26, 2016
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allows QGC plugins to be optional or custom
parent
d662b4da
Changes
43
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
602 additions
and
416 deletions
+602
-416
QGCCommon.pri
QGCCommon.pri
+0
-8
qgroundcontrol.pro
qgroundcontrol.pro
+208
-163
APMAirframeComponentController.cc
src/AutoPilotPlugins/APM/APMAirframeComponentController.cc
+0
-1
APMAutoPilotPlugin.cc
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
+0
-1
APMFlightModesComponentController.cc
...AutoPilotPlugins/APM/APMFlightModesComponentController.cc
+0
-1
ESP8266ComponentController.cc
src/AutoPilotPlugins/Common/ESP8266ComponentController.cc
+0
-1
MotorComponent.cc
src/AutoPilotPlugins/Common/MotorComponent.cc
+0
-3
RadioComponentController.cc
src/AutoPilotPlugins/Common/RadioComponentController.cc
+0
-1
AirframeComponentController.cc
src/AutoPilotPlugins/PX4/AirframeComponentController.cc
+0
-1
PX4AdvancedFlightModesController.cc
src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc
+0
-1
PX4AutoPilotPlugin.cc
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc
+0
-1
PX4SimpleFlightModesController.cc
src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.cc
+0
-1
ParameterManager.cc
src/FactSystem/ParameterManager.cc
+11
-18
ParameterManager.h
src/FactSystem/ParameterManager.h
+1
-1
ParameterManagerTest.cc
src/FactSystem/ParameterManagerTest.cc
+5
-3
ParameterManagerTest.h
src/FactSystem/ParameterManagerTest.h
+2
-1
APMFirmwarePlugin.cc
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
+14
-4
APMFirmwarePlugin.h
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
+22
-23
APMFirmwarePluginFactory.cc
src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc
+71
-0
APMFirmwarePluginFactory.h
src/FirmwarePlugin/APM/APMFirmwarePluginFactory.h
+37
-0
FirmwarePlugin.cc
src/FirmwarePlugin/FirmwarePlugin.cc
+24
-1
FirmwarePlugin.h
src/FirmwarePlugin/FirmwarePlugin.h
+40
-1
FirmwarePluginManager.cc
src/FirmwarePlugin/FirmwarePluginManager.cc
+21
-62
FirmwarePluginManager.h
src/FirmwarePlugin/FirmwarePluginManager.h
+3
-15
PX4FirmwarePlugin.cc
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
+20
-3
PX4FirmwarePlugin.h
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
+2
-1
PX4FirmwarePluginFactory.cc
src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc
+44
-0
PX4FirmwarePluginFactory.h
src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.h
+31
-0
FollowMe.cc
src/FollowMe/FollowMe.cc
+3
-3
QGCApplication.cc
src/QGCApplication.cc
+0
-24
QGCApplication.h
src/QGCApplication.h
+0
-1
QGCFileDialog.cc
src/QGCFileDialog.cc
+6
-16
QGCMessageBox.h
src/QGCMessageBox.h
+3
-8
QGCQuickWidget.cc
src/QGCQuickWidget.cc
+0
-1
QGCToolbox.cc
src/QGCToolbox.cc
+0
-5
QGCToolbox.h
src/QGCToolbox.h
+0
-3
ParameterEditorController.cc
src/QmlControls/ParameterEditorController.cc
+0
-1
MultiVehicleManager.cc
src/Vehicle/MultiVehicleManager.cc
+1
-3
MultiVehicleManager.h
src/Vehicle/MultiVehicleManager.h
+0
-2
Vehicle.cc
src/Vehicle/Vehicle.cc
+14
-20
Vehicle.h
src/Vehicle/Vehicle.h
+8
-3
MockLink.cc
src/comm/MockLink.cc
+6
-4
main.cc
src/main.cc
+5
-6
No files found.
QGCCommon.pri
View file @
0ce6d773
...
...
@@ -239,11 +239,3 @@ ReleaseBuild {
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += /OPT:ICF
}
}
#
# Unit Test specific configuration goes here
#
DebugBuild {
DEFINES += UNITTEST_BUILD
}
qgroundcontrol.pro
View file @
0ce6d773
This diff is collapsed.
Click to expand it.
src/AutoPilotPlugins/APM/APMAirframeComponentController.cc
View file @
0ce6d773
...
...
@@ -15,7 +15,6 @@
#include "APMAirframeComponentAirframes.h"
#include "QGCMAVLink.h"
#include "MultiVehicleManager.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include "QGCFileDownload.h"
#include "ParameterManager.h"
...
...
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
View file @
0ce6d773
...
...
@@ -9,7 +9,6 @@
#include "APMAutoPilotPlugin.h"
#include "AutoPilotPluginManager.h"
#include "UAS.h"
#include "FirmwarePlugin/APM/APMParameterMetaData.h" // FIXME: Hack
#include "FirmwarePlugin/APM/APMFirmwarePlugin.h" // FIXME: Hack
...
...
src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc
View file @
0ce6d773
...
...
@@ -10,7 +10,6 @@
#include "APMFlightModesComponentController.h"
#include "QGCMAVLink.h"
#include "AutoPilotPluginManager.h"
#include <QVariant>
#include <QQmlProperty>
...
...
src/AutoPilotPlugins/Common/ESP8266ComponentController.cc
View file @
0ce6d773
...
...
@@ -13,7 +13,6 @@
/// @author Gus Grubba <mavlink@grubba.com>
#include "ESP8266ComponentController.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include "UAS.h"
#include "ParameterManager.h"
...
...
src/AutoPilotPlugins/Common/MotorComponent.cc
View file @
0ce6d773
...
...
@@ -7,10 +7,7 @@
*
****************************************************************************/
#include "MotorComponent.h"
#include "APMAutoPilotPlugin.h"
#include "APMAirframeComponent.h"
MotorComponent
::
MotorComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
)
:
VehicleComponent
(
vehicle
,
autopilot
,
parent
),
...
...
src/AutoPilotPlugins/Common/RadioComponentController.cc
View file @
0ce6d773
...
...
@@ -13,7 +13,6 @@
/// @author Don Gagne <don@thegagnes.com
#include "RadioComponentController.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include <QSettings>
...
...
src/AutoPilotPlugins/PX4/AirframeComponentController.cc
View file @
0ce6d773
...
...
@@ -15,7 +15,6 @@
#include "AirframeComponentAirframes.h"
#include "QGCMAVLink.h"
#include "MultiVehicleManager.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include <QVariant>
...
...
src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc
View file @
0ce6d773
...
...
@@ -13,7 +13,6 @@
#include "PX4AdvancedFlightModesController.h"
#include "QGCMAVLink.h"
#include "AutoPilotPluginManager.h"
#include <QVariant>
#include <QQmlProperty>
...
...
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc
View file @
0ce6d773
...
...
@@ -9,7 +9,6 @@
#include "PX4AutoPilotPlugin.h"
#include "AutoPilotPluginManager.h"
#include "PX4AirframeLoader.h"
#include "PX4AdvancedFlightModesController.h"
#include "AirframeComponentController.h"
...
...
src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.cc
View file @
0ce6d773
...
...
@@ -10,7 +10,6 @@
#include "PX4SimpleFlightModesController.h"
#include "QGCMAVLink.h"
#include "AutoPilotPluginManager.h"
#include <QVariant>
#include <QQmlProperty>
...
...
src/FactSystem/ParameterManager.cc
View file @
0ce6d773
...
...
@@ -17,7 +17,6 @@
#include "QGCApplication.h"
#include "UASMessageHandler.h"
#include "FirmwarePlugin.h"
#include "APMFirmwarePlugin.h"
#include "UAS.h"
#include "JsonHelper.h"
...
...
@@ -236,7 +235,7 @@ void ParameterManager::_parameterUpdate(int vehicleId, int componentId, QString
int
totalWaitingParamCount
=
readWaitingParamCount
+
waitingWriteParamNameCount
;
if
(
totalWaitingParamCount
)
{
qCDebug
(
ParameterManagerVerbose1Log
)
<<
_logVehiclePrefix
(
componentId
)
<<
"totalWaitingParamCount:"
<<
totalWaitingParamCount
;
}
else
if
(
_defaultComponentId
!=
MAV_COMP_ID_ALL
)
{
}
else
if
(
_defaultComponentId
!=
MAV_COMP_ID_ALL
||
_defaultComponentIdParam
.
isEmpty
()
)
{
// No more parameters to wait for, stop the timeout. Be careful to not stop timer if we don't have the default
// component yet.
qCDebug
(
ParameterManagerVerbose1Log
)
<<
_logVehiclePrefix
()
<<
"Stopping _waitingParamTimeoutTimer (all requests satisfied)"
;
...
...
@@ -574,7 +573,7 @@ void ParameterManager::_waitingParamTimeout(void)
}
}
if
(
!
paramsRequested
&&
_defaultComponentId
==
MAV_COMP_ID_ALL
&&
!
_waitingForDefaultComponent
)
{
if
(
!
paramsRequested
&&
_defaultComponentId
==
MAV_COMP_ID_ALL
&&
!
_
defaultComponentIdParam
.
isEmpty
()
&&
!
_
waitingForDefaultComponent
)
{
// Initial load is complete but we still don't have default component params. Wait one more cycle to see if the
// default component finally shows up.
qCDebug
(
ParameterManagerLog
)
<<
_logVehiclePrefix
()
<<
"Restarting _waitingParamTimeoutTimer - still don't have default component id"
;
...
...
@@ -975,16 +974,10 @@ void ParameterManager::_addMetaDataToDefaultComponent(void)
QString
metaDataFile
;
int
majorVersion
,
minorVersion
;
if
(
_vehicle
->
firmwareType
()
==
MAV_AUTOPILOT_ARDUPILOTMEGA
)
{
// Parameter versioning is still not really figured out correctly. We need to handle ArduPilot specially based on vehicle version.
// The current three version are hardcoded in.
metaDataFile
=
((
APMFirmwarePlugin
*
)
_vehicle
->
firmwarePlugin
())
->
getParameterMetaDataFile
(
_vehicle
);
qCDebug
(
ParameterManagerLog
)
<<
"Adding meta data to Vehicle file:major:minor"
<<
metaDataFile
;
}
else
{
// Load best parameter meta data set
metaDataFile
=
parameterMetaDataFile
(
_vehicle
->
firmwareType
(),
_parameterSetMajorVersion
,
majorVersion
,
minorVersion
);
qCDebug
(
ParameterManagerLog
)
<<
"Adding meta data to Vehicle file:major:minor"
<<
metaDataFile
<<
majorVersion
<<
minorVersion
;
}
// Load best parameter meta data set
metaDataFile
=
parameterMetaDataFile
(
_vehicle
,
_vehicle
->
firmwareType
(),
_parameterSetMajorVersion
,
majorVersion
,
minorVersion
);
qCDebug
(
ParameterManagerLog
)
<<
"Adding meta data to Vehicle file:major:minor"
<<
metaDataFile
<<
majorVersion
<<
minorVersion
;
_parameterMetaData
=
_vehicle
->
firmwarePlugin
()
->
loadParameterMetaData
(
metaDataFile
);
...
...
@@ -1010,7 +1003,7 @@ void ParameterManager::_checkInitialLoadComplete(bool failIfNoDefaultComponent)
}
}
if
(
!
failIfNoDefaultComponent
&&
_defaultComponentId
==
MAV_COMP_ID_ALL
)
{
if
(
!
failIfNoDefaultComponent
&&
_defaultComponentId
==
MAV_COMP_ID_ALL
&&
!
_defaultComponentIdParam
.
isEmpty
()
)
{
// We are still waiting for default component to show up
return
;
}
...
...
@@ -1046,7 +1039,7 @@ void ParameterManager::_checkInitialLoadComplete(bool failIfNoDefaultComponent)
if
(
!
qgcApp
()
->
runningUnitTests
())
{
qCWarning
(
ParameterManagerLog
)
<<
_logVehiclePrefix
()
<<
"The following parameter indices could not be loaded after the maximum number of retries: "
<<
indexList
;
}
}
else
if
(
_defaultComponentId
==
FactSystem
::
defaultComponentId
&&
!
_defaultComponentIdParam
.
isEmpty
())
{
}
else
if
(
_defaultComponentId
==
MAV_COMP_ID_ALL
&&
!
_defaultComponentIdParam
.
isEmpty
())
{
// Missing default component when we should have one
_missingParameters
=
true
;
QString
errorMsg
=
tr
(
"QGroundControl did not receive parameters from the default component for vehicle %1. "
...
...
@@ -1084,7 +1077,7 @@ void ParameterManager::_initialRequestTimeout(void)
}
}
QString
ParameterManager
::
parameterMetaDataFile
(
MAV_AUTOPILOT
firmwareType
,
int
wantedMajorVersion
,
int
&
majorVersion
,
int
&
minorVersion
)
QString
ParameterManager
::
parameterMetaDataFile
(
Vehicle
*
vehicle
,
MAV_AUTOPILOT
firmwareType
,
int
wantedMajorVersion
,
int
&
majorVersion
,
int
&
minorVersion
)
{
bool
cacheHit
=
false
;
FirmwarePlugin
*
plugin
=
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
()
->
firmwarePluginForAutopilot
(
firmwareType
,
MAV_TYPE_QUADROTOR
);
...
...
@@ -1141,7 +1134,7 @@ QString ParameterManager::parameterMetaDataFile(MAV_AUTOPILOT firmwareType, int
}
int
internalMinorVersion
,
internalMajorVersion
;
QString
internalMetaDataFile
=
plugin
->
internalParameterMetaDataFile
();
QString
internalMetaDataFile
=
plugin
->
internalParameterMetaDataFile
(
vehicle
);
plugin
->
getParameterMetaDataVersionInfo
(
internalMetaDataFile
,
internalMajorVersion
,
internalMinorVersion
);
qCDebug
(
ParameterManagerLog
)
<<
"Internal meta data file:major:minor"
<<
internalMetaDataFile
<<
internalMajorVersion
<<
internalMinorVersion
;
if
(
cacheHit
)
{
...
...
@@ -1190,7 +1183,7 @@ void ParameterManager::cacheMetaDataFile(const QString& metaDataFile, MAV_AUTOPI
// Find the cache hit closest to this new file
int
cacheMajorVersion
,
cacheMinorVersion
;
QString
cacheHit
=
ParameterManager
::
parameterMetaDataFile
(
firmwareType
,
newMajorVersion
,
cacheMajorVersion
,
cacheMinorVersion
);
QString
cacheHit
=
ParameterManager
::
parameterMetaDataFile
(
NULL
,
firmwareType
,
newMajorVersion
,
cacheMajorVersion
,
cacheMinorVersion
);
qCDebug
(
ParameterManagerLog
)
<<
"ParameterManager::cacheMetaDataFile cacheHit file:firmware:major;minor"
<<
cacheHit
<<
cacheMajorVersion
<<
cacheMinorVersion
;
bool
cacheNewFile
=
false
;
...
...
src/FactSystem/ParameterManager.h
View file @
0ce6d773
...
...
@@ -99,7 +99,7 @@ public:
/// @param[out] majorVersion Major version for found meta data
/// @param[out] minorVersion Minor version for found meta data
/// @return Meta data file name of best match, emptyString is none found
static
QString
parameterMetaDataFile
(
MAV_AUTOPILOT
firmwareType
,
int
wantedMajorVersion
,
int
&
majorVersion
,
int
&
minorVersion
);
static
QString
parameterMetaDataFile
(
Vehicle
*
vehicle
,
MAV_AUTOPILOT
firmwareType
,
int
wantedMajorVersion
,
int
&
majorVersion
,
int
&
minorVersion
);
/// If this file is newer than anything in the cache, cache it as the latest version
static
void
cacheMetaDataFile
(
const
QString
&
metaDataFile
,
MAV_AUTOPILOT
firmwareType
);
...
...
src/FactSystem/ParameterManagerTest.cc
View file @
0ce6d773
...
...
@@ -34,7 +34,7 @@ void ParameterManagerTest::_noFailureWorker(MockConfiguration::FailureMode_t fai
QVERIFY
(
vehicle
);
// We should get progress bar updates during load
QSignalSpy
spyProgress
(
vehicle
->
parameterManager
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy
spyProgress
(
vehicle
->
parameterManager
(),
SIGNAL
(
loadProgressChanged
(
float
)));
QCOMPARE
(
spyProgress
.
wait
(
2000
),
true
);
arguments
=
spyProgress
.
takeFirst
();
QCOMPARE
(
arguments
.
count
(),
1
);
...
...
@@ -64,6 +64,7 @@ void ParameterManagerTest::_requestListMissingParamSuccess(void)
_noFailureWorker
(
MockConfiguration
::
FailMissingParamOnInitialReqest
);
}
#if 0
// Test no response to param_request_list
void ParameterManagerTest::_requestListNoResponse(void)
{
...
...
@@ -85,7 +86,7 @@ void ParameterManagerTest::_requestListNoResponse(void)
QVERIFY(vehicle);
QSignalSpy spyParamsReady(vehicleMgr, SIGNAL(parameterReadyVehicleAvailableChanged(bool)));
QSignalSpy
spyProgress
(
vehicle
->
parameterManager
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy spyProgress(vehicle->parameterManager(), SIGNAL(
loadProgressChanged
(float)));
// We should not get any progress bar updates, nor a parameter ready signal
QCOMPARE(spyProgress.wait(500), false);
...
...
@@ -94,6 +95,7 @@ void ParameterManagerTest::_requestListNoResponse(void)
// User should have been notified
checkMultipleExpectedMessageBox(5);
}
#endif
// MockLink will fail to send a param on initial request, it will also fail to send it on subsequent
// param_read requests.
...
...
@@ -120,7 +122,7 @@ void ParameterManagerTest::_requestListMissingParamFail(void)
QVERIFY
(
vehicle
);
QSignalSpy
spyParamsReady
(
vehicleMgr
,
SIGNAL
(
parameterReadyVehicleAvailableChanged
(
bool
)));
QSignalSpy
spyProgress
(
vehicle
->
parameterManager
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy
spyProgress
(
vehicle
->
parameterManager
(),
SIGNAL
(
loadProgressChanged
(
float
)));
// We will get progress bar updates, since it will fail after getting partially through the request
QCOMPARE
(
spyProgress
.
wait
(
2000
),
true
);
...
...
src/FactSystem/ParameterManagerTest.h
View file @
0ce6d773
...
...
@@ -22,7 +22,8 @@ class ParameterManagerTest : public UnitTest
private
slots
:
void
_noFailure
(
void
);
void
_requestListNoResponse
(
void
);
// FIXME: Hack to work around changed no reponse handling
//void _requestListNoResponse(void);
void
_requestListMissingParamSuccess
(
void
);
void
_requestListMissingParamFail
(
void
);
...
...
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
View file @
0ce6d773
...
...
@@ -12,9 +12,12 @@
/// @author Don Gagne <don@thegagnes.com>
#include "APMFirmwarePlugin.h"
#include "A
utoPilotPlugins/APM/APMAutoPilotPlugin.h" // FIXME: Hack
#include "A
PMAutoPilotPlugin.h"
#include "QGCMAVLink.h"
#include "QGCApplication.h"
#include "APMFlightModesComponentController.h"
#include "APMAirframeComponentController.h"
#include "APMSensorsComponentController.h"
#include <QTcpSocket>
...
...
@@ -140,7 +143,14 @@ APMFirmwarePlugin::APMFirmwarePlugin(void)
:
_coaxialMotors
(
false
)
,
_textSeverityAdjustmentNeeded
(
false
)
{
qmlRegisterType
<
APMFlightModesComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMFlightModesComponentController"
);
qmlRegisterType
<
APMAirframeComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMAirframeComponentController"
);
qmlRegisterType
<
APMSensorsComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMSensorsComponentController"
);
}
AutoPilotPlugin
*
APMFirmwarePlugin
::
autopilotPlugin
(
Vehicle
*
vehicle
)
{
return
new
APMAutoPilotPlugin
(
vehicle
,
vehicle
);
}
bool
APMFirmwarePlugin
::
isCapable
(
const
Vehicle
*
/*vehicle*/
,
FirmwareCapabilities
capabilities
)
...
...
@@ -654,8 +664,8 @@ QList<MAV_CMD> APMFirmwarePlugin::supportedMissionCommands(void)
<<
MAV_CMD_DO_AUTOTUNE_ENABLE
<<
MAV_CMD_NAV_VTOL_TAKEOFF
<<
MAV_CMD_NAV_VTOL_LAND
<<
MAV_CMD_DO_VTOL_TRANSITION
;
#if 0
// Waiting for module update
<< MAV_CMD_DO_SET_REVERSE;
// Waiting for module update
<< MAV_CMD_DO_SET_REVERSE;
#endif
return
list
;
...
...
@@ -723,7 +733,7 @@ void APMFirmwarePlugin::_artooSocketError(QAbstractSocket::SocketError socketErr
qgcApp
()
->
showMessage
(
tr
(
"Error during Solo video link setup: %1"
).
arg
(
socketError
));
}
QString
APMFirmwarePlugin
::
get
ParameterMetaDataFile
(
Vehicle
*
vehicle
)
QString
APMFirmwarePlugin
::
internal
ParameterMetaDataFile
(
Vehicle
*
vehicle
)
{
switch
(
vehicle
->
vehicleType
())
{
case
MAV_TYPE_QUADROTOR
:
...
...
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
View file @
0ce6d773
...
...
@@ -75,29 +75,28 @@ public:
QList
<
VehicleComponent
*>
componentsForVehicle
(
AutoPilotPlugin
*
vehicle
)
final
;
QList
<
MAV_CMD
>
supportedMissionCommands
(
void
)
final
;
bool
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
);
QStringList
flightModes
(
Vehicle
*
vehicle
)
final
;
QString
flightMode
(
uint8_t
base_mode
,
uint32_t
custom_mode
)
const
final
;
bool
setFlightMode
(
const
QString
&
flightMode
,
uint8_t
*
base_mode
,
uint32_t
*
custom_mode
)
final
;
bool
isGuidedMode
(
const
Vehicle
*
vehicle
)
const
final
;
void
pauseVehicle
(
Vehicle
*
vehicle
);
int
manualControlReservedButtonCount
(
void
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
final
;
void
adjustOutgoingMavlinkMessage
(
Vehicle
*
vehicle
,
LinkInterface
*
outgoingLink
,
mavlink_message_t
*
message
)
final
;
void
initializeVehicle
(
Vehicle
*
vehicle
)
final
;
bool
sendHomePositionToVehicle
(
void
)
final
;
void
addMetaDataToFact
(
QObject
*
parameterMetaData
,
Fact
*
fact
,
MAV_TYPE
vehicleType
)
final
;
QString
getDefaultComponentIdParam
(
void
)
const
final
{
return
QString
(
"SYSID_SW_TYPE"
);
}
QString
missionCommandOverrides
(
MAV_TYPE
vehicleType
)
const
;
QString
getVersionParam
(
void
)
final
{
return
QStringLiteral
(
"SYSID_SW_MREV"
);
}
QString
internalParameterMetaDataFile
(
void
)
final
{
return
QString
(
":/FirmwarePlugin/APM/APMParameterFactMetaData.xml"
);
}
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
final
{
APMParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
APMGeoFenceManager
(
vehicle
);
}
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
{
return
new
APMRallyPointManager
(
vehicle
);
}
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
QString
getParameterMetaDataFile
(
Vehicle
*
vehicle
);
AutoPilotPlugin
*
autopilotPlugin
(
Vehicle
*
vehicle
)
final
;
bool
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
);
QStringList
flightModes
(
Vehicle
*
vehicle
)
final
;
QString
flightMode
(
uint8_t
base_mode
,
uint32_t
custom_mode
)
const
final
;
bool
setFlightMode
(
const
QString
&
flightMode
,
uint8_t
*
base_mode
,
uint32_t
*
custom_mode
)
final
;
bool
isGuidedMode
(
const
Vehicle
*
vehicle
)
const
final
;
void
pauseVehicle
(
Vehicle
*
vehicle
);
int
manualControlReservedButtonCount
(
void
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
final
;
void
adjustOutgoingMavlinkMessage
(
Vehicle
*
vehicle
,
LinkInterface
*
outgoingLink
,
mavlink_message_t
*
message
)
final
;
void
initializeVehicle
(
Vehicle
*
vehicle
)
final
;
bool
sendHomePositionToVehicle
(
void
)
final
;
void
addMetaDataToFact
(
QObject
*
parameterMetaData
,
Fact
*
fact
,
MAV_TYPE
vehicleType
)
final
;
QString
getDefaultComponentIdParam
(
void
)
const
final
{
return
QString
(
"SYSID_SW_TYPE"
);
}
QString
missionCommandOverrides
(
MAV_TYPE
vehicleType
)
const
;
QString
getVersionParam
(
void
)
final
{
return
QStringLiteral
(
"SYSID_SW_MREV"
);
}
QString
internalParameterMetaDataFile
(
Vehicle
*
vehicle
)
final
;
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
final
{
APMParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
APMGeoFenceManager
(
vehicle
);
}
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
{
return
new
APMRallyPointManager
(
vehicle
);
}
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
protected:
/// All access to singleton is through stack specific implementation
...
...
src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc
0 → 100644
View file @
0ce6d773
/****************************************************************************
*
* (c) 2009-2016 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.
*
****************************************************************************/
#include "APMFirmwarePluginFactory.h"
#include "APM/ArduCopterFirmwarePlugin.h"
#include "APM/ArduPlaneFirmwarePlugin.h"
#include "APM/ArduRoverFirmwarePlugin.h"
#include "APM/ArduSubFirmwarePlugin.h"
APMFirmwarePluginFactory
APMFirmwarePluginFactory
;
APMFirmwarePluginFactory
::
APMFirmwarePluginFactory
(
void
)
:
_arduCopterPluginInstance
(
NULL
)
,
_arduPlanePluginInstance
(
NULL
)
,
_arduRoverPluginInstance
(
NULL
)
,
_arduSubPluginInstance
(
NULL
)
{
}
QList
<
MAV_AUTOPILOT
>
APMFirmwarePluginFactory
::
knownFirmwareTypes
(
void
)
const
{
QList
<
MAV_AUTOPILOT
>
list
;
list
.
append
(
MAV_AUTOPILOT_ARDUPILOTMEGA
);
return
list
;
}
FirmwarePlugin
*
APMFirmwarePluginFactory
::
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
{
if
(
autopilotType
==
MAV_AUTOPILOT_ARDUPILOTMEGA
)
{
switch
(
vehicleType
)
{
case
MAV_TYPE_QUADROTOR
:
case
MAV_TYPE_HEXAROTOR
:
case
MAV_TYPE_OCTOROTOR
:
case
MAV_TYPE_TRICOPTER
:
case
MAV_TYPE_COAXIAL
:
case
MAV_TYPE_HELICOPTER
:
if
(
!
_arduCopterPluginInstance
)
{
_arduCopterPluginInstance
=
new
ArduCopterFirmwarePlugin
;
}
return
_arduCopterPluginInstance
;
case
MAV_TYPE_FIXED_WING
:
if
(
!
_arduPlanePluginInstance
)
{
_arduPlanePluginInstance
=
new
ArduPlaneFirmwarePlugin
;
}
return
_arduPlanePluginInstance
;
case
MAV_TYPE_GROUND_ROVER
:
case
MAV_TYPE_SURFACE_BOAT
:
if
(
!
_arduRoverPluginInstance
)
{
_arduRoverPluginInstance
=
new
ArduRoverFirmwarePlugin
;
}
return
_arduRoverPluginInstance
;
case
MAV_TYPE_SUBMARINE
:
if
(
!
_arduSubPluginInstance
)
{
_arduSubPluginInstance
=
new
ArduSubFirmwarePlugin
;
}
return
_arduSubPluginInstance
;
default:
break
;
}
}
return
NULL
;
}
src/FirmwarePlugin/APM/APMFirmwarePluginFactory.h
0 → 100644
View file @
0ce6d773
/****************************************************************************
*
* (c) 2009-2016 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.
*
****************************************************************************/
#ifndef APMFirmwarePluginFactory_H
#define APMFirmwarePluginFactory_H
#include "FirmwarePlugin.h"
class
ArduCopterFirmwarePlugin
;
class
ArduPlaneFirmwarePlugin
;
class
ArduRoverFirmwarePlugin
;
class
ArduSubFirmwarePlugin
;
class
APMFirmwarePluginFactory
:
public
FirmwarePluginFactory
{
Q_OBJECT
public:
APMFirmwarePluginFactory
(
void
);
QList
<
MAV_AUTOPILOT
>
knownFirmwareTypes
(
void
)
const
final
;
FirmwarePlugin
*
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
final
;
private:
ArduCopterFirmwarePlugin
*
_arduCopterPluginInstance
;
ArduPlaneFirmwarePlugin
*
_arduPlanePluginInstance
;
ArduRoverFirmwarePlugin
*
_arduRoverPluginInstance
;
ArduSubFirmwarePlugin
*
_arduSubPluginInstance
;
};
#endif
src/FirmwarePlugin/FirmwarePlugin.cc
View file @
0ce6d773
...
...
@@ -7,14 +7,37 @@
*
****************************************************************************/
#include "FirmwarePlugin.h"
#include "QGCApplication.h"
#include "Generic/GenericAutoPilotPlugin.h"
#include <QDebug>
static
FirmwarePluginFactoryRegister
*
_instance
=
NULL
;
const
char
*
guided_mode_not_supported_by_vehicle
=
"Guided mode not supported by Vehicle."
;
const
char
*
FirmwarePlugin
::
px4FollowMeFlightMode
=
"Follow Me"
;
FirmwarePluginFactory
::
FirmwarePluginFactory
(
void
)
{
FirmwarePluginFactoryRegister
::
instance
()
->
registerPluginFactory
(
this
);
}
FirmwarePluginFactoryRegister
*
FirmwarePluginFactoryRegister
::
instance
(
void
)
{
if
(
!
_instance
)
{
_instance
=
new
FirmwarePluginFactoryRegister
;
}
return
_instance
;
}
AutoPilotPlugin
*
FirmwarePlugin
::
autopilotPlugin
(
Vehicle
*
vehicle
)
{
return
new
GenericAutoPilotPlugin
(
vehicle
,
vehicle
);
}
bool
FirmwarePlugin
::
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
)
{
Q_UNUSED
(
vehicle
);
...
...
src/FirmwarePlugin/FirmwarePlugin.h
View file @
0ce6d773
...
...
@@ -61,6 +61,9 @@ public:
/// value: remapParamNameMinorVersionRemapMap_t entry
typedef
QMap
<
int
,
remapParamNameMinorVersionRemapMap_t
>
remapParamNameMajorVersionMap_t
;
/// @return The AutoPilotPlugin associated with this firmware plugin. Must be overriden.
virtual
AutoPilotPlugin
*
autopilotPlugin
(
Vehicle
*
vehicle
);
/// Called when Vehicle is first created to perform any firmware specific setup.
virtual
void
initializeVehicle
(
Vehicle
*
vehicle
);
...
...
@@ -181,7 +184,7 @@ public:
virtual
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
);
/// Returns the internal resource parameter meta date file.
virtual
QString
internalParameterMetaDataFile
(
void
)
{
return
QString
();
}
virtual
QString
internalParameterMetaDataFile
(
Vehicle
*
vehicle
)
{
Q_UNUSED
(
vehicle
);
return
QString
();
}
/// Loads the specified parameter meta data file.
/// @return Opaque parameter meta data information which must be stored with Vehicle. Vehicle is responsible to
...
...
@@ -225,6 +228,42 @@ public:
/// Return the resource file which contains the brand image for the vehicle.
virtual
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
)
return
QString
();
}
// FIXME: Hack workaround for non pluginize FollowMe support
static
const
char
*
px4FollowMeFlightMode
;
};
class
FirmwarePluginFactory
:
public
QObject
{
Q_OBJECT
public:
FirmwarePluginFactory
(
void
);
/// Returns appropriate plugin for autopilot type.
/// @param autopilotType Type of autopilot to return plugin for.
/// @param vehicleType Vehicle type of autopilot to return plugin for.
/// @return Singleton FirmwarePlugin instance for the specified MAV_AUTOPILOT.
virtual
FirmwarePlugin
*
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
=
0
;
/// @return List of autopilot types this plugin supports.
virtual
QList
<
MAV_AUTOPILOT
>
knownFirmwareTypes
(
void
)
const
=
0
;
};
class
FirmwarePluginFactoryRegister
:
public
QObject
{
Q_OBJECT
public:
static
FirmwarePluginFactoryRegister
*
instance
(
void
);
/// Registers the specified logging category to the system.
void
registerPluginFactory
(
FirmwarePluginFactory
*
pluginFactory
)
{
_factoryList
.
append
(
pluginFactory
);
}
QList
<
FirmwarePluginFactory
*>
pluginFactories
(
void
)
const
{
return
_factoryList
;
}
private:
QList
<
FirmwarePluginFactory
*>
_factoryList
;
};
#endif
src/FirmwarePlugin/FirmwarePluginManager.cc
View file @
0ce6d773
...
...
@@ -12,91 +12,50 @@
/// @author Don Gagne <don@thegagnes.com>
#include "FirmwarePluginManager.h"
#include "APM/ArduCopterFirmwarePlugin.h"
#include "APM/ArduPlaneFirmwarePlugin.h"
#include "APM/ArduRoverFirmwarePlugin.h"
#include "APM/ArduSubFirmwarePlugin.h"
#include "PX4/PX4FirmwarePlugin.h"
#include "FirmwarePlugin.h"
FirmwarePluginManager
::
FirmwarePluginManager
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
,
_arduCopterFirmwarePlugin
(
NULL
)
,
_arduPlaneFirmwarePlugin
(
NULL
)
,
_arduRoverFirmwarePlugin
(
NULL
)
,
_arduSubFirmwarePlugin
(
NULL
)
,
_genericFirmwarePlugin
(
NULL
)
,
_px4FirmwarePlugin
(
NULL
)
{
}
FirmwarePluginManager
::~
FirmwarePluginManager
()
{
delete
_arduCopterFirmwarePlugin
;
delete
_arduPlaneFirmwarePlugin
;
delete
_arduRoverFirmwarePlugin
;
delete
_arduSubFirmwarePlugin
;
delete
_genericFirmwarePlugin
;
delete
_px4FirmwarePlugin
;
}
QList
<
MAV_AUTOPILOT
>
FirmwarePluginManager
::
knownFirmwareTypes
(
void
)
const
QList
<
MAV_AUTOPILOT
>
FirmwarePluginManager
::
knownFirmwareTypes
(
void
)
{
QList
<
MAV_AUTOPILOT
>
list
;
list
<<
MAV_AUTOPILOT_GENERIC
<<
MAV_AUTOPILOT_PX4
<<
MAV_AUTOPILOT_ARDUPILOTMEGA
;
return
list
;
if
(
_knownFirmwareTypes
.
isEmpty
())
{
QList
<
FirmwarePluginFactory
*>
factoryList
=
FirmwarePluginFactoryRegister
::
instance
()
->
pluginFactories
();
for
(
int
i
=
0
;
i
<
factoryList
.
count
();
i
++
)
{
_knownFirmwareTypes
.
append
(
factoryList
[
i
]
->
knownFirmwareTypes
());
}
}
_knownFirmwareTypes
.
append
(
MAV_AUTOPILOT_GENERIC
);
return
_knownFirmwareTypes
;
}
FirmwarePlugin
*
FirmwarePluginManager
::
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
{
switch
(
autopilotType
)
{
case
MAV_AUTOPILOT_ARDUPILOTMEGA
:
switch
(
vehicleType
)
{
case
MAV_TYPE_QUADROTOR
:
case
MAV_TYPE_HEXAROTOR
:
case
MAV_TYPE_OCTOROTOR
:
case
MAV_TYPE_TRICOPTER
:
case
MAV_TYPE_COAXIAL
:
case
MAV_TYPE_HELICOPTER
:
if
(
!
_arduCopterFirmwarePlugin
)
{
_arduCopterFirmwarePlugin
=
new
ArduCopterFirmwarePlugin
;
}
return
_arduCopterFirmwarePlugin
;
case
MAV_TYPE_FIXED_WING
:
if
(
!
_arduPlaneFirmwarePlugin
)
{
_arduPlaneFirmwarePlugin
=
new
ArduPlaneFirmwarePlugin
;
}
return
_arduPlaneFirmwarePlugin
;
case
MAV_TYPE_GROUND_ROVER
:
case
MAV_TYPE_SURFACE_BOAT
:
if
(
!
_arduRoverFirmwarePlugin
)
{
_arduRoverFirmwarePlugin
=
new
ArduRoverFirmwarePlugin
;
}
return
_arduRoverFirmwarePlugin
;
case
MAV_TYPE_SUBMARINE
:
if
(
!
_arduSubFirmwarePlugin
)
{
_arduSubFirmwarePlugin
=
new
ArduSubFirmwarePlugin
;
}
return
_arduSubFirmwarePlugin
;
default:
break
;
}
case
MAV_AUTOPILOT_PX4
:
if
(
!
_px4FirmwarePlugin
)
{
_px4FirmwarePlugin
=
new
PX4FirmwarePlugin
;
FirmwarePlugin
*
_plugin
=
NULL
;
QList
<
FirmwarePluginFactory
*>
factoryList
=
FirmwarePluginFactoryRegister
::
instance
()
->
pluginFactories
();
// Find the plugin which supports this vehicle
for
(
int
i
=
0
;
i
<
factoryList
.
count
();
i
++
)
{
if
((
_plugin
=
factoryList
[
i
]
->
firmwarePluginForAutopilot
(
autopilotType
,
vehicleType
)))
{
return
_plugin
;
}
return
_px4FirmwarePlugin
;
default:
break
;
}
// Default plugin fallback
if
(
!
_genericFirmwarePlugin
)
{
_genericFirmwarePlugin
=
new
FirmwarePlugin
;
}
return
_genericFirmwarePlugin
;
}
void
FirmwarePluginManager
::
clearSettings
(
void
)
{
// FIXME: NYI
}
src/FirmwarePlugin/FirmwarePluginManager.h
View file @
0ce6d773
...
...
@@ -21,11 +21,6 @@
#include "QGCToolbox.h"
class
QGCApplication
;
class
ArduCopterFirmwarePlugin
;
class
ArduPlaneFirmwarePlugin
;
class
ArduRoverFirmwarePlugin
;
class
ArduSubFirmwarePlugin
;
class
PX4FirmwarePlugin
;
/// FirmwarePluginManager is a singleton which is used to return the correct FirmwarePlugin for a MAV_AUTOPILOT type.
...
...
@@ -37,7 +32,7 @@ public:
FirmwarePluginManager
(
QGCApplication
*
app
);
~
FirmwarePluginManager
();
QList
<
MAV_AUTOPILOT
>
knownFirmwareTypes
(
void
)
const
;
QList
<
MAV_AUTOPILOT
>
knownFirmwareTypes
(
void
);
/// Returns appropriate plugin for autopilot type.
/// @param autopilotType Type of autopilot to return plugin for.
...
...
@@ -45,16 +40,9 @@ public:
/// @return Singleton FirmwarePlugin instance for the specified MAV_AUTOPILOT.
FirmwarePlugin
*
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
);
/// Clears settings from all firmware plugins.
void
clearSettings
(
void
);
private:
ArduCopterFirmwarePlugin
*
_arduCopterFirmwarePlugin
;
ArduPlaneFirmwarePlugin
*
_arduPlaneFirmwarePlugin
;
ArduRoverFirmwarePlugin
*
_arduRoverFirmwarePlugin
;
ArduSubFirmwarePlugin
*
_arduSubFirmwarePlugin
;
FirmwarePlugin
*
_genericFirmwarePlugin
;
PX4FirmwarePlugin
*
_px4FirmwarePlugin
;
FirmwarePlugin
*
_genericFirmwarePlugin
;
QList
<
MAV_AUTOPILOT
>
_knownFirmwareTypes
;
};
#endif
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
View file @
0ce6d773
...
...
@@ -14,7 +14,13 @@
#include "PX4FirmwarePlugin.h"
#include "PX4ParameterMetaData.h"
#include "QGCApplication.h"
#include "AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h" // FIXME: Hack
#include "PX4AutoPilotPlugin.h"
#include "PX4AdvancedFlightModesController.h"
#include "PX4SimpleFlightModesController.h"
#include "AirframeComponentController.h"
#include "SensorsComponentController.h"
#include "PowerComponentController.h"
#include "RadioComponentController.h"
#include <QDebug>
...
...
@@ -72,7 +78,17 @@ static const struct Modes2Name rgModes2Name[] = {
PX4FirmwarePlugin
::
PX4FirmwarePlugin
(
void
)
:
_versionNotified
(
false
)
{
qmlRegisterType
<
PX4AdvancedFlightModesController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PX4AdvancedFlightModesController"
);
qmlRegisterType
<
PX4SimpleFlightModesController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PX4SimpleFlightModesController"
);
qmlRegisterType
<
AirframeComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"AirframeComponentController"
);
qmlRegisterType
<
SensorsComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"SensorsComponentController"
);
qmlRegisterType
<
PowerComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PowerComponentController"
);
qmlRegisterType
<
RadioComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"RadioComponentController"
);
}
AutoPilotPlugin
*
PX4FirmwarePlugin
::
autopilotPlugin
(
Vehicle
*
vehicle
)
{
return
new
PX4AutoPilotPlugin
(
vehicle
,
vehicle
);
}
QList
<
VehicleComponent
*>
PX4FirmwarePlugin
::
componentsForVehicle
(
AutoPilotPlugin
*
vehicle
)
...
...
@@ -177,10 +193,11 @@ bool PX4FirmwarePlugin::supportsManualControl(void)
bool
PX4FirmwarePlugin
::
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
)
{
if
(
vehicle
->
multiRotor
())
{
if
(
vehicle
->
multiRotor
())
{
return
(
capabilities
&
(
MavCmdPreflightStorageCapability
|
GuidedModeCapability
|
SetFlightModeCapability
|
PauseVehicleCapability
|
OrbitModeCapability
))
==
capabilities
;
}
else
{
return
(
capabilities
&
(
MavCmdPreflightStorageCapability
|
GuidedModeCapability
|
SetFlightModeCapability
|
PauseVehicleCapability
))
==
capabilities
;
}
return
(
capabilities
&
(
MavCmdPreflightStorageCapability
|
GuidedModeCapability
|
SetFlightModeCapability
|
PauseVehicleCapability
))
==
capabilities
;
}
void
PX4FirmwarePlugin
::
initializeVehicle
(
Vehicle
*
vehicle
)
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
View file @
0ce6d773
...
...
@@ -31,6 +31,7 @@ public:
QList
<
VehicleComponent
*>
componentsForVehicle
(
AutoPilotPlugin
*
vehicle
)
final
;
QList
<
MAV_CMD
>
supportedMissionCommands
(
void
)
final
;
AutoPilotPlugin
*
autopilotPlugin
(
Vehicle
*
vehicle
)
final
;
bool
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
)
final
;
QStringList
flightModes
(
Vehicle
*
vehicle
)
final
;
QString
flightMode
(
uint8_t
base_mode
,
uint32_t
custom_mode
)
const
final
;
...
...
@@ -52,7 +53,7 @@ public:
QString
getDefaultComponentIdParam
(
void
)
const
final
{
return
QString
(
"SYS_AUTOSTART"
);
}
QString
missionCommandOverrides
(
MAV_TYPE
vehicleType
)
const
final
;
QString
getVersionParam
(
void
)
final
{
return
QString
(
"SYS_PARAM_VER"
);
}
QString
internalParameterMetaDataFile
(
void
)
final
{
return
QString
(
":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml"
);
}
QString
internalParameterMetaDataFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QString
(
":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml"
);
}
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
final
{
PX4ParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
);
...
...
src/
AutoPilotPlugins/AutoPilotPluginManager
.cc
→
src/
FirmwarePlugin/PX4/PX4FirmwarePluginFactory
.cc
View file @
0ce6d773
...
...
@@ -11,19 +11,34 @@
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "AutoPilotPluginManager.h"
#include "PX4/PX4AutoPilotPlugin.h"
#include "APM/APMAutoPilotPlugin.h"
#include "Generic/GenericAutoPilotPlugin.h"
#include "PX4FirmwarePluginFactory.h"
#include "PX4/PX4FirmwarePlugin.h"
PX4FirmwarePluginFactory
PX4FirmwarePluginFactory
;
AutoPilotPlugin
*
AutoPilotPluginManager
::
newAutopilotPluginForVehicle
(
Vehicle
*
vehicle
)
PX4FirmwarePluginFactory
::
PX4FirmwarePluginFactory
(
void
)
:
_pluginInstance
(
NULL
)
{
switch
(
vehicle
->
firmwareType
())
{
case
MAV_AUTOPILOT_PX4
:
return
new
PX4AutoPilotPlugin
(
vehicle
,
vehicle
);
case
MAV_AUTOPILOT_ARDUPILOTMEGA
:
return
new
APMAutoPilotPlugin
(
vehicle
,
vehicle
);
default:
return
new
GenericAutoPilotPlugin
(
vehicle
,
vehicle
);
}
QList
<
MAV_AUTOPILOT
>
PX4FirmwarePluginFactory
::
knownFirmwareTypes
(
void
)
const
{
QList
<
MAV_AUTOPILOT
>
list
;
list
.
append
(
MAV_AUTOPILOT_PX4
);
return
list
;
}
FirmwarePlugin
*
PX4FirmwarePluginFactory
::
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
{
Q_UNUSED
(
vehicleType
);
if
(
autopilotType
==
MAV_AUTOPILOT_PX4
)
{
if
(
!
_pluginInstance
)
{
_pluginInstance
=
new
PX4FirmwarePlugin
;
}
return
_pluginInstance
;
}
return
NULL
;
}
src/
AutoPilotPlugins/AutoPilotPluginManager
.h
→
src/
FirmwarePlugin/PX4/PX4FirmwarePluginFactory
.h
View file @
0ce6d773
...
...
@@ -7,31 +7,25 @@
*
****************************************************************************/
#ifndef PX4FirmwarePluginFactory_H
#define PX4FirmwarePluginFactory_H
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "FirmwarePlugin.h"
#ifndef AUTOPILOTPLUGINMANAGER_H
#define AUTOPILOTPLUGINMANAGER_H
class
PX4FirmwarePlugin
;
#include <QObject>
#include <QList>
#include <QString>
#include "AutoPilotPlugin.h"
#include "Vehicle.h"
#include "QGCToolbox.h"
class
QGCApplication
;
class
AutoPilotPluginManager
:
public
QGCTool
class
PX4FirmwarePluginFactory
:
public
FirmwarePluginFactory
{
Q_OBJECT
public:
AutoPilotPluginManager
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
{
}
PX4FirmwarePluginFactory
(
void
);
QList
<
MAV_AUTOPILOT
>
knownFirmwareTypes
(
void
)
const
final
;
FirmwarePlugin
*
firmwarePluginForAutopilot
(
MAV_AUTOPILOT
autopilotType
,
MAV_TYPE
vehicleType
)
final
;
AutoPilotPlugin
*
newAutopilotPluginForVehicle
(
Vehicle
*
vehicle
);
private:
PX4FirmwarePlugin
*
_pluginInstance
;
};
#endif
src/FollowMe/FollowMe.cc
View file @
0ce6d773
...
...
@@ -11,7 +11,7 @@
#include <cmath>
#include "MultiVehicleManager.h"
#include "
PX4
FirmwarePlugin.h"
#include "FirmwarePlugin.h"
#include "MAVLinkProtocol.h"
#include "FollowMe.h"
#include "Vehicle.h"
...
...
@@ -38,7 +38,7 @@ void FollowMe::followMeHandleManager(const QString&)
for
(
int
i
=
0
;
i
<
vehicles
.
count
();
i
++
)
{
Vehicle
*
vehicle
=
qobject_cast
<
Vehicle
*>
(
vehicles
[
i
]);
if
(
vehicle
->
px4Firmware
()
&&
vehicle
->
flightMode
().
compare
(
PX4FirmwarePlugin
::
f
ollowMeFlightMode
,
Qt
::
CaseInsensitive
)
==
0
)
{
if
(
vehicle
->
px4Firmware
()
&&
vehicle
->
flightMode
().
compare
(
FirmwarePlugin
::
px4F
ollowMeFlightMode
,
Qt
::
CaseInsensitive
)
==
0
)
{
_enable
();
return
;
}
...
...
@@ -138,7 +138,7 @@ void FollowMe::_sendGCSMotionReport(void)
for
(
int
i
=
0
;
i
<
vehicles
.
count
();
i
++
)
{
Vehicle
*
vehicle
=
qobject_cast
<
Vehicle
*>
(
vehicles
[
i
]);
if
(
vehicle
->
flightMode
().
compare
(
PX4FirmwarePlugin
::
f
ollowMeFlightMode
,
Qt
::
CaseInsensitive
)
==
0
)
{
if
(
vehicle
->
flightMode
().
compare
(
FirmwarePlugin
::
px4F
ollowMeFlightMode
,
Qt
::
CaseInsensitive
)
==
0
)
{
mavlink_message_t
message
;
mavlink_msg_follow_target_encode_chan
(
mavlinkProtocol
->
getSystemId
(),
mavlinkProtocol
->
getComponentId
(),
...
...
src/QGCApplication.cc
View file @
0ce6d773
...
...
@@ -41,7 +41,6 @@
#include "LinkManager.h"
#include "HomePositionManager.h"
#include "UASMessageHandler.h"
#include "AutoPilotPluginManager.h"
#include "QGCTemporaryFile.h"
#include "QGCPalette.h"
#include "QGCMapPalette.h"
...
...
@@ -49,14 +48,6 @@
#include "ViewWidgetController.h"
#include "ParameterEditorController.h"
#include "CustomCommandWidgetController.h"
#include "PX4AdvancedFlightModesController.h"
#include "PX4SimpleFlightModesController.h"
#include "APMFlightModesComponentController.h"
#include "AirframeComponentController.h"
#include "SensorsComponentController.h"
#include "APMSensorsComponentController.h"
#include "PowerComponentController.h"
#include "RadioComponentController.h"
#include "ESP8266ComponentController.h"
#include "ScreenToolsController.h"
#include "QGCMobileFileDialogController.h"
...
...
@@ -65,11 +56,6 @@
#include "VehicleComponent.h"
#include "FirmwarePluginManager.h"
#include "MultiVehicleManager.h"
#include "APM/ArduCopterFirmwarePlugin.h"
#include "APM/ArduPlaneFirmwarePlugin.h"
#include "APM/ArduRoverFirmwarePlugin.h"
#include "APM/APMAirframeComponentController.h"
#include "PX4/PX4FirmwarePlugin.h"
#include "Vehicle.h"
#include "MavlinkQmlSingleton.h"
#include "JoystickConfigController.h"
...
...
@@ -88,7 +74,6 @@
#include "VideoSurface.h"
#include "VideoReceiver.h"
#include "LogDownloadController.h"
#include "PX4AirframeLoader.h"
#include "ValuesWidgetController.h"
#include "AppMessages.h"
#include "SimulatedPosition.h"
...
...
@@ -393,15 +378,6 @@ void QGCApplication::_initCommon(void)
qmlRegisterUncreatableType
<
QGCMapPolygon
>
(
"QGroundControl.FlightMap"
,
1
,
0
,
"QGCMapPolygon"
,
"Reference only"
);
qmlRegisterType
<
ParameterEditorController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"ParameterEditorController"
);
qmlRegisterType
<
APMFlightModesComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMFlightModesComponentController"
);
qmlRegisterType
<
PX4AdvancedFlightModesController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PX4AdvancedFlightModesController"
);
qmlRegisterType
<
PX4SimpleFlightModesController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PX4SimpleFlightModesController"
);
qmlRegisterType
<
APMAirframeComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMAirframeComponentController"
);
qmlRegisterType
<
AirframeComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"AirframeComponentController"
);
qmlRegisterType
<
APMSensorsComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"APMSensorsComponentController"
);
qmlRegisterType
<
SensorsComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"SensorsComponentController"
);
qmlRegisterType
<
PowerComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"PowerComponentController"
);
qmlRegisterType
<
RadioComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"RadioComponentController"
);
qmlRegisterType
<
ESP8266ComponentController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"ESP8266ComponentController"
);
qmlRegisterType
<
ScreenToolsController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"ScreenToolsController"
);
qmlRegisterType
<
MainToolBarController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"MainToolBarController"
);
...
...
src/QGCApplication.h
View file @
0ce6d773
...
...
@@ -32,7 +32,6 @@
#include "MultiVehicleManager.h"
#include "JoystickManager.h"
#include "GAudioOutput.h"
#include "AutoPilotPluginManager.h"
#include "UASMessageHandler.h"
#include "FactSystem.h"
...
...
src/QGCFileDialog.cc
View file @
0ce6d773
...
...
@@ -12,10 +12,8 @@
#include "QGCApplication.h"
#include "MainWindow.h"
#ifdef QT_DEBUG
#ifndef __mobile__
#include "UnitTest.h"
#endif
#ifdef UNITTEST_BUILD
#include "UnitTest.h"
#endif
#include <QRegularExpression>
...
...
@@ -30,12 +28,10 @@ QString QGCFileDialog::getExistingDirectory(
{
_validate
(
options
);
#ifdef QT_DEBUG
#ifndef __mobile__
#ifdef UNITTEST_BUILD
if
(
qgcApp
()
->
runningUnitTests
())
{
return
UnitTest
::
_getExistingDirectory
(
parent
,
caption
,
dir
,
options
);
}
else
#endif
#endif
{
return
QFileDialog
::
getExistingDirectory
(
parent
,
caption
,
dir
,
options
);
...
...
@@ -51,12 +47,10 @@ QString QGCFileDialog::getOpenFileName(
{
_validate
(
options
);
#ifdef QT_DEBUG
#ifndef __mobile__
#ifdef UNITTEST_BUILD
if
(
qgcApp
()
->
runningUnitTests
())
{
return
UnitTest
::
_getOpenFileName
(
parent
,
caption
,
dir
,
filter
,
options
);
}
else
#endif
#endif
{
return
QFileDialog
::
getOpenFileName
(
parent
,
caption
,
dir
,
filter
,
NULL
,
options
);
...
...
@@ -72,12 +66,10 @@ QStringList QGCFileDialog::getOpenFileNames(
{
_validate
(
options
);
#ifdef QT_DEBUG
#ifndef __mobile__
#ifdef UNITTEST_BUILD
if
(
qgcApp
()
->
runningUnitTests
())
{
return
UnitTest
::
_getOpenFileNames
(
parent
,
caption
,
dir
,
filter
,
options
);
}
else
#endif
#endif
{
return
QFileDialog
::
getOpenFileNames
(
parent
,
caption
,
dir
,
filter
,
NULL
,
options
);
...
...
@@ -95,12 +87,10 @@ QString QGCFileDialog::getSaveFileName(
{
_validate
(
options
);
#ifdef QT_DEBUG
#ifndef __mobile__
#ifdef UNITTEST_BUILD
if
(
qgcApp
()
->
runningUnitTests
())
{
return
UnitTest
::
_getSaveFileName
(
parent
,
caption
,
dir
,
filter
,
defaultSuffix
,
options
);
}
else
#endif
#endif
{
QString
defaultSuffixCopy
(
defaultSuffix
);
...
...
src/QGCMessageBox.h
View file @
0ce6d773
...
...
@@ -20,11 +20,8 @@
#include "MainWindow.h"
#include "QGCApplication.h"
#ifdef QT_DEBUG
#ifndef __mobile__
#include "UnitTest.h"
#endif
#ifdef UNITTEST_BUILD
#include "UnitTest.h"
#endif
/// @file
...
...
@@ -99,12 +96,10 @@ private:
qDebug
()
<<
"QGCMessageBox (unit testing)"
<<
title
<<
text
;
#ifdef QT_DEBUG
#ifndef __mobile__
#ifdef UNITTEST_BUILD
if
(
qgcApp
()
->
runningUnitTests
())
{
return
UnitTest
::
_messageBox
(
icon
,
title
,
text
,
buttons
,
defaultButton
);
}
else
#endif
#endif
{
#ifdef __macos__
...
...
src/QGCQuickWidget.cc
View file @
0ce6d773
...
...
@@ -9,7 +9,6 @@
#include "QGCQuickWidget.h"
#include "AutoPilotPluginManager.h"
#include "MultiVehicleManager.h"
#include "JoystickManager.h"
#include "QGCApplication.h"
...
...
src/QGCToolbox.cc
View file @
0ce6d773
...
...
@@ -8,7 +8,6 @@
****************************************************************************/
#include "AutoPilotPluginManager.h"
#include "FactSystem.h"
#include "FirmwarePluginManager.h"
#include "FlightMapSettings.h"
...
...
@@ -32,7 +31,6 @@
QGCToolbox
::
QGCToolbox
(
QGCApplication
*
app
)
:
_audioOutput
(
NULL
)
,
_autopilotPluginManager
(
NULL
)
,
_factSystem
(
NULL
)
,
_firmwarePluginManager
(
NULL
)
,
_flightMapSettings
(
NULL
)
...
...
@@ -54,7 +52,6 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
,
_mavlinkLogManager
(
NULL
)
{
_audioOutput
=
new
GAudioOutput
(
app
);
_autopilotPluginManager
=
new
AutoPilotPluginManager
(
app
);
_factSystem
=
new
FactSystem
(
app
);
_firmwarePluginManager
=
new
FirmwarePluginManager
(
app
);
_flightMapSettings
=
new
FlightMapSettings
(
app
);
...
...
@@ -79,7 +76,6 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
void
QGCToolbox
::
setChildToolboxes
(
void
)
{
_audioOutput
->
setToolbox
(
this
);
_autopilotPluginManager
->
setToolbox
(
this
);
_factSystem
->
setToolbox
(
this
);
_firmwarePluginManager
->
setToolbox
(
this
);
_flightMapSettings
->
setToolbox
(
this
);
...
...
@@ -106,7 +102,6 @@ QGCToolbox::~QGCToolbox()
delete
_videoManager
;
delete
_mavlinkLogManager
;
delete
_audioOutput
;
delete
_autopilotPluginManager
;
delete
_factSystem
;
delete
_firmwarePluginManager
;
delete
_flightMapSettings
;
...
...
src/QGCToolbox.h
View file @
0ce6d773
...
...
@@ -13,7 +13,6 @@
#include <QObject>
class
AutoPilotPluginManager
;
class
FactSystem
;
class
FirmwarePluginManager
;
class
FlightMapSettings
;
...
...
@@ -41,7 +40,6 @@ public:
QGCToolbox
(
QGCApplication
*
app
);
~
QGCToolbox
();
AutoPilotPluginManager
*
autopilotPluginManager
(
void
)
{
return
_autopilotPluginManager
;
}
FirmwarePluginManager
*
firmwarePluginManager
(
void
)
{
return
_firmwarePluginManager
;
}
FlightMapSettings
*
flightMapSettings
(
void
)
{
return
_flightMapSettings
;
}
GAudioOutput
*
audioOutput
(
void
)
{
return
_audioOutput
;
}
...
...
@@ -67,7 +65,6 @@ private:
void
setChildToolboxes
(
void
);
GAudioOutput
*
_audioOutput
;
AutoPilotPluginManager
*
_autopilotPluginManager
;
FactSystem
*
_factSystem
;
FirmwarePluginManager
*
_firmwarePluginManager
;
FlightMapSettings
*
_flightMapSettings
;
...
...
src/QmlControls/ParameterEditorController.cc
View file @
0ce6d773
...
...
@@ -12,7 +12,6 @@
/// @author Don Gagne <don@thegagnes.com>
#include "ParameterEditorController.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include "ParameterManager.h"
...
...
src/Vehicle/MultiVehicleManager.cc
View file @
0ce6d773
...
...
@@ -33,7 +33,6 @@ MultiVehicleManager::MultiVehicleManager(QGCApplication* app)
,
_activeVehicle
(
NULL
)
,
_offlineEditingVehicle
(
NULL
)
,
_firmwarePluginManager
(
NULL
)
,
_autopilotPluginManager
(
NULL
)
,
_joystickManager
(
NULL
)
,
_mavlinkProtocol
(
NULL
)
,
_gcsHeartbeatEnabled
(
true
)
...
...
@@ -55,7 +54,6 @@ void MultiVehicleManager::setToolbox(QGCToolbox *toolbox)
QGCTool
::
setToolbox
(
toolbox
);
_firmwarePluginManager
=
_toolbox
->
firmwarePluginManager
();
_autopilotPluginManager
=
_toolbox
->
autopilotPluginManager
();
_joystickManager
=
_toolbox
->
joystickManager
();
_mavlinkProtocol
=
_toolbox
->
mavlinkProtocol
();
...
...
@@ -98,7 +96,7 @@ void MultiVehicleManager::_vehicleHeartbeatInfo(LinkInterface* link, int vehicle
// return;
// }
Vehicle
*
vehicle
=
new
Vehicle
(
link
,
vehicleId
,
(
MAV_AUTOPILOT
)
vehicleFirmwareType
,
(
MAV_TYPE
)
vehicleType
,
_firmwarePluginManager
,
_
autopilotPluginManager
,
_
joystickManager
);
Vehicle
*
vehicle
=
new
Vehicle
(
link
,
vehicleId
,
(
MAV_AUTOPILOT
)
vehicleFirmwareType
,
(
MAV_TYPE
)
vehicleType
,
_firmwarePluginManager
,
_joystickManager
);
connect
(
vehicle
,
&
Vehicle
::
allLinksInactive
,
this
,
&
MultiVehicleManager
::
_deleteVehiclePhase1
);
connect
(
vehicle
->
parameterManager
(),
&
ParameterManager
::
parametersReadyChanged
,
this
,
&
MultiVehicleManager
::
_vehicleParametersReadyChanged
);
...
...
src/Vehicle/MultiVehicleManager.h
View file @
0ce6d773
...
...
@@ -21,7 +21,6 @@
#include "QGCLoggingCategory.h"
class
FirmwarePluginManager
;
class
AutoPilotPluginManager
;
class
FollowMe
;
class
JoystickManager
;
class
QGCApplication
;
...
...
@@ -113,7 +112,6 @@ private:
QmlObjectListModel
_vehicles
;
FirmwarePluginManager
*
_firmwarePluginManager
;
AutoPilotPluginManager
*
_autopilotPluginManager
;
JoystickManager
*
_joystickManager
;
MAVLinkProtocol
*
_mavlinkProtocol
;
...
...
src/Vehicle/Vehicle.cc
View file @
0ce6d773
...
...
@@ -13,7 +13,6 @@
#include "FirmwarePluginManager.h"
#include "LinkManager.h"
#include "FirmwarePlugin.h"
#include "AutoPilotPluginManager.h"
#include "UAS.h"
#include "JoystickManager.h"
#include "MissionManager.h"
...
...
@@ -61,7 +60,6 @@ Vehicle::Vehicle(LinkInterface* link,
MAV_AUTOPILOT
firmwareType
,
MAV_TYPE
vehicleType
,
FirmwarePluginManager
*
firmwarePluginManager
,
AutoPilotPluginManager
*
autopilotPluginManager
,
JoystickManager
*
joystickManager
)
:
FactGroup
(
_vehicleUIUpdateRateMSecs
,
":/json/Vehicle/VehicleFact.json"
)
,
_id
(
vehicleId
)
...
...
@@ -70,6 +68,7 @@ Vehicle::Vehicle(LinkInterface* link,
,
_firmwareType
(
firmwareType
)
,
_vehicleType
(
vehicleType
)
,
_firmwarePlugin
(
NULL
)
,
_firmwarePluginInstanceData
(
NULL
)
,
_autopilotPlugin
(
NULL
)
,
_mavlink
(
NULL
)
,
_soloFirmware
(
false
)
...
...
@@ -114,7 +113,6 @@ Vehicle::Vehicle(LinkInterface* link,
,
_custom_mode
(
0
)
,
_nextSendMessageMultipleIndex
(
0
)
,
_firmwarePluginManager
(
firmwarePluginManager
)
,
_autopilotPluginManager
(
autopilotPluginManager
)
,
_joystickManager
(
joystickManager
)
,
_flowImageIndex
(
0
)
,
_allLinksInactiveSent
(
false
)
...
...
@@ -161,7 +159,7 @@ Vehicle::Vehicle(LinkInterface* link,
connect
(
this
,
&
Vehicle
::
remoteControlRSSIChanged
,
this
,
&
Vehicle
::
_remoteControlRSSIChanged
);
_firmwarePlugin
=
_firmwarePluginManager
->
firmwarePluginForAutopilot
(
_firmwareType
,
_vehicleType
);
_autopilotPlugin
=
_
autopilotPluginManager
->
newAutopilotPluginForVehicle
(
this
);
_autopilotPlugin
=
_
firmwarePlugin
->
autopilotPlugin
(
this
);
// connect this vehicle to the follow me handle manager
connect
(
this
,
&
Vehicle
::
flightModeChanged
,
qgcApp
()
->
toolbox
()
->
followMe
(),
&
FollowMe
::
followMeHandleManager
);
...
...
@@ -277,6 +275,7 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
,
_firmwareType
(
firmwareType
)
,
_vehicleType
(
vehicleType
)
,
_firmwarePlugin
(
NULL
)
,
_firmwarePluginInstanceData
(
NULL
)
,
_autopilotPlugin
(
NULL
)
,
_joystickMode
(
JoystickModeRC
)
,
_joystickEnabled
(
false
)
...
...
@@ -319,7 +318,6 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
,
_custom_mode
(
0
)
,
_nextSendMessageMultipleIndex
(
0
)
,
_firmwarePluginManager
(
firmwarePluginManager
)
,
_autopilotPluginManager
(
NULL
)
,
_joystickManager
(
NULL
)
,
_flowImageIndex
(
0
)
,
_allLinksInactiveSent
(
false
)
...
...
@@ -2044,23 +2042,17 @@ VehicleGPSFactGroup::VehicleGPSFactGroup(QObject* parent)
_courseOverGroundFact
.
setRawValue
(
std
::
numeric_limits
<
float
>::
quiet_NaN
());
}
//-----------------------------------------------------------------------------
void
Vehicle
::
startMavlinkLog
()
void
Vehicle
::
startMavlinkLog
()
{
doCommandLong
(
defaultComponentId
(),
MAV_CMD_LOGGING_START
);
}
//-----------------------------------------------------------------------------
void
Vehicle
::
stopMavlinkLog
()
void
Vehicle
::
stopMavlinkLog
()
{
doCommandLong
(
defaultComponentId
(),
MAV_CMD_LOGGING_STOP
);
}
//-----------------------------------------------------------------------------
void
Vehicle
::
_ackMavlinkLogData
(
uint16_t
sequence
)
void
Vehicle
::
_ackMavlinkLogData
(
uint16_t
sequence
)
{
mavlink_message_t
msg
;
mavlink_logging_ack_t
ack
;
...
...
@@ -2076,9 +2068,7 @@ Vehicle::_ackMavlinkLogData(uint16_t sequence)
sendMessageOnLink
(
priorityLink
(),
msg
);
}
//-----------------------------------------------------------------------------
void
Vehicle
::
_handleMavlinkLoggingData
(
mavlink_message_t
&
message
)
void
Vehicle
::
_handleMavlinkLoggingData
(
mavlink_message_t
&
message
)
{
mavlink_logging_data_t
log
;
mavlink_msg_logging_data_decode
(
&
message
,
&
log
);
...
...
@@ -2086,9 +2076,7 @@ Vehicle::_handleMavlinkLoggingData(mavlink_message_t& message)
log
.
first_message_offset
,
QByteArray
((
const
char
*
)
log
.
data
,
log
.
length
),
false
);
}
//-----------------------------------------------------------------------------
void
Vehicle
::
_handleMavlinkLoggingDataAcked
(
mavlink_message_t
&
message
)
void
Vehicle
::
_handleMavlinkLoggingDataAcked
(
mavlink_message_t
&
message
)
{
mavlink_logging_data_t
log
;
mavlink_msg_logging_data_decode
(
&
message
,
&
log
);
...
...
@@ -2097,6 +2085,12 @@ Vehicle::_handleMavlinkLoggingDataAcked(mavlink_message_t& message)
log
.
first_message_offset
,
QByteArray
((
const
char
*
)
log
.
data
,
log
.
length
),
true
);
}
void
Vehicle
::
setFirmwarePluginInstanceData
(
QObject
*
firmwarePluginInstanceData
)
{
firmwarePluginInstanceData
->
setParent
(
this
);
_firmwarePluginInstanceData
=
firmwarePluginInstanceData
;
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
...
src/Vehicle/Vehicle.h
View file @
0ce6d773
...
...
@@ -31,7 +31,6 @@ class UASInterface;
class
FirmwarePlugin
;
class
FirmwarePluginManager
;
class
AutoPilotPlugin
;
class
AutoPilotPluginManager
;
class
MissionManager
;
class
GeoFenceManager
;
class
RallyPointManager
;
...
...
@@ -214,7 +213,6 @@ public:
MAV_AUTOPILOT
firmwareType
,
MAV_TYPE
vehicleType
,
FirmwarePluginManager
*
firmwarePluginManager
,
AutoPilotPluginManager
*
autopilotPluginManager
,
JoystickManager
*
joystickManager
);
// The following is used to create a disconnected Vehicle for use while offline editing.
...
...
@@ -579,6 +577,13 @@ public:
/// @return true: X confiuration, false: Plus configuration
bool
xConfigMotors
(
void
);
/// @return Firmware plugin instance data associated with this Vehicle
QObject
*
firmwarePluginInstanceData
(
void
)
{
return
_firmwarePluginInstanceData
;
}
/// Sets the firmware plugin instance data associated with this Vehicle. This object will be parented to the Vehicle
/// and destroyed when the vehicle goes away.
void
setFirmwarePluginInstanceData
(
QObject
*
firmwarePluginInstanceData
);
public
slots
:
void
setLatitude
(
double
latitude
);
void
setLongitude
(
double
longitude
);
...
...
@@ -717,6 +722,7 @@ private:
MAV_AUTOPILOT
_firmwareType
;
MAV_TYPE
_vehicleType
;
FirmwarePlugin
*
_firmwarePlugin
;
QObject
*
_firmwarePluginInstanceData
;
AutoPilotPlugin
*
_autopilotPlugin
;
MAVLinkProtocol
*
_mavlink
;
bool
_soloFirmware
;
...
...
@@ -806,7 +812,6 @@ private:
// Toolbox references
FirmwarePluginManager
*
_firmwarePluginManager
;
AutoPilotPluginManager
*
_autopilotPluginManager
;
JoystickManager
*
_joystickManager
;
int
_flowImageIndex
;
...
...
src/comm/MockLink.cc
View file @
0ce6d773
...
...
@@ -11,8 +11,9 @@
#include "MockLink.h"
#include "QGCLoggingCategory.h"
#include "QGCApplication.h"
#ifndef __mobile__
#include "UnitTest.h"
#ifdef UNITTEST_BUILD
#include "UnitTest.h"
#endif
#include <QTimer>
...
...
@@ -21,7 +22,8 @@
#include <string.h>
#include "px4_custom_mode.h"
// FIXME: Hack to work around clean headers
#include "FirmwarePlugin/PX4/px4_custom_mode.h"
QGC_LOGGING_CATEGORY
(
MockLinkLog
,
"MockLinkLog"
)
QGC_LOGGING_CATEGORY
(
MockLinkVerboseLog
,
"MockLinkVerboseLog"
)
...
...
@@ -1159,7 +1161,7 @@ void MockLink::_handleLogRequestData(const mavlink_message_t& msg)
mavlink_msg_log_request_data_decode
(
&
msg
,
&
request
);
if
(
_logDownloadFilename
.
isEmpty
())
{
#if
ndef __mobile__
#if
def UNITTEST_BUILD
_logDownloadFilename
=
UnitTest
::
createRandomFile
(
_logDownloadFileSize
);
#endif
}
...
...
src/main.cc
View file @
0ce6d773
...
...
@@ -33,10 +33,11 @@
#include "QGCSerialPortInfo.h"
#endif
#ifdef UNITTEST_BUILD
#include "UnitTest.h"
#endif
#ifdef QT_DEBUG
#ifndef __mobile__
#include "UnitTest.h"
#endif
#include "CmdLineOptParser.h"
#ifdef Q_OS_WIN
#include <crtdbg.h>
...
...
@@ -229,8 +230,7 @@ int main(int argc, char *argv[])
int
exitCode
=
0
;
#ifndef __mobile__
#ifdef QT_DEBUG
#ifdef UNITTEST_BUILD
if
(
runUnitTests
)
{
for
(
int
i
=
0
;
i
<
(
stressUnitTests
?
20
:
1
);
i
++
)
{
if
(
!
app
->
_initForUnitTests
())
{
...
...
@@ -249,7 +249,6 @@ int main(int argc, char *argv[])
}
}
}
else
#endif
#endif
{
if
(
!
app
->
_initForNormalAppBoot
())
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment