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
916d6ebd
Commit
916d6ebd
authored
Feb 29, 2020
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parent
988cd6a9
Changes
79
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
79 changed files
with
988 additions
and
566 deletions
+988
-566
qgroundcontrol.pro
qgroundcontrol.pro
+4
-0
qgroundcontrol.qrc
qgroundcontrol.qrc
+2
-0
APMFirmwarePlugin.h
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
+0
-1
FirmwarePlugin.cc
src/FirmwarePlugin/FirmwarePlugin.cc
+0
-6
FirmwarePlugin.h
src/FirmwarePlugin/FirmwarePlugin.h
+0
-3
PX4FirmwarePlugin.h
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
+0
-1
TerrainProgress.qml
src/FlightDisplay/TerrainProgress.qml
+93
-0
QGCInstrumentWidget.qml
src/FlightMap/Widgets/QGCInstrumentWidget.qml
+49
-46
CameraCalc.cc
src/MissionManager/CameraCalc.cc
+4
-4
CameraCalc.h
src/MissionManager/CameraCalc.h
+2
-3
CameraCalcTest.cc
src/MissionManager/CameraCalcTest.cc
+4
-4
CameraCalcTest.h
src/MissionManager/CameraCalcTest.h
+5
-3
CameraSection.cc
src/MissionManager/CameraSection.cc
+9
-8
CameraSection.h
src/MissionManager/CameraSection.h
+3
-1
CameraSectionTest.cc
src/MissionManager/CameraSectionTest.cc
+42
-42
CameraSectionTest.h
src/MissionManager/CameraSectionTest.h
+4
-3
ComplexMissionItem.cc
src/MissionManager/ComplexMissionItem.cc
+3
-2
ComplexMissionItem.h
src/MissionManager/ComplexMissionItem.h
+4
-5
CorridorScanComplexItem.cc
src/MissionManager/CorridorScanComplexItem.cc
+3
-2
CorridorScanComplexItem.h
src/MissionManager/CorridorScanComplexItem.h
+1
-2
CorridorScanComplexItemTest.cc
src/MissionManager/CorridorScanComplexItemTest.cc
+3
-4
CorridorScanComplexItemTest.h
src/MissionManager/CorridorScanComplexItemTest.h
+5
-3
FWLandingPatternTest.cc
src/MissionManager/FWLandingPatternTest.cc
+11
-19
FWLandingPatternTest.h
src/MissionManager/FWLandingPatternTest.h
+8
-8
FixedWingLandingComplexItem.cc
src/MissionManager/FixedWingLandingComplexItem.cc
+6
-5
FixedWingLandingComplexItem.h
src/MissionManager/FixedWingLandingComplexItem.h
+3
-2
GeoFenceController.cc
src/MissionManager/GeoFenceController.cc
+6
-8
GeoFenceController.h
src/MissionManager/GeoFenceController.h
+7
-6
MissionController.cc
src/MissionManager/MissionController.cc
+38
-56
MissionController.h
src/MissionManager/MissionController.h
+17
-16
MissionItemTest.cc
src/MissionManager/MissionItemTest.cc
+5
-8
MissionItemTest.h
src/MissionManager/MissionItemTest.h
+4
-7
MissionSettingsItem.cc
src/MissionManager/MissionSettingsItem.cc
+8
-6
MissionSettingsItem.h
src/MissionManager/MissionSettingsItem.h
+4
-1
MissionSettingsTest.cc
src/MissionManager/MissionSettingsTest.cc
+1
-1
PlanElementController.cc
src/MissionManager/PlanElementController.cc
+0
-7
PlanElementController.h
src/MissionManager/PlanElementController.h
+7
-9
PlanMasterController.cc
src/MissionManager/PlanMasterController.cc
+58
-32
PlanMasterController.h
src/MissionManager/PlanMasterController.h
+25
-13
RallyPointController.cc
src/MissionManager/RallyPointController.cc
+14
-8
RallyPointController.h
src/MissionManager/RallyPointController.h
+15
-14
Section.h
src/MissionManager/Section.h
+6
-4
SectionTest.cc
src/MissionManager/SectionTest.cc
+3
-3
SimpleMissionItem.cc
src/MissionManager/SimpleMissionItem.cc
+23
-42
SimpleMissionItem.h
src/MissionManager/SimpleMissionItem.h
+11
-16
SimpleMissionItemTest.cc
src/MissionManager/SimpleMissionItemTest.cc
+5
-6
SpeedSection.cc
src/MissionManager/SpeedSection.cc
+10
-9
SpeedSection.h
src/MissionManager/SpeedSection.h
+3
-1
SpeedSectionTest.cc
src/MissionManager/SpeedSectionTest.cc
+7
-6
StructureScanComplexItem.cc
src/MissionManager/StructureScanComplexItem.cc
+4
-3
StructureScanComplexItem.h
src/MissionManager/StructureScanComplexItem.h
+3
-2
StructureScanComplexItemTest.cc
src/MissionManager/StructureScanComplexItemTest.cc
+5
-5
StructureScanComplexItemTest.h
src/MissionManager/StructureScanComplexItemTest.h
+5
-3
SurveyComplexItem.cc
src/MissionManager/SurveyComplexItem.cc
+4
-3
SurveyComplexItem.h
src/MissionManager/SurveyComplexItem.h
+3
-2
SurveyComplexItemTest.cc
src/MissionManager/SurveyComplexItemTest.cc
+3
-4
SurveyComplexItemTest.h
src/MissionManager/SurveyComplexItemTest.h
+6
-4
TakeoffMissionItem.cc
src/MissionManager/TakeoffMissionItem.cc
+8
-7
TakeoffMissionItem.h
src/MissionManager/TakeoffMissionItem.h
+5
-3
TransectStyleComplexItem.cc
src/MissionManager/TransectStyleComplexItem.cc
+5
-5
TransectStyleComplexItem.h
src/MissionManager/TransectStyleComplexItem.h
+3
-1
TransectStyleComplexItemTest.cc
src/MissionManager/TransectStyleComplexItemTest.cc
+5
-6
TransectStyleComplexItemTest.h
src/MissionManager/TransectStyleComplexItemTest.h
+6
-4
VisualMissionItem.cc
src/MissionManager/VisualMissionItem.cc
+10
-7
VisualMissionItem.h
src/MissionManager/VisualMissionItem.h
+27
-24
VisualMissionItemTest.cc
src/MissionManager/VisualMissionItemTest.cc
+5
-6
VisualMissionItemTest.h
src/MissionManager/VisualMissionItemTest.h
+4
-1
SimpleItemEditor.qml
src/PlanView/SimpleItemEditor.qml
+5
-4
qmldir
src/QmlControls/QGroundControl/FlightDisplay/qmldir
+1
-0
TerrainQuery.cc
src/Terrain/TerrainQuery.cc
+14
-9
TerrainQuery.h
src/Terrain/TerrainQuery.h
+8
-3
TerrainFactGroup.cc
src/Vehicle/TerrainFactGroup.cc
+22
-0
TerrainFactGroup.h
src/Vehicle/TerrainFactGroup.h
+35
-0
TerrainFactGroup.json
src/Vehicle/TerrainFactGroup.json
+16
-0
TerrainProtocolHandler.cc
src/Vehicle/TerrainProtocolHandler.cc
+152
-0
TerrainProtocolHandler.h
src/Vehicle/TerrainProtocolHandler.h
+46
-0
Vehicle.cc
src/Vehicle/Vehicle.cc
+23
-2
Vehicle.h
src/Vehicle/Vehicle.h
+9
-1
MockLink.cc
src/comm/MockLink.cc
+1
-1
No files found.
qgroundcontrol.pro
View file @
916d6ebd
...
...
@@ -669,6 +669,8 @@ HEADERS += \
src
/
Vehicle
/
GPSRTKFactGroup
.
h
\
src
/
Vehicle
/
MAVLinkLogManager
.
h
\
src
/
Vehicle
/
MultiVehicleManager
.
h
\
src
/
Vehicle
/
TerrainFactGroup
.
h
\
src
/
Vehicle
/
TerrainProtocolHandler
.
h
\
src
/
Vehicle
/
TrajectoryPoints
.
h
\
src
/
Vehicle
/
Vehicle
.
h
\
src
/
Vehicle
/
VehicleObjectAvoidance
.
h
\
...
...
@@ -872,6 +874,8 @@ SOURCES += \
src
/
Vehicle
/
GPSRTKFactGroup
.
cc
\
src
/
Vehicle
/
MAVLinkLogManager
.
cc
\
src
/
Vehicle
/
MultiVehicleManager
.
cc
\
src
/
Vehicle
/
TerrainFactGroup
.
cc
\
src
/
Vehicle
/
TerrainProtocolHandler
.
cc
\
src
/
Vehicle
/
TrajectoryPoints
.
cc
\
src
/
Vehicle
/
Vehicle
.
cc
\
src
/
Vehicle
/
VehicleObjectAvoidance
.
cc
\
...
...
qgroundcontrol.qrc
View file @
916d6ebd
...
...
@@ -197,6 +197,7 @@
<file alias="QGroundControl/FlightDisplay/PreFlightRCCheck.qml">src/FlightDisplay/PreFlightRCCheck.qml</file>
<file alias="QGroundControl/FlightDisplay/PreFlightSensorsHealthCheck.qml">src/FlightDisplay/PreFlightSensorsHealthCheck.qml</file>
<file alias="QGroundControl/FlightDisplay/PreFlightSoundCheck.qml">src/FlightDisplay/PreFlightSoundCheck.qml</file>
<file alias="QGroundControl/FlightDisplay/TerrainProgress.qml">src/FlightDisplay/TerrainProgress.qml</file>
<file alias="QGroundControl/FlightDisplay/qmldir">src/QmlControls/QGroundControl/FlightDisplay/qmldir</file>
<file alias="QGroundControl/FlightMap/CameraTriggerIndicator.qml">src/FlightMap/MapItems/CameraTriggerIndicator.qml</file>
<file alias="QGroundControl/FlightMap/CenterMapDropButton.qml">src/FlightMap/Widgets/CenterMapDropButton.qml</file>
...
...
@@ -285,6 +286,7 @@
<file alias="Vehicle/SetpointFact.json">src/Vehicle/SetpointFact.json</file>
<file alias="Vehicle/SubmarineFact.json">src/Vehicle/SubmarineFact.json</file>
<file alias="Vehicle/TemperatureFact.json">src/Vehicle/TemperatureFact.json</file>
<file alias="Vehicle/TerrainFactGroup.json">src/Vehicle/TerrainFactGroup.json</file>
<file alias="Vehicle/VehicleFact.json">src/Vehicle/VehicleFact.json</file>
<file alias="Vehicle/VibrationFact.json">src/Vehicle/VibrationFact.json</file>
<file alias="Vehicle/WindFact.json">src/Vehicle/WindFact.json</file>
...
...
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
View file @
916d6ebd
...
...
@@ -105,7 +105,6 @@ public:
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
)
override
;
QString
brandImageIndoor
(
const
Vehicle
*
vehicle
)
const
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
QString
brandImageOutdoor
(
const
Vehicle
*
vehicle
)
const
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
bool
supportsTerrainFrame
(
void
)
const
override
{
return
true
;
}
protected:
/// All access to singleton is through stack specific implementation
...
...
src/FirmwarePlugin/FirmwarePlugin.cc
View file @
916d6ebd
...
...
@@ -148,12 +148,6 @@ bool FirmwarePlugin::supportsJSButton(void)
return
false
;
}
bool
FirmwarePlugin
::
supportsTerrainFrame
(
void
)
const
{
// Generic firmware supports this since we don't know
return
true
;
}
bool
FirmwarePlugin
::
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
{
Q_UNUSED
(
vehicle
);
...
...
src/FirmwarePlugin/FirmwarePlugin.h
View file @
916d6ebd
...
...
@@ -182,9 +182,6 @@ public:
/// (CompassMot). Default is true.
virtual
bool
supportsMotorInterference
(
void
);
/// Returns true if the firmware supports MAV_FRAME_GLOBAL_TERRAIN_ALT
virtual
bool
supportsTerrainFrame
(
void
)
const
;
/// Called before any mavlink message is processed by Vehicle such that the firmwre plugin
/// can adjust any message characteristics. This is handy to adjust or differences in mavlink
/// spec implementations such that the base code can remain mavlink generic.
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
View file @
916d6ebd
...
...
@@ -68,7 +68,6 @@ public:
QString
brandImageOutdoor
(
const
Vehicle
*
vehicle
)
const
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/PX4/BrandImage"
);
}
QString
autoDisarmParameter
(
Vehicle
*
vehicle
)
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"COM_DISARM_LAND"
);
}
uint32_t
highLatencyCustomModeTo32Bits
(
uint16_t
hlCustomMode
)
override
;
bool
supportsTerrainFrame
(
void
)
const
override
{
return
false
;
}
bool
supportsNegativeThrust
(
Vehicle
*
vehicle
)
override
;
protected:
...
...
src/FlightDisplay/TerrainProgress.qml
0 → 100644
View file @
916d6ebd
/****************************************************************************
*
* (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.
*
****************************************************************************/
import
QtQuick
2.12
import
QtQuick
.
Layouts
1.12
import
QGroundControl
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Vehicle
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Palette
1.0
Rectangle
{
height
:
mainLayout
.
height
+
(
_margins
*
2
)
visible
:
false
color
:
qgcPal
.
window
property
var
_activeVehicle
:
QGroundControl
.
multiVehicleManager
.
activeVehicle
property
real
_margins
:
ScreenTools
.
defaultFontPixelWidth
/
2
property
real
_totalBlocks
:
_activeVehicle
?
_activeVehicle
.
terrain
.
blocksPending
.
rawValue
+
_activeVehicle
.
terrain
.
blocksLoaded
.
rawValue
:
0
property
real
_blocksLoaded
:
_activeVehicle
?
_activeVehicle
.
terrain
.
blocksLoaded
.
rawValue
:
0
property
real
_blocksPending
:
_activeVehicle
?
_activeVehicle
.
terrain
.
blocksPending
.
rawValue
:
0
property
real
_pctComplete
:
_activeVehicle
&&
_totalBlocks
?
_blocksLoaded
/
_totalBlocks
:
0
on_BlocksPendingChanged
:
{
if
(
_blocksPending
==
0
)
{
// UI doesn't go away immediately
visibilityTimer
.
restart
()
}
else
{
visible
=
true
visibilityTimer
.
stop
()
}
}
on_BlocksLoadedChanged
:
{
if
(
_blocksLoaded
!=
0
)
{
// This causes the progress indicator to display even if it starts out as complete
visible
=
true
if
(
_blocksPending
==
0
)
{
visibilityTimer
.
restart
()
}
}
}
Timer
{
id
:
visibilityTimer
interval
:
30
*
1000
onTriggered
:
parent
.
visible
=
false
}
QGCPalette
{
id
:
qgcPal
}
ColumnLayout
{
id
:
mainLayout
anchors.margins
:
_margins
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
spacing
:
_margins
QGCLabel
{
Layout.alignment
:
Qt
.
AlignHCenter
text
:
qsTr
(
"
Terrain Load Progress
"
)
font.pointSize
:
ScreenTools
.
smallFontPointSize
}
Rectangle
{
Layout.fillWidth
:
true
height
:
ScreenTools
.
defaultFontPixelHeight
color
:
"
transparent
"
border.color
:
"
green
"
Rectangle
{
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
color
:
"
green
"
width
:
parent
.
width
*
_pctComplete
QGCLabel
{
anchors.centerIn
:
parent
text
:
qsTr
(
"
Done
"
)
visible
:
_blocksPending
==
0
}
}
}
}
}
src/FlightMap/Widgets/QGCInstrumentWidget.qml
View file @
916d6ebd
...
...
@@ -7,73 +7,76 @@
*
****************************************************************************/
import
QtQuick
2.3
import
QtQuick
2.12
import
QtQuick
.
Layouts
1.12
import
QGroundControl
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FlightMap
1.0
import
QGroundControl
.
FlightDisplay
1.0
import
QGroundControl
.
Palette
1.0
Rectangle
{
id
:
root
width
:
getPreferredInstrumentWidth
()
height
:
_outerRadius
*
2
radius
:
_outerRadius
color
:
qgcPal
.
window
border.width
:
1
border.color
:
_isSatellite
?
qgcPal
.
mapWidgetBorderLight
:
qgcPal
.
mapWidgetBorderDark
property
real
_innerRadius
:
(
width
-
(
_topBottomMargin
*
3
))
/
4
property
real
_outerRadius
:
_innerRadius
+
_topBottomMargin
property
real
_defaultSize
:
ScreenTools
.
defaultFontPixelHeight
*
(
9
)
property
real
_sizeRatio
:
ScreenTools
.
isTinyScreen
?
(
width
/
_defaultSize
)
*
0.5
:
width
/
_defaultSize
property
real
_bigFontSize
:
ScreenTools
.
defaultFontPointSize
*
2.5
*
_sizeRatio
property
real
_normalFontSize
:
ScreenTools
.
defaultFontPointSize
*
1.5
*
_sizeRatio
property
real
_labelFontSize
:
ScreenTools
.
defaultFontPointSize
*
0.75
*
_sizeRatio
property
real
_spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.33
property
real
_topBottomMargin
:
(
width
*
0.05
)
/
2
property
real
_availableValueHeight
:
maxHeight
-
(
root
.
height
+
_valuesItem
.
anchors
.
topMargin
)
ColumnLayout
{
id
:
root
width
:
getPreferredInstrumentWidth
()
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
4
// Prevent all clicks from going through to lower layers
DeadMouseArea
{
anchors.fill
:
parent
}
property
real
_innerRadius
:
(
width
-
(
_topBottomMargin
*
3
))
/
4
property
real
_outerRadius
:
_innerRadius
+
_topBottomMargin
property
real
_defaultSize
:
ScreenTools
.
defaultFontPixelHeight
*
(
9
)
property
real
_sizeRatio
:
ScreenTools
.
isTinyScreen
?
(
width
/
_defaultSize
)
*
0.5
:
width
/
_defaultSize
property
real
_bigFontSize
:
ScreenTools
.
defaultFontPointSize
*
2.5
*
_sizeRatio
property
real
_normalFontSize
:
ScreenTools
.
defaultFontPointSize
*
1.5
*
_sizeRatio
property
real
_labelFontSize
:
ScreenTools
.
defaultFontPointSize
*
0.75
*
_sizeRatio
property
real
_spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.33
property
real
_topBottomMargin
:
(
width
*
0.05
)
/
2
property
real
_availableValueHeight
:
maxHeight
-
_valuesItem
.
y
QGCPalette
{
id
:
qgcPal
}
QGCAttitudeWidget
{
id
:
attitude
anchors.leftMargin
:
_topBottomMargin
anchors.left
:
parent
.
left
size
:
_innerRadius
*
2
vehicle
:
activeVehicle
anchors.verticalCenter
:
parent
.
verticalCenter
Rectangle
{
id
:
visualInstrument
height
:
_outerRadius
*
2
Layout.fillWidth
:
true
radius
:
_outerRadius
color
:
qgcPal
.
window
border.width
:
1
border.color
:
_isSatellite
?
qgcPal
.
mapWidgetBorderLight
:
qgcPal
.
mapWidgetBorderDark
DeadMouseArea
{
anchors.fill
:
parent
}
QGCAttitudeWidget
{
id
:
attitude
anchors.leftMargin
:
_topBottomMargin
anchors.left
:
parent
.
left
size
:
_innerRadius
*
2
vehicle
:
activeVehicle
anchors.verticalCenter
:
parent
.
verticalCenter
}
QGCCompassWidget
{
id
:
compass
anchors.leftMargin
:
_spacing
anchors.left
:
attitude
.
right
size
:
_innerRadius
*
2
vehicle
:
activeVehicle
anchors.verticalCenter
:
parent
.
verticalCenter
}
}
QGCCompassWidget
{
id
:
compass
anchors.leftMargin
:
_spacing
anchors.left
:
attitude
.
right
size
:
_innerRadius
*
2
vehicle
:
activeVehicle
anchors.verticalCenter
:
parent
.
verticalCenter
TerrainProgress
{
Layout.fillWidth
:
true
}
Item
{
id
:
_valuesItem
anchors.topMargin
:
ScreenTools
.
defaultFontPixelHeight
/
4
anchors.top
:
parent
.
bottom
width
:
parent
.
width
Layout.fillWidth
:
true
height
:
_valuesWidget
.
height
visible
:
widgetRoot
.
showValues
// Prevent all clicks from going through to lower layers
DeadMouseArea
{
anchors.fill
:
parent
}
DeadMouseArea
{
anchors.fill
:
parent
}
Rectangle
{
anchors.fill
:
_valuesWidget
...
...
src/MissionManager/CameraCalc.cc
View file @
916d6ebd
...
...
@@ -11,6 +11,7 @@
#include "JsonHelper.h"
#include "Vehicle.h"
#include "CameraMetaData.h"
#include "PlanMasterController.h"
#include <QQmlEngine>
...
...
@@ -26,10 +27,9 @@ const char* CameraCalc::adjustedFootprintSideName = "AdjustedFootprintSi
const
char
*
CameraCalc
::
_jsonCameraSpecTypeKey
=
"CameraSpecType"
;
CameraCalc
::
CameraCalc
(
Vehicle
*
vehicle
,
const
QString
&
settingsGroup
,
QObject
*
parent
)
CameraCalc
::
CameraCalc
(
PlanMasterController
*
masterController
,
const
QString
&
settingsGroup
,
QObject
*
parent
)
:
CameraSpec
(
settingsGroup
,
parent
)
,
_vehicle
(
vehicle
)
,
_dirty
(
false
)
,
_dirty
(
masterController
)
,
_disableRecalc
(
false
)
,
_distanceToSurfaceRelative
(
true
)
,
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/CameraCalc.FactMetaData.json"
),
this
))
...
...
@@ -43,7 +43,7 @@ CameraCalc::CameraCalc(Vehicle* vehicle, const QString& settingsGroup, QObject*
,
_adjustedFootprintFrontalFact
(
settingsGroup
,
_metaDataMap
[
adjustedFootprintFrontalName
])
,
_imageFootprintSide
(
0
)
,
_imageFootprintFrontal
(
0
)
,
_knownCameraList
(
_vehicle
->
staticCameraList
())
,
_knownCameraList
(
masterController
->
controllerVehicle
()
->
staticCameraList
())
{
QQmlEngine
::
setObjectOwnership
(
this
,
QQmlEngine
::
CppOwnership
);
...
...
src/MissionManager/CameraCalc.h
View file @
916d6ebd
...
...
@@ -12,14 +12,14 @@
#include "CameraSpec.h"
#include "SettingsFact.h"
class
Vehicle
;
class
PlanMasterController
;
class
CameraCalc
:
public
CameraSpec
{
Q_OBJECT
public:
CameraCalc
(
Vehicle
*
vehicle
,
const
QString
&
settingsGroup
,
QObject
*
parent
=
nullptr
);
CameraCalc
(
PlanMasterController
*
masterController
,
const
QString
&
settingsGroup
,
QObject
*
parent
=
nullptr
);
Q_PROPERTY
(
QString
customCameraName
READ
customCameraName
CONSTANT
)
///< Camera name for custom camera setting
Q_PROPERTY
(
QString
manualCameraName
READ
manualCameraName
CONSTANT
)
///< Camera name for manual camera setting
...
...
@@ -97,7 +97,6 @@ private slots:
void
_cameraNameChanged
(
void
);
private:
Vehicle
*
_vehicle
;
bool
_dirty
;
bool
_disableRecalc
;
bool
_distanceToSurfaceRelative
;
...
...
src/MissionManager/CameraCalcTest.cc
View file @
916d6ebd
...
...
@@ -9,9 +9,9 @@
#include "CameraCalcTest.h"
#include "QGCApplication.h"
#include "PlanMasterController.h"
CameraCalcTest
::
CameraCalcTest
(
void
)
:
_offlineVehicle
(
nullptr
)
{
}
...
...
@@ -20,8 +20,9 @@ void CameraCalcTest::init(void)
{
UnitTest
::
init
();
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_cameraCalc
=
new
CameraCalc
(
_offlineVehicle
,
"CameraCalcUnitTest"
/* settingsGroup */
,
this
);
_masterController
=
new
PlanMasterController
(
this
);
_controllerVehicle
=
_masterController
->
controllerVehicle
();
_cameraCalc
=
new
CameraCalc
(
_masterController
,
"CameraCalcUnitTest"
/* settingsGroup */
,
this
);
_cameraCalc
->
cameraName
()
->
setRawValue
(
_cameraCalc
->
customCameraName
());
_cameraCalc
->
setDirty
(
false
);
...
...
@@ -37,7 +38,6 @@ void CameraCalcTest::init(void)
void
CameraCalcTest
::
cleanup
(
void
)
{
delete
_cameraCalc
;
delete
_offlineVehicle
;
delete
_multiSpy
;
}
...
...
src/MissionManager/CameraCalcTest.h
View file @
916d6ebd
...
...
@@ -12,6 +12,7 @@
#include "UnitTest.h"
#include "MultiSignalSpy.h"
#include "CameraCalc.h"
#include "PlanMasterController.h"
#include <QGeoCoordinate>
...
...
@@ -50,7 +51,8 @@ private:
static
const
size_t
_cSignals
=
maxSignalIndex
;
const
char
*
_rgSignals
[
_cSignals
];
Vehicle
*
_offlineVehicle
;
MultiSignalSpy
*
_multiSpy
;
CameraCalc
*
_cameraCalc
;
PlanMasterController
*
_masterController
=
nullptr
;
Vehicle
*
_controllerVehicle
=
nullptr
;
MultiSignalSpy
*
_multiSpy
=
nullptr
;
CameraCalc
*
_cameraCalc
=
nullptr
;
};
src/MissionManager/CameraSection.cc
View file @
916d6ebd
...
...
@@ -10,6 +10,7 @@
#include "CameraSection.h"
#include "SimpleMissionItem.h"
#include "FirmwarePlugin.h"
#include "PlanMasterController.h"
QGC_LOGGING_CATEGORY
(
CameraSectionLog
,
"CameraSectionLog"
)
...
...
@@ -22,19 +23,19 @@ const char* CameraSection::_cameraModeName = "CameraMode";
QMap
<
QString
,
FactMetaData
*>
CameraSection
::
_metaDataMap
;
CameraSection
::
CameraSection
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
Section
(
vehicle
,
parent
)
,
_available
(
false
)
,
_settingsSpecified
(
false
)
,
_specifyGimbal
(
false
)
,
_specifyCameraMode
(
false
)
CameraSection
::
CameraSection
(
PlanMasterController
*
masterController
,
QObject
*
parent
)
:
Section
(
masterController
,
parent
)
,
_available
(
false
)
,
_settingsSpecified
(
false
)
,
_specifyGimbal
(
false
)
,
_specifyCameraMode
(
false
)
,
_gimbalYawFact
(
0
,
_gimbalYawName
,
FactMetaData
::
valueTypeDouble
)
,
_gimbalPitchFact
(
0
,
_gimbalPitchName
,
FactMetaData
::
valueTypeDouble
)
,
_cameraActionFact
(
0
,
_cameraActionName
,
FactMetaData
::
valueTypeDouble
)
,
_cameraPhotoIntervalDistanceFact
(
0
,
_cameraPhotoIntervalDistanceName
,
FactMetaData
::
valueTypeDouble
)
,
_cameraPhotoIntervalTimeFact
(
0
,
_cameraPhotoIntervalTimeName
,
FactMetaData
::
valueTypeUint32
)
,
_cameraModeFact
(
0
,
_cameraModeName
,
FactMetaData
::
valueTypeUint32
)
,
_dirty
(
false
)
,
_dirty
(
false
)
{
if
(
_metaDataMap
.
isEmpty
())
{
_metaDataMap
=
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/CameraSection.FactMetaData.json"
),
Q_NULLPTR
/* metaDataParent */
);
...
...
@@ -579,7 +580,7 @@ void CameraSection::_cameraActionChanged(void)
bool
CameraSection
::
cameraModeSupported
(
void
)
const
{
return
_specifyCameraMode
||
_
vehicle
->
firmwarePlugin
()
->
supportedMissionCommands
().
contains
(
MAV_CMD_SET_CAMERA_MODE
);
return
_specifyCameraMode
||
_
masterController
->
controllerVehicle
()
->
firmwarePlugin
()
->
supportedMissionCommands
().
contains
(
MAV_CMD_SET_CAMERA_MODE
);
}
void
CameraSection
::
_dirtyIfSpecified
(
void
)
...
...
src/MissionManager/CameraSection.h
View file @
916d6ebd
...
...
@@ -16,12 +16,14 @@
#define VIDEO_CAPTURE_STATUS_INTERVAL 0.2 //-- Send capture status every 5 seconds
class
PlanMasterController
;
class
CameraSection
:
public
Section
{
Q_OBJECT
public:
CameraSection
(
Vehicle
*
vehicle
,
QObject
*
parent
=
nullptr
);
CameraSection
(
PlanMasterController
*
masterController
,
QObject
*
parent
=
nullptr
);
// These enum values must match the json meta data
...
...
src/MissionManager/CameraSectionTest.cc
View file @
916d6ebd
This diff is collapsed.
Click to expand it.
src/MissionManager/CameraSectionTest.h
View file @
916d6ebd
...
...
@@ -11,6 +11,7 @@
#include "SectionTest.h"
#include "CameraSection.h"
#include "PlanMasterController.h"
/// Unit test for CameraSection
class
CameraSectionTest
:
public
SectionTest
...
...
@@ -23,9 +24,9 @@ public:
void
init
(
void
)
override
;
void
cleanup
(
void
)
override
;
static
SimpleMissionItem
*
createValidStopVideoItem
(
Vehicle
*
vehicle
,
QObject
*
parent
);
static
SimpleMissionItem
*
createValidStopDistanceItem
(
Vehicle
*
vehicle
,
QObject
*
parent
);
static
SimpleMissionItem
*
createValidStopTimeItem
(
Vehicle
*
vehicle
,
QObject
*
parent
);
static
SimpleMissionItem
*
createValidStopVideoItem
(
PlanMasterController
*
masterController
,
QObject
*
parent
);
static
SimpleMissionItem
*
createValidStopDistanceItem
(
PlanMasterController
*
masterController
,
QObject
*
parent
);
static
SimpleMissionItem
*
createValidStopTimeItem
(
PlanMasterController
*
masterController
,
QObject
*
parent
);
private
slots
:
void
_testDirty
(
void
);
...
...
src/MissionManager/ComplexMissionItem.cc
View file @
916d6ebd
...
...
@@ -11,6 +11,7 @@
#include "QGCApplication.h"
#include "QGCCorePlugin.h"
#include "QGCOptions.h"
#include "PlanMasterController.h"
#include <QSettings>
...
...
@@ -18,8 +19,8 @@ const char* ComplexMissionItem::jsonComplexItemTypeKey = "complexItemType";
const
char
*
ComplexMissionItem
::
_presetSettingsKey
=
"_presets"
;
ComplexMissionItem
::
ComplexMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
)
:
VisualMissionItem
(
vehicle
,
flyView
,
parent
)
ComplexMissionItem
::
ComplexMissionItem
(
PlanMasterController
*
masterController
,
bool
flyView
,
QObject
*
parent
)
:
VisualMissionItem
(
masterController
,
flyView
,
parent
)
{
}
...
...
src/MissionManager/ComplexMissionItem.h
View file @
916d6ebd
...
...
@@ -7,20 +7,21 @@
*
****************************************************************************/
#ifndef ComplexMissionItem_H
#define ComplexMissionItem_H
#pragma once
#include "VisualMissionItem.h"
#include "QGCGeo.h"
#include <QSettings>
class
PlanMasterController
;
class
ComplexMissionItem
:
public
VisualMissionItem
{
Q_OBJECT
public:
ComplexMissionItem
(
Vehicle
*
vehicle
,
bool
flyView
,
QObject
*
parent
);
ComplexMissionItem
(
PlanMasterController
*
masterController
,
bool
flyView
,
QObject
*
parent
);
const
ComplexMissionItem
&
operator
=
(
const
ComplexMissionItem
&
other
);
...
...
@@ -88,5 +89,3 @@ protected:
static
const
char
*
_presetSettingsKey
;
};
#endif
src/MissionManager/CorridorScanComplexItem.cc
View file @
916d6ebd
...
...
@@ -16,6 +16,7 @@
#include "SettingsManager.h"
#include "AppSettings.h"
#include "QGCQGeoCoordinate.h"
#include "PlanMasterController.h"
#include <QPolygonF>
...
...
@@ -27,8 +28,8 @@ const char* CorridorScanComplexItem::_jsonEntryPointKey = "EntryPoint";
const
char
*
CorridorScanComplexItem
::
jsonComplexItemTypeValue
=
"CorridorScan"
;
CorridorScanComplexItem
::
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
const
QString
&
kmlFile
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
flyView
,
settingsGroup
,
parent
)
CorridorScanComplexItem
::
CorridorScanComplexItem
(
PlanMasterController
*
masterController
,
bool
flyView
,
const
QString
&
kmlFile
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
masterController
,
flyView
,
settingsGroup
,
parent
)
,
_entryPoint
(
0
)
,
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/CorridorScan.SettingsGroup.json"
),
this
))
,
_corridorWidthFact
(
settingsGroup
,
_metaDataMap
[
corridorWidthName
])
...
...
src/MissionManager/CorridorScanComplexItem.h
View file @
916d6ebd
...
...
@@ -23,10 +23,9 @@ class CorridorScanComplexItem : public TransectStyleComplexItem
Q_OBJECT
public:
/// @param vehicle Vehicle which this is being contructed for
/// @param flyView true: Created for use in the Fly View, false: Created for use in the Plan View
/// @param kmlFile Polyline comes from this file, empty for default polyline
CorridorScanComplexItem
(
Vehicle
*
vehicle
,
bool
flyView
,
const
QString
&
kmlFile
,
QObject
*
parent
);
CorridorScanComplexItem
(
PlanMasterController
*
masterController
,
bool
flyView
,
const
QString
&
kmlFile
,
QObject
*
parent
);
Q_PROPERTY
(
QGCMapPolyline
*
corridorPolyline
READ
corridorPolyline
CONSTANT
)
Q_PROPERTY
(
Fact
*
corridorWidth
READ
corridorWidth
CONSTANT
)
...
...
src/MissionManager/CorridorScanComplexItemTest.cc
View file @
916d6ebd
...
...
@@ -11,7 +11,6 @@
#include "QGCApplication.h"
CorridorScanComplexItemTest
::
CorridorScanComplexItemTest
(
void
)
:
_offlineVehicle
(
nullptr
)
{
_linePoints
<<
QGeoCoordinate
(
47.633550640000003
,
-
122.08982199
)
<<
QGeoCoordinate
(
47.634129020000003
,
-
122.08887249
)
...
...
@@ -22,8 +21,9 @@ void CorridorScanComplexItemTest::init(void)
{
UnitTest
::
init
();
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_corridorItem
=
new
CorridorScanComplexItem
(
_offlineVehicle
,
false
/* flyView */
,
QString
()
/* kmlFile */
,
this
/* parent */
);
_masterController
=
new
PlanMasterController
(
this
);
_controllerVehicle
=
_masterController
->
controllerVehicle
();
_corridorItem
=
new
CorridorScanComplexItem
(
_masterController
,
false
/* flyView */
,
QString
()
/* kmlFile */
,
this
/* parent */
);
// vehicleSpeed need for terrain calcs
MissionController
::
MissionFlightStatus_t
missionFlightStatus
;
...
...
@@ -42,7 +42,6 @@ void CorridorScanComplexItemTest::init(void)
void
CorridorScanComplexItemTest
::
cleanup
(
void
)
{
delete
_corridorItem
;
delete
_offlineVehicle
;
}
void
CorridorScanComplexItemTest
::
_testDirty
(
void
)
...
...
src/MissionManager/CorridorScanComplexItemTest.h
View file @
916d6ebd
...
...
@@ -13,6 +13,7 @@
#include "TCPLink.h"
#include "MultiSignalSpy.h"
#include "CorridorScanComplexItem.h"
#include "PlanMasterController.h"
#include <QGeoCoordinate>
...
...
@@ -50,8 +51,9 @@ private:
static
const
size_t
_cCorridorPolygonSignals
=
maxCorridorPolygonSignalIndex
;
const
char
*
_rgCorridorPolygonSignals
[
_cCorridorPolygonSignals
];
Vehicle
*
_offlineVehicle
;
MultiSignalSpy
*
_multiSpyCorridorPolygon
;
CorridorScanComplexItem
*
_corridorItem
;
PlanMasterController
*
_masterController
=
nullptr
;
Vehicle
*
_controllerVehicle
=
nullptr
;
MultiSignalSpy
*
_multiSpyCorridorPolygon
=
nullptr
;
CorridorScanComplexItem
*
_corridorItem
=
nullptr
;
QList
<
QGeoCoordinate
>
_linePoints
;
};
src/MissionManager/FWLandingPatternTest.cc
View file @
916d6ebd
...
...
@@ -14,24 +14,17 @@
#include "CameraSectionTest.h"
FWLandingPatternTest
::
FWLandingPatternTest
(
void
)
:
_offlineVehicle
(
Q_NULLPTR
)
,
_fwItem
(
Q_NULLPTR
)
,
_multiSpy
(
Q_NULLPTR
)
,
_validStopVideoItem
(
Q_NULLPTR
)
,
_validStopDistanceItem
(
Q_NULLPTR
)
,
_validStopTimeItem
(
Q_NULLPTR
)
{
}
void
FWLandingPatternTest
::
init
(
void
)
{
Unit
Test
::
init
();
VisualMissionItem
Test
::
init
();
rgSignals
[
dirtyChangedIndex
]
=
SIGNAL
(
dirtyChanged
(
bool
));
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_fwItem
=
new
FixedWingLandingComplexItem
(
_offlineVehicle
,
false
/* flyView */
,
this
);
_fwItem
=
new
FixedWingLandingComplexItem
(
_masterController
,
false
/* flyView */
,
this
);
_multiSpy
=
new
MultiSignalSpy
();
QCOMPARE
(
_multiSpy
->
init
(
_fwItem
,
rgSignals
,
cSignals
),
true
);
...
...
@@ -42,20 +35,19 @@ void FWLandingPatternTest::init(void)
QVERIFY
(
!
_fwItem
->
dirty
());
_multiSpy
->
clearAllSignals
();
_validStopVideoItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
offlineVehicle
,
this
);
_validStopDistanceItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
offlineVehicle
,
this
);
_validStopTimeItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
offlineVehicle
,
this
);
_validStopVideoItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
masterController
,
this
);
_validStopDistanceItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
masterController
,
this
);
_validStopTimeItem
=
CameraSectionTest
::
createValidStopTimeItem
(
_
masterController
,
this
);
}
void
FWLandingPatternTest
::
cleanup
(
void
)
{
delete
_fwItem
;
delete
_offlineVehicle
;
delete
_multiSpy
;
delete
_validStopVideoItem
;
delete
_validStopDistanceItem
;
delete
_validStopTimeItem
;
Unit
Test
::
cleanup
();
VisualMissionItem
Test
::
cleanup
();
}
...
...
@@ -97,14 +89,14 @@ void FWLandingPatternTest::_testAppendSectionItems(void)
QmlObjectListModel
*
simpleItems
=
new
QmlObjectListModel
(
this
);
for
(
MissionItem
*
item
:
rgMissionItems
)
{
SimpleMissionItem
*
simpleItem
=
new
SimpleMissionItem
(
_
offlineVehicle
,
false
/* flyView */
,
simpleItems
);
SimpleMissionItem
*
simpleItem
=
new
SimpleMissionItem
(
_
masterController
,
false
/* flyView */
,
simpleItems
);
simpleItem
->
missionItem
()
=
*
item
;
simpleItems
->
append
(
simpleItem
);
}
// Scan the items back in to verify the same values come back
// Note that the compares does the best it can with doubles going to floats and back causing inaccuracies beyond a fuzzy compare.
QVERIFY
(
FixedWingLandingComplexItem
::
scanForItem
(
simpleItems
,
false
/* flyView */
,
_
offlineVehicle
));
QVERIFY
(
FixedWingLandingComplexItem
::
scanForItem
(
simpleItems
,
false
/* flyView */
,
_
masterController
));
QCOMPARE
(
simpleItems
->
count
(),
1
);
_validateItem
(
simpleItems
->
value
<
FixedWingLandingComplexItem
*>
(
0
));
...
...
@@ -118,11 +110,11 @@ void FWLandingPatternTest::_testAppendSectionItems(void)
_fwItem
->
appendMissionItems
(
rgMissionItems
,
this
);
simpleItems
=
new
QmlObjectListModel
(
this
);