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
4faf39fd
Commit
4faf39fd
authored
May 04, 2018
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Don't query terrain from Fly View
parent
535ff2ab
Changes
41
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
187 additions
and
189 deletions
+187
-189
FlightDisplayView.qml
src/FlightDisplay/FlightDisplayView.qml
+1
-1
CameraSectionTest.cc
src/MissionManager/CameraSectionTest.cc
+34
-34
ComplexMissionItem.cc
src/MissionManager/ComplexMissionItem.cc
+2
-2
ComplexMissionItem.h
src/MissionManager/ComplexMissionItem.h
+1
-1
CorridorScanComplexItem.cc
src/MissionManager/CorridorScanComplexItem.cc
+2
-2
CorridorScanComplexItem.h
src/MissionManager/CorridorScanComplexItem.h
+1
-1
CorridorScanComplexItemTest.cc
src/MissionManager/CorridorScanComplexItemTest.cc
+1
-1
FixedWingLandingComplexItem.cc
src/MissionManager/FixedWingLandingComplexItem.cc
+4
-4
FixedWingLandingComplexItem.h
src/MissionManager/FixedWingLandingComplexItem.h
+2
-2
GeoFenceController.cc
src/MissionManager/GeoFenceController.cc
+6
-6
GeoFenceController.h
src/MissionManager/GeoFenceController.h
+1
-1
MissionController.cc
src/MissionManager/MissionController.cc
+37
-37
MissionController.h
src/MissionManager/MissionController.h
+1
-1
MissionControllerTest.cc
src/MissionManager/MissionControllerTest.cc
+2
-2
MissionItemTest.cc
src/MissionManager/MissionItemTest.cc
+2
-2
MissionSettingsItem.cc
src/MissionManager/MissionSettingsItem.cc
+3
-4
MissionSettingsItem.h
src/MissionManager/MissionSettingsItem.h
+1
-2
MissionSettingsTest.cc
src/MissionManager/MissionSettingsTest.cc
+1
-1
PlanElementController.cc
src/MissionManager/PlanElementController.cc
+6
-6
PlanElementController.h
src/MissionManager/PlanElementController.h
+2
-3
PlanMasterController.cc
src/MissionManager/PlanMasterController.cc
+28
-28
PlanMasterController.h
src/MissionManager/PlanMasterController.h
+2
-3
PlanMasterControllerTest.cc
src/MissionManager/PlanMasterControllerTest.cc
+1
-1
RallyPointController.cc
src/MissionManager/RallyPointController.cc
+3
-3
SectionTest.cc
src/MissionManager/SectionTest.cc
+3
-3
SimpleMissionItem.cc
src/MissionManager/SimpleMissionItem.cc
+9
-9
SimpleMissionItem.h
src/MissionManager/SimpleMissionItem.h
+3
-3
SimpleMissionItemTest.cc
src/MissionManager/SimpleMissionItemTest.cc
+3
-3
SpeedSectionTest.cc
src/MissionManager/SpeedSectionTest.cc
+3
-4
StructureScanComplexItem.cc
src/MissionManager/StructureScanComplexItem.cc
+2
-2
StructureScanComplexItem.h
src/MissionManager/StructureScanComplexItem.h
+1
-1
StructureScanComplexItemTest.cc
src/MissionManager/StructureScanComplexItemTest.cc
+2
-2
SurveyComplexItem.cc
src/MissionManager/SurveyComplexItem.cc
+2
-2
SurveyComplexItem.h
src/MissionManager/SurveyComplexItem.h
+1
-1
SurveyComplexItemTest.cc
src/MissionManager/SurveyComplexItemTest.cc
+1
-1
TransectStyleComplexItem.cc
src/MissionManager/TransectStyleComplexItem.cc
+2
-2
TransectStyleComplexItem.h
src/MissionManager/TransectStyleComplexItem.h
+1
-1
TransectStyleComplexItemTest.cc
src/MissionManager/TransectStyleComplexItemTest.cc
+1
-1
VisualMissionItem.cc
src/MissionManager/VisualMissionItem.cc
+5
-3
VisualMissionItem.h
src/MissionManager/VisualMissionItem.h
+3
-2
PlanView.qml
src/PlanView/PlanView.qml
+1
-1
No files found.
src/FlightDisplay/FlightDisplayView.qml
View file @
4faf39fd
...
...
@@ -109,7 +109,7 @@ QGCView {
PlanMasterController
{
id
:
masterController
Component.onCompleted
:
start
(
false
/* editMode
*/
)
Component.onCompleted
:
start
(
true
/* flyView
*/
)
}
Connections
{
...
...
src/MissionManager/CameraSectionTest.cc
View file @
4faf39fd
This diff is collapsed.
Click to expand it.
src/MissionManager/ComplexMissionItem.cc
View file @
4faf39fd
...
...
@@ -11,8 +11,8 @@
const
char
*
ComplexMissionItem
::
jsonComplexItemTypeKey
=
"complexItemType"
;
ComplexMissionItem
::
ComplexMissionItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
parent
)
ComplexMissionItem
::
ComplexMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
flyView
,
parent
)
{
}
...
...
src/MissionManager/ComplexMissionItem.h
View file @
4faf39fd
...
...
@@ -17,7 +17,7 @@ class ComplexMissionItem : public VisualMissionItem
Q_OBJECT
public:
ComplexMissionItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
ComplexMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
const
ComplexMissionItem
&
operator
=
(
const
ComplexMissionItem
&
other
);
...
...
src/MissionManager/CorridorScanComplexItem.cc
View file @
4faf39fd
...
...
@@ -27,8 +27,8 @@ const char* CorridorScanComplexItem::_jsonEntryPointKey = "EntryPoint";
const
char
*
CorridorScanComplexItem
::
jsonComplexItemTypeValue
=
"CorridorScan"
;
CorridorScanComplexItem
::
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
settingsGroup
,
parent
)
CorridorScanComplexItem
::
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
flyView
,
settingsGroup
,
parent
)
,
_entryPoint
(
0
)
,
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/CorridorScan.SettingsGroup.json"
),
this
))
,
_corridorWidthFact
(
settingsGroup
,
_metaDataMap
[
corridorWidthName
])
...
...
src/MissionManager/CorridorScanComplexItem.h
View file @
4faf39fd
...
...
@@ -23,7 +23,7 @@ class CorridorScanComplexItem : public TransectStyleComplexItem
Q_OBJECT
public:
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
Q_PROPERTY
(
QGCMapPolyline
*
corridorPolyline
READ
corridorPolyline
CONSTANT
)
Q_PROPERTY
(
Fact
*
corridorWidth
READ
corridorWidth
CONSTANT
)
...
...
src/MissionManager/CorridorScanComplexItemTest.cc
View file @
4faf39fd
...
...
@@ -23,7 +23,7 @@ void CorridorScanComplexItemTest::init(void)
UnitTest
::
init
();
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_corridorItem
=
new
CorridorScanComplexItem
(
_offlineVehicle
,
this
);
_corridorItem
=
new
CorridorScanComplexItem
(
_offlineVehicle
,
false
/* flyView */
,
this
);
// vehicleSpeed need for terrain calcs
MissionController
::
MissionFlightStatus_t
missionFlightStatus
;
...
...
src/MissionManager/FixedWingLandingComplexItem.cc
View file @
4faf39fd
...
...
@@ -39,8 +39,8 @@ const char* FixedWingLandingComplexItem::_jsonFallRateKey = "fal
const
char
*
FixedWingLandingComplexItem
::
_jsonLandingAltitudeRelativeKey
=
"landAltitudeRelative"
;
const
char
*
FixedWingLandingComplexItem
::
_jsonLoiterAltitudeRelativeKey
=
"loiterAltitudeRelative"
;
FixedWingLandingComplexItem
::
FixedWingLandingComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
parent
)
FixedWingLandingComplexItem
::
FixedWingLandingComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
flyView
,
parent
)
,
_sequenceNumber
(
0
)
,
_dirty
(
false
)
,
_landingCoordSet
(
false
)
...
...
@@ -283,7 +283,7 @@ void FixedWingLandingComplexItem::appendMissionItems(QList<MissionItem*>& items,
items
.
append
(
item
);
}
bool
FixedWingLandingComplexItem
::
scanForItem
(
QmlObjectListModel
*
visualItems
,
Vehicle
*
vehicle
)
bool
FixedWingLandingComplexItem
::
scanForItem
(
QmlObjectListModel
*
visualItems
,
bool
flyView
,
Vehicle
*
vehicle
)
{
qCDebug
(
FixedWingLandingComplexItemLog
)
<<
"FixedWingLandingComplexItem::scanForItem count"
<<
visualItems
->
count
();
...
...
@@ -328,7 +328,7 @@ bool FixedWingLandingComplexItem::scanForItem(QmlObjectListModel* visualItems, V
// We made it this far so we do have a Fixed Wing Landing Pattern item at the end of the mission
FixedWingLandingComplexItem
*
complexItem
=
new
FixedWingLandingComplexItem
(
vehicle
,
visualItems
);
FixedWingLandingComplexItem
*
complexItem
=
new
FixedWingLandingComplexItem
(
vehicle
,
flyView
,
visualItems
);
complexItem
->
_ignoreRecalcSignals
=
true
;
...
...
src/MissionManager/FixedWingLandingComplexItem.h
View file @
4faf39fd
...
...
@@ -22,7 +22,7 @@ class FixedWingLandingComplexItem : public ComplexMissionItem
Q_OBJECT
public:
FixedWingLandingComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
FixedWingLandingComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
Q_PROPERTY
(
Fact
*
loiterAltitude
READ
loiterAltitude
CONSTANT
)
Q_PROPERTY
(
Fact
*
loiterRadius
READ
loiterRadius
CONSTANT
)
...
...
@@ -52,7 +52,7 @@ public:
void
setLoiterCoordinate
(
const
QGeoCoordinate
&
coordinate
);
/// Scans the loaded items for a landing pattern complex item
static
bool
scanForItem
(
QmlObjectListModel
*
visualItems
,
Vehicle
*
vehicle
);
static
bool
scanForItem
(
QmlObjectListModel
*
visualItems
,
bool
flyView
,
Vehicle
*
vehicle
);
// Overrides from ComplexMissionItem
...
...
src/MissionManager/GeoFenceController.cc
View file @
4faf39fd
...
...
@@ -54,11 +54,11 @@ GeoFenceController::~GeoFenceController()
}
void
GeoFenceController
::
start
(
bool
editMode
)
void
GeoFenceController
::
start
(
bool
flyView
)
{
qCDebug
(
GeoFenceControllerLog
)
<<
"start
editMode"
<<
editMode
;
qCDebug
(
GeoFenceControllerLog
)
<<
"start
flyView"
<<
flyView
;
PlanElementController
::
start
(
editMode
);
PlanElementController
::
start
(
flyView
);
_init
();
}
...
...
@@ -269,7 +269,7 @@ void GeoFenceController::_managerLoadComplete(void)
{
// Fly view always reloads on _loadComplete
// Plan view only reloads on _loadComplete if specifically requested
if
(
!
_editMode
||
_itemsRequested
)
{
if
(
_flyView
||
_itemsRequested
)
{
_setReturnPointFromManager
(
_geoFenceManager
->
breachReturnPoint
());
_setFenceFromManager
(
_geoFenceManager
->
polygons
(),
_geoFenceManager
->
circles
());
setDirty
(
false
);
...
...
@@ -282,7 +282,7 @@ void GeoFenceController::_managerLoadComplete(void)
void
GeoFenceController
::
_managerSendComplete
(
bool
error
)
{
// Fly view always reloads on manager sendComplete
if
(
!
error
&&
!
_editMode
)
{
if
(
!
error
&&
_flyView
)
{
showPlanFromManagerVehicle
();
}
}
...
...
@@ -307,7 +307,7 @@ void GeoFenceController::_updateContainsItems(void)
bool
GeoFenceController
::
showPlanFromManagerVehicle
(
void
)
{
qCDebug
(
GeoFenceControllerLog
)
<<
"showPlanFromManagerVehicle
"
<<
_editMode
;
qCDebug
(
GeoFenceControllerLog
)
<<
"showPlanFromManagerVehicle
_flyView"
<<
_flyView
;
if
(
_masterController
->
offline
())
{
qCWarning
(
GeoFenceControllerLog
)
<<
"GeoFenceController::showPlanFromManagerVehicle called while offline"
;
return
true
;
// stops further propagation of showPlanFromManagerVehicle due to error
...
...
src/MissionManager/GeoFenceController.h
View file @
4faf39fd
...
...
@@ -62,7 +62,7 @@ public:
// Overrides from PlanElementController
bool
supported
(
void
)
const
final
;
void
start
(
bool
editMode
)
final
;
void
start
(
bool
flyView
)
final
;
void
save
(
QJsonObject
&
json
)
final
;
bool
load
(
const
QJsonObject
&
json
,
QString
&
errorString
)
final
;
void
loadFromVehicle
(
void
)
final
;
...
...
src/MissionManager/MissionController.cc
View file @
4faf39fd
This diff is collapsed.
Click to expand it.
src/MissionManager/MissionController.h
View file @
4faf39fd
...
...
@@ -129,7 +129,7 @@ public:
// Overrides from PlanElementController
bool
supported
(
void
)
const
final
{
return
true
;
}
void
start
(
bool
editMode
)
final
;
void
start
(
bool
flyView
)
final
;
void
save
(
QJsonObject
&
json
)
final
;
bool
load
(
const
QJsonObject
&
json
,
QString
&
errorString
)
final
;
void
loadFromVehicle
(
void
)
final
;
...
...
src/MissionManager/MissionControllerTest.cc
View file @
4faf39fd
...
...
@@ -59,7 +59,7 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
Q_CHECK_PTR
(
_multiSpyMissionController
);
QCOMPARE
(
_multiSpyMissionController
->
init
(
_missionController
,
_rgMissionControllerSignals
,
_cMissionControllerSignals
),
true
);
_masterController
->
start
(
true
/* editMode
*/
);
_masterController
->
start
(
false
/* flyView
*/
);
// All signals should some through on start
QCOMPARE
(
_multiSpyMissionController
->
checkOnlySignalsByMask
(
visualItemsChangedSignalMask
|
waypointLinesChangedSignalMask
),
true
);
...
...
@@ -166,7 +166,7 @@ void MissionControllerTest::_testOfflineToOnlineWorker(MAV_AUTOPILOT firmwareTyp
// Start offline and add item
_missionController = new MissionController();
Q_CHECK_PTR(_missionController);
_missionController->start(
true /* editMode
*/);
_missionController->start(
false /* flyView
*/);
_missionController->insertSimpleMissionItem(QGeoCoordinate(37.803784, -122.462276), _missionController->visualItems()->count());
// Go online to empty vehicle
...
...
src/MissionManager/MissionItemTest.cc
View file @
4faf39fd
...
...
@@ -282,7 +282,7 @@ void MissionItemTest::_testSimpleLoadFromStream(void)
{
// We specifically test SimpleMissionItem loading as well since it has additional
// signalling which can affect values.
SimpleMissionItem
simpleMissionItem
(
_offlineVehicle
);
SimpleMissionItem
simpleMissionItem
(
_offlineVehicle
,
false
/* flyView */
,
NULL
);
QString
testString
(
"10
\t
0
\t
3
\t
80
\t
10
\t
20
\t
30
\t
40
\t
-10
\t
-20
\t
-30
\t
1
\r\n
"
);
QTextStream
testStream
(
&
testString
,
QIODevice
::
ReadOnly
);
...
...
@@ -452,7 +452,7 @@ void MissionItemTest::_testSimpleLoadFromJson(void)
// We specifically test SimpleMissionItem loading as well since it has additional
// signalling which can affect values.
SimpleMissionItem
simpleMissionItem
(
_offlineVehicle
);
SimpleMissionItem
simpleMissionItem
(
_offlineVehicle
,
false
/* flyView */
,
NULL
);
QString
errorString
;
QJsonArray
coordinateArray
;
QJsonObject
jsonObject
;
...
...
src/MissionManager/MissionSettingsItem.cc
View file @
4faf39fd
...
...
@@ -27,9 +27,8 @@ const char* MissionSettingsItem::_plannedHomePositionAltitudeName = "PlannedHome
QMap
<
QString
,
FactMetaData
*>
MissionSettingsItem
::
_metaDataMap
;
MissionSettingsItem
::
MissionSettingsItem
(
Vehicle
*
vehicle
,
bool
planView
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
parent
)
,
_planView
(
planView
)
MissionSettingsItem
::
MissionSettingsItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
flyView
,
parent
)
,
_plannedHomePositionAltitudeFact
(
0
,
_plannedHomePositionAltitudeName
,
FactMetaData
::
valueTypeDouble
)
,
_plannedHomePositionFromVehicle
(
false
)
,
_missionEndRTL
(
false
)
...
...
@@ -303,5 +302,5 @@ void MissionSettingsItem::_setHomeAltFromTerrain(double terrainAltitude)
QString
MissionSettingsItem
::
abbreviation
(
void
)
const
{
return
_
planView
?
tr
(
"Planned Home"
)
:
tr
(
"H
"
);
return
_
flyView
?
tr
(
"H"
)
:
tr
(
"Planned Home
"
);
}
src/MissionManager/MissionSettingsItem.h
View file @
4faf39fd
...
...
@@ -24,7 +24,7 @@ class MissionSettingsItem : public ComplexMissionItem
Q_OBJECT
public:
MissionSettingsItem
(
Vehicle
*
vehicle
,
bool
planView
,
QObject
*
parent
=
NULL
);
MissionSettingsItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
Q_PROPERTY
(
Fact
*
plannedHomePositionAltitude
READ
plannedHomePositionAltitude
CONSTANT
)
Q_PROPERTY
(
bool
missionEndRTL
READ
missionEndRTL
WRITE
setMissionEndRTL
NOTIFY
missionEndRTLChanged
)
...
...
@@ -101,7 +101,6 @@ private slots:
void
_setHomeAltFromTerrain
(
double
terrainAltitude
);
private:
bool
_planView
;
QGeoCoordinate
_plannedHomePositionCoordinate
;
// Does not include altitude
Fact
_plannedHomePositionAltitudeFact
;
bool
_plannedHomePositionFromVehicle
;
...
...
src/MissionManager/MissionSettingsTest.cc
View file @
4faf39fd
...
...
@@ -22,7 +22,7 @@ void MissionSettingsTest::init(void)
{
VisualMissionItemTest
::
init
();
_settingsItem
=
new
MissionSettingsItem
(
_offlineVehicle
,
true
/* plan
View */
,
this
);
_settingsItem
=
new
MissionSettingsItem
(
_offlineVehicle
,
false
/* fly
View */
,
this
);
}
void
MissionSettingsTest
::
cleanup
(
void
)
...
...
src/MissionManager/PlanElementController.cc
View file @
4faf39fd
...
...
@@ -15,11 +15,11 @@
#include "AppSettings.h"
PlanElementController
::
PlanElementController
(
PlanMasterController
*
masterController
,
QObject
*
parent
)
:
QObject
(
parent
)
,
_masterController
(
masterController
)
:
QObject
(
parent
)
,
_masterController
(
masterController
)
,
_controllerVehicle
(
masterController
->
controllerVehicle
())
,
_managerVehicle
(
masterController
->
managerVehicle
())
,
_
editMode
(
false
)
,
_managerVehicle
(
masterController
->
managerVehicle
())
,
_
flyView
(
false
)
{
}
...
...
@@ -29,9 +29,9 @@ PlanElementController::~PlanElementController()
}
void
PlanElementController
::
start
(
bool
editMode
)
void
PlanElementController
::
start
(
bool
flyView
)
{
_
editMode
=
editMode
;
_
flyView
=
flyView
;
}
void
PlanElementController
::
managerVehicleChanged
(
Vehicle
*
managerVehicle
)
...
...
src/MissionManager/PlanElementController.h
View file @
4faf39fd
...
...
@@ -33,8 +33,7 @@ public:
Q_PROPERTY
(
bool
dirty
READ
dirty
WRITE
setDirty
NOTIFY
dirtyChanged
)
///< true: unsaved/sent changes are present, false: no changes since last save/send
/// Should be called immediately upon Component.onCompleted.
/// @param editMode true: controller being used in Plan view, false: controller being used in Fly view
virtual
void
start
(
bool
editMode
);
virtual
void
start
(
bool
flyView
);
virtual
void
save
(
QJsonObject
&
json
)
=
0
;
virtual
bool
load
(
const
QJsonObject
&
json
,
QString
&
errorString
)
=
0
;
...
...
@@ -72,7 +71,7 @@ protected:
PlanMasterController
*
_masterController
;
Vehicle
*
_controllerVehicle
;
///< Offline controller vehicle
Vehicle
*
_managerVehicle
;
///< Either active vehicle or _controllerVehicle if none
bool
_
editMode
;
bool
_
flyView
;
};
#endif
src/MissionManager/PlanMasterController.cc
View file @
4faf39fd
...
...
@@ -29,20 +29,20 @@ const char* PlanMasterController::_jsonGeoFenceObjectKey = "geoFence";
const
char
*
PlanMasterController
::
_jsonRallyPointsObjectKey
=
"rallyPoints"
;
PlanMasterController
::
PlanMasterController
(
QObject
*
parent
)
:
QObject
(
parent
)
,
_multiVehicleMgr
(
qgcApp
()
->
toolbox
()
->
multiVehicleManager
())
,
_controllerVehicle
(
new
Vehicle
((
MAV_AUTOPILOT
)
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
appSettings
()
->
offlineEditingFirmwareType
()
->
rawValue
().
toInt
(),
(
MAV_TYPE
)
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
appSettings
()
->
offlineEditingVehicleType
()
->
rawValue
().
toInt
(),
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
()))
,
_managerVehicle
(
_controllerVehicle
)
,
_
editMode
(
fals
e
)
,
_offline
(
true
)
,
_missionController
(
this
)
,
_geoFenceController
(
this
)
,
_rallyPointController
(
this
)
,
_loadGeoFence
(
false
)
,
_loadRallyPoints
(
false
)
,
_sendGeoFence
(
false
)
,
_sendRallyPoints
(
false
)
,
_syncInProgress
(
false
)
:
QObject
(
parent
)
,
_multiVehicleMgr
(
qgcApp
()
->
toolbox
()
->
multiVehicleManager
())
,
_controllerVehicle
(
new
Vehicle
((
MAV_AUTOPILOT
)
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
appSettings
()
->
offlineEditingFirmwareType
()
->
rawValue
().
toInt
(),
(
MAV_TYPE
)
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
appSettings
()
->
offlineEditingVehicleType
()
->
rawValue
().
toInt
(),
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
()))
,
_managerVehicle
(
_controllerVehicle
)
,
_
flyView
(
tru
e
)
,
_offline
(
true
)
,
_missionController
(
this
)
,
_geoFenceController
(
this
)
,
_rallyPointController
(
this
)
,
_loadGeoFence
(
false
)
,
_loadRallyPoints
(
false
)
,
_sendGeoFence
(
false
)
,
_sendRallyPoints
(
false
)
,
_syncInProgress
(
false
)
{
connect
(
&
_missionController
,
&
MissionController
::
dirtyChanged
,
this
,
&
PlanMasterController
::
dirtyChanged
);
connect
(
&
_geoFenceController
,
&
GeoFenceController
::
dirtyChanged
,
this
,
&
PlanMasterController
::
dirtyChanged
);
...
...
@@ -62,12 +62,12 @@ PlanMasterController::~PlanMasterController()
}
void
PlanMasterController
::
start
(
bool
editMode
)
void
PlanMasterController
::
start
(
bool
flyView
)
{
_
editMode
=
editMode
;
_missionController
.
start
(
editMode
);
_geoFenceController
.
start
(
editMode
);
_rallyPointController
.
start
(
editMode
);
_
flyView
=
flyView
;
_missionController
.
start
(
_flyView
);
_geoFenceController
.
start
(
_flyView
);
_rallyPointController
.
start
(
_flyView
);
connect
(
_multiVehicleMgr
,
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
PlanMasterController
::
_activeVehicleChanged
);
_activeVehicleChanged
(
_multiVehicleMgr
->
activeVehicle
());
...
...
@@ -75,10 +75,10 @@ void PlanMasterController::start(bool editMode)
void
PlanMasterController
::
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
{
_
editMode
=
fals
e
;
_missionController
.
start
(
false
);
_geoFenceController
.
start
(
false
);
_rallyPointController
.
start
(
false
);
_
flyView
=
tru
e
;
_missionController
.
start
(
_flyView
);
_geoFenceController
.
start
(
_flyView
);
_rallyPointController
.
start
(
_flyView
);
_activeVehicleChanged
(
vehicle
);
}
...
...
@@ -132,7 +132,7 @@ void PlanMasterController::_activeVehicleChanged(Vehicle* activeVehicle)
_geoFenceController
.
managerVehicleChanged
(
_managerVehicle
);
_rallyPointController
.
managerVehicleChanged
(
_managerVehicle
);
if
(
_editMode
)
{
if
(
!
_flyView
)
{
if
(
!
offline
())
{
// We are in Plan view and we have a newly connected vehicle:
// - If there is no plan available in Plan view show the one from the vehicle
...
...
@@ -164,7 +164,7 @@ void PlanMasterController::loadFromVehicle(void)
if
(
offline
())
{
qCWarning
(
PlanMasterControllerLog
)
<<
"PlanMasterController::loadFromVehicle called while offline"
;
}
else
if
(
!
_editMode
)
{
}
else
if
(
_flyView
)
{
qCWarning
(
PlanMasterControllerLog
)
<<
"PlanMasterController::loadFromVehicle called from Fly view"
;
}
else
if
(
syncInProgress
())
{
qCWarning
(
PlanMasterControllerLog
)
<<
"PlanMasterController::loadFromVehicle called while syncInProgress"
;
...
...
@@ -181,7 +181,7 @@ void PlanMasterController::loadFromVehicle(void)
void
PlanMasterController
::
_loadMissionComplete
(
void
)
{
if
(
_editMode
&&
_loadGeoFence
)
{
if
(
!
_flyView
&&
_loadGeoFence
)
{
_loadGeoFence
=
false
;
_loadRallyPoints
=
true
;
if
(
_geoFenceController
.
supported
())
{
...
...
@@ -198,7 +198,7 @@ void PlanMasterController::_loadMissionComplete(void)
void
PlanMasterController
::
_loadGeoFenceComplete
(
void
)
{
if
(
_editMode
&&
_loadRallyPoints
)
{
if
(
!
_flyView
&&
_loadRallyPoints
)
{
_loadRallyPoints
=
false
;
if
(
_rallyPointController
.
supported
())
{
qCDebug
(
PlanMasterControllerLog
)
<<
"PlanMasterController::_loadGeoFenceComplete _rallyPointController.loadFromVehicle"
;
...
...
@@ -214,7 +214,7 @@ void PlanMasterController::_loadGeoFenceComplete(void)
void
PlanMasterController
::
_loadRallyPointsComplete
(
void
)
{
if
(
_editMode
)
{
if
(
!
_flyView
)
{
_syncInProgress
=
false
;
emit
syncInProgressChanged
(
false
);
}
...
...
src/MissionManager/PlanMasterController.h
View file @
4faf39fd
...
...
@@ -46,8 +46,7 @@ public:
Q_PROPERTY
(
QStringList
saveKmlFilters
READ
saveKmlFilters
CONSTANT
)
///< File filter list saving KML files
/// Should be called immediately upon Component.onCompleted.
/// @param editMode true: controller being used in Plan view, false: controller being used in Fly view
Q_INVOKABLE
void
start
(
bool
editMode
);
Q_INVOKABLE
void
start
(
bool
flyView
);
/// Starts the controller using a single static active vehicle. Will not track global active vehicle changes.
Q_INVOKABLE
void
startStaticActiveVehicle
(
Vehicle
*
vehicle
);
...
...
@@ -111,7 +110,7 @@ private:
MultiVehicleManager
*
_multiVehicleMgr
;
Vehicle
*
_controllerVehicle
;
///< Offline controller vehicle
Vehicle
*
_managerVehicle
;
///< Either active vehicle or _controllerVehicle if none
bool
_
editMode
;
bool
_
flyView
;
bool
_offline
;
MissionController
_missionController
;
GeoFenceController
_geoFenceController
;
...
...
src/MissionManager/PlanMasterControllerTest.cc
View file @
4faf39fd
...
...
@@ -27,7 +27,7 @@ void PlanMasterControllerTest::init(void)
UnitTest
::
init
();
_masterController
=
new
PlanMasterController
(
this
);
_masterController
->
start
(
true
/* editMode
*/
);
_masterController
->
start
(
false
/* flyView
*/
);
}
void
PlanMasterControllerTest
::
cleanup
(
void
)
...
...
src/MissionManager/RallyPointController.cc
View file @
4faf39fd
...
...
@@ -192,7 +192,7 @@ void RallyPointController::_managerLoadComplete(const QList<QGeoCoordinate> rgPo
{
// Fly view always reloads on _loadComplete
// Plan view only reloads on _loadComplete if specifically requested
if
(
!
_editMode
||
_itemsRequested
)
{
if
(
_flyView
||
_itemsRequested
)
{
_points
.
clearAndDeleteContents
();
QObjectList
pointList
;
for
(
int
i
=
0
;
i
<
rgPoints
.
count
();
i
++
)
{
...
...
@@ -209,7 +209,7 @@ void RallyPointController::_managerLoadComplete(const QList<QGeoCoordinate> rgPo
void
RallyPointController
::
_managerSendComplete
(
bool
error
)
{
// Fly view always reloads after send
if
(
!
error
&&
_editMode
)
{
if
(
!
error
&&
!
_flyView
)
{
showPlanFromManagerVehicle
();
}
}
...
...
@@ -286,7 +286,7 @@ void RallyPointController::_updateContainsItems(void)
bool
RallyPointController
::
showPlanFromManagerVehicle
(
void
)
{
qCDebug
(
RallyPointControllerLog
)
<<
"showPlanFromManagerVehicle _
editMode"
<<
_editMode
;
qCDebug
(
RallyPointControllerLog
)
<<
"showPlanFromManagerVehicle _
flyView"
<<
_flyView
;
if
(
_masterController
->
offline
())
{
qCWarning
(
RallyPointControllerLog
)
<<
"RallyPointController::showPlanFromManagerVehicle called while offline"
;
return
true
;
// stops further propagation of showPlanFromManagerVehicle due to error
...
...
src/MissionManager/SectionTest.cc
View file @
4faf39fd
...
...
@@ -37,7 +37,7 @@ void SectionTest::init(void)
70.1234567
,
true
,
// autoContinue
false
);
// isCurrentItem
_simpleItem
=
new
SimpleMissionItem
(
_offlineVehicle
,
true
/* editMode */
,
missionItem
);
_simpleItem
=
new
SimpleMissionItem
(
_offlineVehicle
,
false
/* flyView */
,
missionItem
,
this
);
}
void
SectionTest
::
cleanup
(
void
)
...
...
@@ -77,13 +77,13 @@ void SectionTest::_commonScanTest(Section* section)
QmlObjectListModel
waypointVisualItems
;
MissionItem
waypointItem
(
0
,
MAV_CMD_NAV_WAYPOINT
,
MAV_FRAME_GLOBAL_RELATIVE_ALT
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
true
,
false
);
SimpleMissionItem
simpleItem
(
_offlineVehicle
,
true
/* editMode */
,
waypointItem
);
SimpleMissionItem
simpleItem
(
_offlineVehicle
,
false
/* flyView */
,
waypointItem
,
this
);
waypointVisualItems
.
append
(
&
simpleItem
);
waypointVisualItems
.
append
(
&
simpleItem
);
waypointVisualItems
.
append
(
&
simpleItem
);
QmlObjectListModel
complexVisualItems
;
SurveyComplexItem
surveyItem
(
_offlineVehicle
);
SurveyComplexItem
surveyItem
(
_offlineVehicle
,
false
/* fly View */
,
this
);
complexVisualItems
.
append
(
&
surveyItem
);
// This tests the common cases which should not lead to scan succeess
...
...
src/MissionManager/SimpleMissionItem.cc
View file @
4faf39fd
...
...
@@ -51,8 +51,8 @@ static const struct EnumInfo_s _rgMavFrameInfo[] = {
{
"MAV_FRAME_GLOBAL_TERRAIN_ALT_INT"
,
MAV_FRAME_GLOBAL_TERRAIN_ALT_INT
},
};
SimpleMissionItem
::
SimpleMissionItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
parent
)
SimpleMissionItem
::
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
flyView
,
parent
)
,
_rawEdit
(
false
)
,
_dirty
(
false
)
,
_ignoreDirtyChangeSignals
(
false
)
...
...
@@ -84,8 +84,8 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, QObject* parent)
setDirty
(
false
);
}
SimpleMissionItem
::
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
editMode
,
const
MissionItem
&
missionItem
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
parent
)
SimpleMissionItem
::
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
const
MissionItem
&
missionItem
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
flyView
,
parent
)
,
_missionItem
(
missionItem
)
,
_rawEdit
(
false
)
,
_dirty
(
false
)
...
...
@@ -130,13 +130,13 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, bool editMode, const Miss
_altitudeFact
.
setRawValue
(
specifiesCoordinate
()
?
_missionItem
.
_param7Fact
.
rawValue
()
:
qQNaN
());
_amslAltAboveTerrainFact
.
setRawValue
(
qQNaN
());
// In
!editMode
we skip some of the intialization to save memory
if
(
editMode
)
{
// In
flyView
we skip some of the intialization to save memory
if
(
!
_flyView
)
{
_setupMetaData
();
}
_connectSignals
();
_updateOptionalSections
();
if
(
editMode
)
{
if
(
!
_flyView
)
{
_rebuildFacts
();
}
...
...
@@ -146,8 +146,8 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, bool editMode, const Miss
setDirty
(
false
);
}
SimpleMissionItem
::
SimpleMissionItem
(
const
SimpleMissionItem
&
other
,
QObject
*
parent
)
:
VisualMissionItem
(
other
,
parent
)
SimpleMissionItem
::
SimpleMissionItem
(
const
SimpleMissionItem
&
other
,
bool
flyView
,
QObject
*
parent
)
:
VisualMissionItem
(
other
,
flyView
,
parent
)
,
_missionItem
(
other
.
_vehicle
)
,
_rawEdit
(
false
)
,
_dirty
(
false
)
...
...
src/MissionManager/SimpleMissionItem.h
View file @
4faf39fd
...
...
@@ -23,9 +23,9 @@ class SimpleMissionItem : public VisualMissionItem
Q_OBJECT
public:
SimpleMissionItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
editMode
,
const
MissionItem
&
missionItem
,
QObject
*
parent
=
NULL
);
SimpleMissionItem
(
const
SimpleMissionItem
&
other
,
QObject
*
parent
=
NULL
);
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
SimpleMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
const
MissionItem
&
missionItem
,
QObject
*
parent
);
SimpleMissionItem
(
const
SimpleMissionItem
&
other
,
bool
flyView
,
QObject
*
parent
);
~
SimpleMissionItem
();
...
...
src/MissionManager/SimpleMissionItemTest.cc
View file @
4faf39fd
...
...
@@ -92,7 +92,7 @@ void SimpleMissionItemTest::init(void)
70.1234567
,
true
,
// autoContinue
false
);
// isCurrentItem
_simpleItem
=
new
SimpleMissionItem
(
_offlineVehicle
,
true
/* editMode */
,
missionItem
);
_simpleItem
=
new
SimpleMissionItem
(
_offlineVehicle
,
false
/* flyView */
,
missionItem
,
this
);
// It's important top check that the right signals are emitted at the right time since that drives ui change.
// It's also important to check that things are not being over-signalled when they should not be, since that can lead
...
...
@@ -131,7 +131,7 @@ void SimpleMissionItemTest::_testEditorFacts(void)
70.1234567
,
true
,
// autoContinue
false
);
// isCurrentItem
SimpleMissionItem
simpleMissionItem
(
vehicle
,
true
/* editMode */
,
missionItem
);
SimpleMissionItem
simpleMissionItem
(
vehicle
,
false
/* flyView */
,
missionItem
,
NULL
);
// Validate that the fact values are correctly returned
...
...
@@ -167,7 +167,7 @@ void SimpleMissionItemTest::_testEditorFacts(void)
void
SimpleMissionItemTest
::
_testDefaultValues
(
void
)
{
SimpleMissionItem
item
(
_offlineVehicle
);
SimpleMissionItem
item
(
_offlineVehicle
,
false
/* flyView */
,
NULL
);
item
.
missionItem
().
setCommand
(
MAV_CMD_NAV_WAYPOINT
);
item
.
missionItem
().
setFrame
(
MAV_FRAME_GLOBAL_RELATIVE_ALT
);
...
...
src/MissionManager/SpeedSectionTest.cc
View file @
4faf39fd
...
...
@@ -134,7 +134,7 @@ void SpeedSectionTest::_checkAvailable(void)
70.1234567
,
true
,
// autoContinue
false
);
// isCurrentItem
SimpleMissionItem
*
item
=
new
SimpleMissionItem
(
_offlineVehicle
,
true
/* editMode */
,
missionItem
);
SimpleMissionItem
*
item
=
new
SimpleMissionItem
(
_offlineVehicle
,
false
/* flyView */
,
missionItem
,
this
);
QVERIFY
(
item
->
speedSection
());
QCOMPARE
(
item
->
speedSection
()
->
available
(),
false
);
}
...
...
@@ -193,7 +193,7 @@ void SpeedSectionTest::_testScanForSection(void)
double
flightSpeed
=
10.123456
;
MissionItem
validSpeedItem
(
0
,
MAV_CMD_DO_CHANGE_SPEED
,
MAV_FRAME_MISSION
,
_offlineVehicle
->
multiRotor
()
?
1
:
0
,
flightSpeed
,
-
1
,
0
,
0
,
0
,
0
,
true
,
false
);
SimpleMissionItem
simpleItem
(
_offlineVehicle
,
true
/* editMode */
,
validSpeedItem
);
SimpleMissionItem
simpleItem
(
_offlineVehicle
,
false
/* flyView */
,
validSpeedItem
,
NULL
);
MissionItem
&
simpleMissionItem
=
simpleItem
.
missionItem
();
visualItems
.
append
(
&
simpleItem
);
scanIndex
=
0
;
...
...
@@ -263,9 +263,8 @@ void SpeedSectionTest::_testScanForSection(void)
scanIndex
=
0
;
// Valid item in wrong position
QmlObjectListModel
waypointVisualItems
;
MissionItem
waypointMissionItem
(
0
,
MAV_CMD_NAV_WAYPOINT
,
MAV_FRAME_GLOBAL_RELATIVE_ALT
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
true
,
false
);
SimpleMissionItem
simpleWaypointItem
(
_offlineVehicle
,
true
/* editMode */
,
waypointMissionItem
);
SimpleMissionItem
simpleWaypointItem
(
_offlineVehicle
,
false
/* flyView */
,
waypointMissionItem
,
NULL
);
simpleMissionItem
=
validSpeedItem
;
visualItems
.
append
(
&
simpleWaypointItem
);
visualItems
.
append
(
&
simpleMissionItem
);
...
...
src/MissionManager/StructureScanComplexItem.cc
View file @
4faf39fd
...
...
@@ -31,8 +31,8 @@ const char* StructureScanComplexItem::_jsonAltitudeRelativeKey = "altitud
QMap
<
QString
,
FactMetaData
*>
StructureScanComplexItem
::
_metaDataMap
;
StructureScanComplexItem
::
StructureScanComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
parent
)
StructureScanComplexItem
::
StructureScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
ComplexMissionItem
(
vehicle
,
flyView
,
parent
)
,
_sequenceNumber
(
0
)
,
_dirty
(
false
)
,
_altitudeRelative
(
true
)
...
...
src/MissionManager/StructureScanComplexItem.h
View file @
4faf39fd
...
...
@@ -25,7 +25,7 @@ class StructureScanComplexItem : public ComplexMissionItem
Q_OBJECT
public:
StructureScanComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
StructureScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
Q_PROPERTY
(
CameraCalc
*
cameraCalc
READ
cameraCalc
CONSTANT
)
Q_PROPERTY
(
Fact
*
altitude
READ
altitude
CONSTANT
)
...
...
src/MissionManager/StructureScanComplexItemTest.cc
View file @
4faf39fd
...
...
@@ -24,7 +24,7 @@ void StructureScanComplexItemTest::init(void)
_rgSignals
[
dirtyChangedIndex
]
=
SIGNAL
(
dirtyChanged
(
bool
));
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_structureScanItem
=
new
StructureScanComplexItem
(
_offlineVehicle
,
this
);
_structureScanItem
=
new
StructureScanComplexItem
(
_offlineVehicle
,
false
/* flyView */
,
this
);
_structureScanItem
->
setDirty
(
false
);
_multiSpy
=
new
MultiSignalSpy
();
...
...
@@ -121,7 +121,7 @@ void StructureScanComplexItemTest::_testSaveLoad(void)
_structureScanItem
->
save
(
items
);
QString
errorString
;
StructureScanComplexItem
*
newItem
=
new
StructureScanComplexItem
(
_offlineVehicle
,
this
);
StructureScanComplexItem
*
newItem
=
new
StructureScanComplexItem
(
_offlineVehicle
,
false
/* flyView */
,
this
);
QVERIFY
(
newItem
->
load
(
items
[
0
].
toObject
(),
10
,
errorString
));
QVERIFY
(
errorString
.
isEmpty
());
_validateItem
(
newItem
);
...
...
src/MissionManager/SurveyComplexItem.cc
View file @
4faf39fd
...
...
@@ -58,8 +58,8 @@ const char* SurveyComplexItem::_jsonV3FixedValueIsAltitudeKey = "fixedVa
const
char
*
SurveyComplexItem
::
_jsonV3Refly90DegreesKey
=
"refly90Degrees"
;
SurveyComplexItem
::
SurveyComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
settingsGroup
,
parent
)
SurveyComplexItem
::
SurveyComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
flyView
,
settingsGroup
,
parent
)
,
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/Survey.SettingsGroup.json"
),
this
))
,
_gridAngleFact
(
settingsGroup
,
_metaDataMap
[
gridAngleName
])
,
_gridEntryLocationFact
(
settingsGroup
,
_metaDataMap
[
gridEntryLocationName
])
...
...
src/MissionManager/SurveyComplexItem.h
View file @
4faf39fd
...
...
@@ -21,7 +21,7 @@ class SurveyComplexItem : public TransectStyleComplexItem
Q_OBJECT
public:
SurveyComplexItem
(
Vehicle
*
vehicle
,
QObject
*
parent
=
NULL
);
SurveyComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
Q_PROPERTY
(
Fact
*
gridAngle
READ
gridAngle
CONSTANT
)
Q_PROPERTY
(
Fact
*
gridEntryLocation
READ
gridEntryLocation
CONSTANT
)
...
...
src/MissionManager/SurveyComplexItemTest.cc
View file @
4faf39fd
...
...
@@ -29,7 +29,7 @@ void SurveyComplexItemTest::init(void)
_rgSurveySignals
[
surveyDirtyChangedIndex
]
=
SIGNAL
(
dirtyChanged
(
bool
));
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);