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
72ac8f8a
Commit
72ac8f8a
authored
Aug 10, 2017
by
Don Gagne
Committed by
GitHub
Aug 10, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5548 from DonLakeFlyer/GeoFenceRallyMav2
New Mavlink 2 spec GeoFence and Rally Point support
parents
a11b1dbf
537463c5
Changes
53
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
53 changed files
with
2806 additions
and
2228 deletions
+2806
-2228
qgroundcontrol.pro
qgroundcontrol.pro
+8
-6
qgroundcontrol.qrc
qgroundcontrol.qrc
+2
-0
APMFirmwarePlugin.h
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
+0
-4
APMGeoFenceManager.cc
src/FirmwarePlugin/APM/APMGeoFenceManager.cc
+0
-337
APMGeoFenceManager.h
src/FirmwarePlugin/APM/APMGeoFenceManager.h
+0
-78
APMRallyPointManager.cc
src/FirmwarePlugin/APM/APMRallyPointManager.cc
+0
-166
APMRallyPointManager.h
src/FirmwarePlugin/APM/APMRallyPointManager.h
+0
-51
ArduCopterFirmwarePlugin.cc
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
+0
-6
ArduCopterFirmwarePlugin.h
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
+0
-1
FirmwarePlugin.h
src/FirmwarePlugin/FirmwarePlugin.h
+0
-9
PX4FirmwarePlugin.h
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
+0
-2
PX4GeoFenceManager.cc
src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc
+0
-60
PX4GeoFenceManager.h
src/FirmwarePlugin/PX4/PX4GeoFenceManager.h
+0
-41
qmldir
src/FlightMap/qmldir
+0
-3
GeoFenceController.cc
src/MissionManager/GeoFenceController.cc
+134
-65
GeoFenceController.h
src/MissionManager/GeoFenceController.h
+33
-33
GeoFenceManager.cc
src/MissionManager/GeoFenceManager.cc
+155
-16
GeoFenceManager.h
src/MissionManager/GeoFenceManager.h
+33
-42
MissionController.h
src/MissionManager/MissionController.h
+1
-0
MissionManager.cc
src/MissionManager/MissionManager.cc
+2
-917
MissionManager.h
src/MissionManager/MissionManager.h
+2
-127
PlanElementController.h
src/MissionManager/PlanElementController.h
+7
-4
PlanManager.cc
src/MissionManager/PlanManager.cc
+970
-0
PlanManager.h
src/MissionManager/PlanManager.h
+154
-0
PlanMasterController.cc
src/MissionManager/PlanMasterController.cc
+37
-11
QGCFenceCircle.cc
src/MissionManager/QGCFenceCircle.cc
+88
-0
QGCFenceCircle.h
src/MissionManager/QGCFenceCircle.h
+55
-0
QGCFencePolygon.cc
src/MissionManager/QGCFencePolygon.cc
+81
-0
QGCFencePolygon.h
src/MissionManager/QGCFencePolygon.h
+55
-0
QGCMapCircle.Facts.json
src/MissionManager/QGCMapCircle.Facts.json
+10
-0
QGCMapCircle.cc
src/MissionManager/QGCMapCircle.cc
+144
-0
QGCMapCircle.h
src/MissionManager/QGCMapCircle.h
+81
-0
QGCMapCircleVisuals.qml
src/MissionManager/QGCMapCircleVisuals.qml
+140
-0
QGCMapPolygon.cc
src/MissionManager/QGCMapPolygon.cc
+49
-10
QGCMapPolygon.h
src/MissionManager/QGCMapPolygon.h
+16
-8
QGCMapPolygonTest.cc
src/MissionManager/QGCMapPolygonTest.cc
+1
-1
QGCMapPolygonVisuals.qml
src/MissionManager/QGCMapPolygonVisuals.qml
+6
-6
RallyPointController.cc
src/MissionManager/RallyPointController.cc
+6
-3
RallyPointController.h
src/MissionManager/RallyPointController.h
+1
-3
RallyPointManager.cc
src/MissionManager/RallyPointManager.cc
+5
-0
RallyPointManager.h
src/MissionManager/RallyPointManager.h
+3
-2
GeoFenceEditor.qml
src/PlanView/GeoFenceEditor.qml
+290
-71
GeoFenceMapVisuals.qml
src/PlanView/GeoFenceMapVisuals.qml
+55
-35
PlanView.qml
src/PlanView/PlanView.qml
+1
-1
RallyPointEditorHeader.qml
src/PlanView/RallyPointEditorHeader.qml
+1
-1
RallyPointMapVisuals.qml
src/PlanView/RallyPointMapVisuals.qml
+1
-1
QGroundControl.Controls.qmldir
src/QmlControls/QGroundControl.Controls.qmldir
+1
-0
Vehicle.cc
src/Vehicle/Vehicle.cc
+37
-13
Vehicle.h
src/Vehicle/Vehicle.h
+6
-10
MockLink.cc
src/comm/MockLink.cc
+1
-1
MockLinkMissionItemHandler.cc
src/comm/MockLinkMissionItemHandler.cc
+121
-80
MockLinkMissionItemHandler.h
src/comm/MockLinkMissionItemHandler.h
+7
-3
UnitTest.cc
src/qgcunittest/UnitTest.cc
+6
-0
No files found.
qgroundcontrol.pro
View file @
72ac8f8a
...
...
@@ -509,7 +509,11 @@ HEADERS += \
src
/
MissionManager
/
MissionManager
.
h
\
src
/
MissionManager
/
MissionSettingsItem
.
h
\
src
/
MissionManager
/
PlanElementController
.
h
\
src
/
MissionManager
/
PlanManager
.
h
\
src
/
MissionManager
/
PlanMasterController
.
h
\
src
/
MissionManager
/
QGCFenceCircle
.
h
\
src
/
MissionManager
/
QGCFencePolygon
.
h
\
src
/
MissionManager
/
QGCMapCircle
.
h
\
src
/
MissionManager
/
QGCMapPolygon
.
h
\
src
/
MissionManager
/
RallyPoint
.
h
\
src
/
MissionManager
/
RallyPointController
.
h
\
...
...
@@ -689,7 +693,11 @@ SOURCES += \
src
/
MissionManager
/
MissionManager
.
cc
\
src
/
MissionManager
/
MissionSettingsItem
.
cc
\
src
/
MissionManager
/
PlanElementController
.
cc
\
src
/
MissionManager
/
PlanManager
.
cc
\
src
/
MissionManager
/
PlanMasterController
.
cc
\
src
/
MissionManager
/
QGCFenceCircle
.
cc
\
src
/
MissionManager
/
QGCFencePolygon
.
cc
\
src
/
MissionManager
/
QGCMapCircle
.
cc
\
src
/
MissionManager
/
QGCMapPolygon
.
cc
\
src
/
MissionManager
/
RallyPoint
.
cc
\
src
/
MissionManager
/
RallyPointController
.
cc
\
...
...
@@ -906,9 +914,7 @@ APMFirmwarePlugin {
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponentController
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMTuningComponent
.
h
\
src
/
FirmwarePlugin
/
APM
/
APMFirmwarePlugin
.
h
\
src
/
FirmwarePlugin
/
APM
/
APMGeoFenceManager
.
h
\
src
/
FirmwarePlugin
/
APM
/
APMParameterMetaData
.
h
\
src
/
FirmwarePlugin
/
APM
/
APMRallyPointManager
.
h
\
src
/
FirmwarePlugin
/
APM
/
ArduCopterFirmwarePlugin
.
h
\
src
/
FirmwarePlugin
/
APM
/
ArduPlaneFirmwarePlugin
.
h
\
src
/
FirmwarePlugin
/
APM
/
ArduRoverFirmwarePlugin
.
h
\
...
...
@@ -933,9 +939,7 @@ APMFirmwarePlugin {
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponentController
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMTuningComponent
.
cc
\
src
/
FirmwarePlugin
/
APM
/
APMFirmwarePlugin
.
cc
\
src
/
FirmwarePlugin
/
APM
/
APMGeoFenceManager
.
cc
\
src
/
FirmwarePlugin
/
APM
/
APMParameterMetaData
.
cc
\
src
/
FirmwarePlugin
/
APM
/
APMRallyPointManager
.
cc
\
src
/
FirmwarePlugin
/
APM
/
ArduCopterFirmwarePlugin
.
cc
\
src
/
FirmwarePlugin
/
APM
/
ArduPlaneFirmwarePlugin
.
cc
\
src
/
FirmwarePlugin
/
APM
/
ArduRoverFirmwarePlugin
.
cc
\
...
...
@@ -974,7 +978,6 @@ PX4FirmwarePlugin {
src
/
AutoPilotPlugins
/
PX4
/
SensorsComponent
.
h
\
src
/
AutoPilotPlugins
/
PX4
/
SensorsComponentController
.
h
\
src
/
FirmwarePlugin
/
PX4
/
PX4FirmwarePlugin
.
h
\
src
/
FirmwarePlugin
/
PX4
/
PX4GeoFenceManager
.
h
\
src
/
FirmwarePlugin
/
PX4
/
PX4ParameterMetaData
.
h
\
SOURCES
+=
\
...
...
@@ -995,7 +998,6 @@ PX4FirmwarePlugin {
src
/
AutoPilotPlugins
/
PX4
/
SensorsComponent
.
cc
\
src
/
AutoPilotPlugins
/
PX4
/
SensorsComponentController
.
cc
\
src
/
FirmwarePlugin
/
PX4
/
PX4FirmwarePlugin
.
cc
\
src
/
FirmwarePlugin
/
PX4
/
PX4GeoFenceManager
.
cc
\
src
/
FirmwarePlugin
/
PX4
/
PX4ParameterMetaData
.
cc
\
}
...
...
qgroundcontrol.qrc
View file @
72ac8f8a
...
...
@@ -90,6 +90,7 @@
<file alias="QGroundControl/Controls/QGCLabel.qml">src/QmlControls/QGCLabel.qml</file>
<file alias="QGroundControl/Controls/QGCListView.qml">src/QmlControls/QGCListView.qml</file>
<file alias="QGroundControl/Controls/QGCMapLabel.qml">src/QmlControls/QGCMapLabel.qml</file>
<file alias="QGroundControl/Controls/QGCMapCircleVisuals.qml">src/MissionManager/QGCMapCircleVisuals.qml</file>
<file alias="QGroundControl/Controls/QGCMapPolygonVisuals.qml">src/MissionManager/QGCMapPolygonVisuals.qml</file>
<file alias="QGroundControl/Controls/QGCMouseArea.qml">src/QmlControls/QGCMouseArea.qml</file>
<file alias="QGroundControl/Controls/QGCMovableItem.qml">src/QmlControls/QGCMovableItem.qml</file>
...
...
@@ -199,6 +200,7 @@
<file alias="AutoConnect.SettingsGroup.json">src/Settings/AutoConnect.SettingsGroup.json</file>
<file alias="FlightMap.SettingsGroup.json">src/Settings/FlightMap.SettingsGroup.json</file>
<file alias="Guided.SettingsGroup.json">src/Settings/Guided.SettingsGroup.json</file>
<file alias="QGCMapCircle.Facts.json">src/MissionManager/QGCMapCircle.Facts.json</file>
<file alias="RTK.SettingsGroup.json">src/Settings/RTK.SettingsGroup.json</file>
<file alias="Survey.SettingsGroup.json">src/MissionManager/Survey.SettingsGroup.json</file>
<file alias="Units.SettingsGroup.json">src/Settings/Units.SettingsGroup.json</file>
...
...
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
View file @
72ac8f8a
...
...
@@ -17,8 +17,6 @@
#include "FirmwarePlugin.h"
#include "QGCLoggingCategory.h"
#include "APMParameterMetaData.h"
#include "APMGeoFenceManager.h"
#include "APMRallyPointManager.h"
#include <QAbstractSocket>
...
...
@@ -93,8 +91,6 @@ public:
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
)
final
;
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
final
{
return
new
APMGeoFenceManager
(
vehicle
);
}
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
final
{
return
new
APMRallyPointManager
(
vehicle
);
}
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"
);
}
...
...
src/FirmwarePlugin/APM/APMGeoFenceManager.cc
deleted
100644 → 0
View file @
a11b1dbf
This diff is collapsed.
Click to expand it.
src/FirmwarePlugin/APM/APMGeoFenceManager.h
deleted
100644 → 0
View file @
a11b1dbf
/****************************************************************************
*
* (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 APMGeoFenceManager_H
#define APMGeoFenceManager_H
#include "GeoFenceManager.h"
#include "QGCMAVLink.h"
#include "FactSystem.h"
class
QmlObjectListModel
;
class
APMGeoFenceManager
:
public
GeoFenceManager
{
Q_OBJECT
public:
APMGeoFenceManager
(
Vehicle
*
vehicle
);
~
APMGeoFenceManager
();
// Overrides from GeoFenceManager
bool
inProgress
(
void
)
const
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
const
QGeoCoordinate
&
breachReturn
,
QmlObjectListModel
&
polygon
)
final
;
bool
polygonSupported
(
void
)
const
final
{
return
_polygonSupported
;
}
bool
polygonEnabled
(
void
)
const
final
{
return
_polygonEnabled
;
}
bool
breachReturnSupported
(
void
)
const
final
{
return
_breachReturnSupported
;
}
bool
circleEnabled
(
void
)
const
{
return
_circleEnabled
;
}
Fact
*
circleRadiusFact
(
void
)
const
{
return
_circleRadiusFact
;
}
QVariantList
params
(
void
)
const
final
{
return
_params
;
}
QStringList
paramLabels
(
void
)
const
final
{
return
_paramLabels
;
}
void
removeAll
(
void
)
final
;
private
slots
:
void
_mavlinkMessageReceived
(
const
mavlink_message_t
&
message
);
void
_parametersReady
(
void
);
private:
void
_requestFencePoint
(
uint8_t
pointIndex
);
void
_sendFencePoint
(
uint8_t
pointIndex
);
void
_updateEnabledFlags
(
void
);
void
_setCircleEnabled
(
bool
circleEnabled
);
void
_setPolygonEnabled
(
bool
polygonEnabled
);
private:
bool
_fenceSupported
;
bool
_circleEnabled
;
bool
_polygonSupported
;
bool
_polygonEnabled
;
bool
_breachReturnSupported
;
bool
_firstParamLoadComplete
;
QVariantList
_params
;
QStringList
_paramLabels
;
bool
_readTransactionInProgress
;
bool
_writeTransactionInProgress
;
uint8_t
_cReadFencePoints
;
uint8_t
_cWriteFencePoints
;
uint8_t
_currentFencePoint
;
Fact
*
_fenceTypeFact
;
Fact
*
_fenceEnableFact
;
Fact
*
_circleRadiusFact
;
static
const
char
*
_fenceTotalParam
;
static
const
char
*
_fenceActionParam
;
static
const
char
*
_fenceEnableParam
;
};
#endif
src/FirmwarePlugin/APM/APMRallyPointManager.cc
deleted
100644 → 0
View file @
a11b1dbf
/****************************************************************************
*
* (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 "APMRallyPointManager.h"
#include "Vehicle.h"
#include "FirmwarePlugin.h"
#include "MAVLinkProtocol.h"
#include "QGCApplication.h"
#include "ParameterManager.h"
const
char
*
APMRallyPointManager
::
_rallyTotalParam
=
"RALLY_TOTAL"
;
APMRallyPointManager
::
APMRallyPointManager
(
Vehicle
*
vehicle
)
:
RallyPointManager
(
vehicle
)
,
_readTransactionInProgress
(
false
)
,
_writeTransactionInProgress
(
false
)
{
connect
(
_vehicle
,
&
Vehicle
::
mavlinkMessageReceived
,
this
,
&
APMRallyPointManager
::
_mavlinkMessageReceived
);
}
APMRallyPointManager
::~
APMRallyPointManager
()
{
}
void
APMRallyPointManager
::
sendToVehicle
(
const
QList
<
QGeoCoordinate
>&
rgPoints
)
{
if
(
_vehicle
->
isOfflineEditingVehicle
()
||
!
rallyPointsSupported
())
{
return
;
}
if
(
_readTransactionInProgress
)
{
_sendError
(
InternalError
,
QStringLiteral
(
"Rally Point write attempted while read in progress."
));
return
;
}
_vehicle
->
parameterManager
()
->
getParameter
(
FactSystem
::
defaultComponentId
,
_rallyTotalParam
)
->
setRawValue
(
rgPoints
.
count
());
// FIXME: No validation of correct point received
_rgPoints
=
rgPoints
;
for
(
uint8_t
index
=
0
;
index
<
_rgPoints
.
count
();
index
++
)
{
_sendRallyPoint
(
index
);
}
emit
sendComplete
(
false
/* error */
);
}
void
APMRallyPointManager
::
loadFromVehicle
(
void
)
{
if
(
_vehicle
->
isOfflineEditingVehicle
()
||
_readTransactionInProgress
)
{
return
;
}
_rgPoints
.
clear
();
if
(
!
rallyPointsSupported
())
{
emit
loadComplete
(
QList
<
QGeoCoordinate
>
());
return
;
}
_cReadRallyPoints
=
_vehicle
->
parameterManager
()
->
getParameter
(
FactSystem
::
defaultComponentId
,
_rallyTotalParam
)
->
rawValue
().
toInt
();
qCDebug
(
RallyPointManagerLog
)
<<
"APMRallyPointManager::loadFromVehicle - point count"
<<
_cReadRallyPoints
;
if
(
_cReadRallyPoints
==
0
)
{
emit
loadComplete
(
_rgPoints
);
return
;
}
_currentRallyPoint
=
0
;
_readTransactionInProgress
=
true
;
_requestRallyPoint
(
_currentRallyPoint
);
}
/// Called when a new mavlink message for out vehicle is received
void
APMRallyPointManager
::
_mavlinkMessageReceived
(
const
mavlink_message_t
&
message
)
{
if
(
message
.
msgid
==
MAVLINK_MSG_ID_RALLY_POINT
)
{
mavlink_rally_point_t
rallyPoint
;
mavlink_msg_rally_point_decode
(
&
message
,
&
rallyPoint
);
qCDebug
(
RallyPointManagerLog
)
<<
"From vehicle rally_point: idx:lat:lng:alt"
<<
rallyPoint
.
idx
<<
rallyPoint
.
lat
<<
rallyPoint
.
lng
<<
rallyPoint
.
alt
;
if
(
rallyPoint
.
idx
!=
_currentRallyPoint
)
{
// FIXME: Protocol out of whack
_readTransactionInProgress
=
false
;
emit
inProgressChanged
(
inProgress
());
qCWarning
(
RallyPointManagerLog
)
<<
"Indices out of sync"
<<
rallyPoint
.
idx
<<
_currentRallyPoint
;
return
;
}
QGeoCoordinate
point
((
float
)
rallyPoint
.
lat
/
1e7
,
(
float
)
rallyPoint
.
lng
/
1e7
,
rallyPoint
.
alt
);
_rgPoints
.
append
(
point
);
if
(
rallyPoint
.
idx
<
_cReadRallyPoints
-
1
)
{
// Still more points to request
_requestRallyPoint
(
++
_currentRallyPoint
);
}
else
{
// We've finished collecting rally points
qCDebug
(
RallyPointManagerLog
)
<<
"Rally point load complete"
;
_readTransactionInProgress
=
false
;
emit
loadComplete
(
_rgPoints
);
emit
inProgressChanged
(
inProgress
());
}
}
}
void
APMRallyPointManager
::
_requestRallyPoint
(
uint8_t
pointIndex
)
{
mavlink_message_t
msg
;
MAVLinkProtocol
*
mavlink
=
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
();
qCDebug
(
RallyPointManagerLog
)
<<
"APMRallyPointManager::_requestRallyPoint"
<<
pointIndex
;
mavlink_msg_rally_fetch_point_pack_chan
(
mavlink
->
getSystemId
(),
mavlink
->
getComponentId
(),
_vehicle
->
priorityLink
()
->
mavlinkChannel
(),
&
msg
,
_vehicle
->
id
(),
_vehicle
->
defaultComponentId
(),
pointIndex
);
_vehicle
->
sendMessageOnLink
(
_vehicle
->
priorityLink
(),
msg
);
}
void
APMRallyPointManager
::
_sendRallyPoint
(
uint8_t
pointIndex
)
{
mavlink_message_t
msg
;
MAVLinkProtocol
*
mavlink
=
qgcApp
()
->
toolbox
()
->
mavlinkProtocol
();
QGeoCoordinate
point
=
_rgPoints
[
pointIndex
];
mavlink_msg_rally_point_pack_chan
(
mavlink
->
getSystemId
(),
mavlink
->
getComponentId
(),
_vehicle
->
priorityLink
()
->
mavlinkChannel
(),
&
msg
,
_vehicle
->
id
(),
_vehicle
->
defaultComponentId
(),
pointIndex
,
_rgPoints
.
count
(),
point
.
latitude
()
*
1e7
,
point
.
longitude
()
*
1e7
,
point
.
altitude
(),
0
,
0
,
0
);
// break_alt, land_dir, flags
_vehicle
->
sendMessageOnLink
(
_vehicle
->
priorityLink
(),
msg
);
}
bool
APMRallyPointManager
::
inProgress
(
void
)
const
{
return
_readTransactionInProgress
||
_writeTransactionInProgress
;
}
bool
APMRallyPointManager
::
rallyPointsSupported
(
void
)
const
{
return
_vehicle
->
parameterManager
()
->
parameterExists
(
_vehicle
->
defaultComponentId
(),
_rallyTotalParam
);
}
void
APMRallyPointManager
::
removeAll
(
void
)
{
qCDebug
(
RallyPointManagerLog
)
<<
"APMRallyPointManager::removeAll"
;
QList
<
QGeoCoordinate
>
noRallyPoints
;
sendToVehicle
(
noRallyPoints
);
emit
removeAllComplete
(
false
/* error */
);
}
src/FirmwarePlugin/APM/APMRallyPointManager.h
deleted
100644 → 0
View file @
a11b1dbf
/****************************************************************************
*
* (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 APMRallyPointManager_H
#define APMRallyPointManager_H
#include "RallyPointManager.h"
#include "QGCMAVLink.h"
class
APMRallyPointManager
:
public
RallyPointManager
{
Q_OBJECT
public:
APMRallyPointManager
(
Vehicle
*
vehicle
);
~
APMRallyPointManager
();
// Overrides from RallyPointManager
bool
inProgress
(
void
)
const
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
const
QList
<
QGeoCoordinate
>&
rgPoints
)
final
;
bool
rallyPointsSupported
(
void
)
const
final
;
void
removeAll
(
void
);
QString
editorQml
(
void
)
const
final
{
return
QStringLiteral
(
"qrc:/FirmwarePlugin/APM/APMRallyPointEditor.qml"
);
}
private
slots
:
void
_mavlinkMessageReceived
(
const
mavlink_message_t
&
message
);
private:
void
_requestRallyPoint
(
uint8_t
pointIndex
);
void
_sendRallyPoint
(
uint8_t
pointIndex
);
private:
bool
_readTransactionInProgress
;
bool
_writeTransactionInProgress
;
uint8_t
_cReadRallyPoints
;
uint8_t
_currentRallyPoint
;
static
const
char
*
_rallyTotalParam
;
};
#endif
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
View file @
72ac8f8a
...
...
@@ -278,12 +278,6 @@ bool ArduCopterFirmwarePlugin::multiRotorXConfig(Vehicle* vehicle)
return
vehicle
->
parameterManager
()
->
getParameter
(
FactSystem
::
defaultComponentId
,
"FRAME"
)
->
rawValue
().
toInt
()
!=
0
;
}
QString
ArduCopterFirmwarePlugin
::
geoFenceRadiusParam
(
Vehicle
*
vehicle
)
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"FENCE_RADIUS"
);
}
bool
ArduCopterFirmwarePlugin
::
vehicleYawsToNextWaypointInMission
(
const
Vehicle
*
vehicle
)
const
{
if
(
vehicle
->
isOfflineEditingVehicle
())
{
...
...
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
View file @
72ac8f8a
...
...
@@ -67,7 +67,6 @@ public:
int
remapParamNameHigestMinorVersionNumber
(
int
majorVersionNumber
)
const
final
;
bool
multiRotorCoaxialMotors
(
Vehicle
*
vehicle
)
final
;
bool
multiRotorXConfig
(
Vehicle
*
vehicle
)
final
;
QString
geoFenceRadiusParam
(
Vehicle
*
vehicle
)
final
;
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/APM/Copter.OfflineEditing.params"
);
}
QString
pauseFlightMode
(
void
)
const
override
{
return
QString
(
"Brake"
);
}
QString
missionFlightMode
(
void
)
const
override
{
return
QString
(
"Auto"
);
}
...
...
src/FirmwarePlugin/FirmwarePlugin.h
View file @
72ac8f8a
...
...
@@ -235,15 +235,6 @@ public:
/// @return true: X confiuration, false: Plus configuration
virtual
bool
multiRotorXConfig
(
Vehicle
*
vehicle
)
{
Q_UNUSED
(
vehicle
);
return
false
;
}
/// Returns a newly created geofence manager for this vehicle.
virtual
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
GeoFenceManager
(
vehicle
);
}
/// Returns the parameter which holds the fence circle radius if supported.
virtual
QString
geoFenceRadiusParam
(
Vehicle
*
vehicle
)
{
Q_UNUSED
(
vehicle
);
return
QString
();
}
/// Returns a newly created rally point manager for this vehicle.
virtual
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
{
return
new
RallyPointManager
(
vehicle
);
}
/// Return the resource file which contains the set of params loaded for offline editing.
virtual
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
{
Q_UNUSED
(
vehicle
);
return
QString
();
}
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
View file @
72ac8f8a
...
...
@@ -17,7 +17,6 @@
#include "FirmwarePlugin.h"
#include "ParameterManager.h"
#include "PX4ParameterMetaData.h"
#include "PX4GeoFenceManager.h"
class
PX4FirmwarePlugin
:
public
FirmwarePlugin
{
...
...
@@ -62,7 +61,6 @@ public:
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
override
{
PX4ParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
)
final
;
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
override
;
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
override
{
return
new
PX4GeoFenceManager
(
vehicle
);
}
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/PX4/PX4.OfflineEditing.params"
);
}
QString
brandImageIndoor
(
const
Vehicle
*
vehicle
)
const
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/PX4/BrandImage"
);
}
QString
brandImageOutdoor
(
const
Vehicle
*
vehicle
)
const
override
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/PX4/BrandImage"
);
}
...
...
src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc
deleted
100644 → 0
View file @
a11b1dbf
/****************************************************************************
*
* (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 "PX4GeoFenceManager.h"
#include "Vehicle.h"
#include "FirmwarePlugin.h"
#include "ParameterManager.h"
PX4GeoFenceManager
::
PX4GeoFenceManager
(
Vehicle
*
vehicle
)
:
GeoFenceManager
(
vehicle
)
,
_firstParamLoadComplete
(
false
)
,
_circleRadiusFact
(
NULL
)
{
connect
(
_vehicle
->
parameterManager
(),
&
ParameterManager
::
parametersReadyChanged
,
this
,
&
PX4GeoFenceManager
::
_parametersReady
);
if
(
_vehicle
->
parameterManager
()
->
parametersReady
())
{
_parametersReady
();
}
}
PX4GeoFenceManager
::~
PX4GeoFenceManager
()
{
}
void
PX4GeoFenceManager
::
_parametersReady
(
void
)
{
if
(
!
_firstParamLoadComplete
)
{
_firstParamLoadComplete
=
true
;
_circleRadiusFact
=
_vehicle
->
parameterManager
()
->
getParameter
(
FactSystem
::
defaultComponentId
,
QStringLiteral
(
"GF_MAX_HOR_DIST"
));
emit
circleRadiusFactChanged
(
_circleRadiusFact
);
QStringList
paramNames
;
QStringList
paramLabels
;
paramNames
<<
QStringLiteral
(
"GF_ACTION"
)
<<
QStringLiteral
(
"GF_MAX_HOR_DIST"
)
<<
QStringLiteral
(
"GF_MAX_VER_DIST"
);
paramLabels
<<
QStringLiteral
(
"Breach Action:"
)
<<
QStringLiteral
(
"Radius:"
)
<<
QStringLiteral
(
"Max Altitude:"
);
_params
.
clear
();
_paramLabels
.
clear
();
for
(
int
i
=
0
;
i
<
paramNames
.
count
();
i
++
)
{
QString
paramName
=
paramNames
[
i
];
if
(
_vehicle
->
parameterManager
()
->
parameterExists
(
FactSystem
::
defaultComponentId
,
paramName
))
{
Fact
*
paramFact
=
_vehicle
->
parameterManager
()
->
getParameter
(
FactSystem
::
defaultComponentId
,
paramName
);
_params
<<
QVariant
::
fromValue
(
paramFact
);
_paramLabels
<<
paramLabels
[
i
];
}
}
emit
paramsChanged
(
_params
);
emit
paramLabelsChanged
(
_paramLabels
);
}
}
src/FirmwarePlugin/PX4/PX4GeoFenceManager.h
deleted
100644 → 0
View file @
a11b1dbf
/****************************************************************************
*
* (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 PX4GeoFenceManager_H
#define PX4GeoFenceManager_H
#include "GeoFenceManager.h"
#include "QGCMAVLink.h"
#include "FactSystem.h"
class
PX4GeoFenceManager
:
public
GeoFenceManager
{
Q_OBJECT
public:
PX4GeoFenceManager
(
Vehicle
*
vehicle
);
~
PX4GeoFenceManager
();
// Overrides from GeoFenceManager
bool
circleEnabled
(
void
)
const
{
return
true
;
}
Fact
*
circleRadiusFact
(
void
)
const
{
return
_circleRadiusFact
;
}
QVariantList
params
(
void
)
const
final
{
return
_params
;
}
QStringList
paramLabels
(
void
)
const
final
{
return
_paramLabels
;
}
private
slots
:
void
_parametersReady
(
void
);
private:
bool
_firstParamLoadComplete
;
Fact
*
_circleRadiusFact
;
QVariantList
_params
;
QStringList
_paramLabels
;
};
#endif
src/FlightMap/qmldir
View file @
72ac8f8a
...
...
@@ -29,6 +29,3 @@ MissionItemView 1.0 MissionItemView.qml
MissionLineView 1.0 MissionLineView.qml
PolygonEditor 1.0 PolygonEditor.qml
VehicleMapItem 1.0 VehicleMapItem.qml
# Editor controls
QGCMapPolygonControls 1.0 QGCMapPolygonControls.qml
src/MissionManager/GeoFenceController.cc
View file @
72ac8f8a
This diff is collapsed.
Click to expand it.
src/MissionManager/GeoFenceController.h
View file @
72ac8f8a
...
...
@@ -12,7 +12,8 @@
#include "PlanElementController.h"
#include "GeoFenceManager.h"
#include "QGCMapPolygon.h"
#include "QGCFencePolygon.h"
#include "QGCFenceCircle.h"
#include "Vehicle.h"
#include "MultiVehicleManager.h"
#include "QGCLoggingCategory.h"
...
...
@@ -29,21 +30,32 @@ public:
GeoFenceController
(
PlanMasterController
*
masterController
,
QObject
*
parent
=
NULL
);
~
GeoFenceController
();
Q_PROPERTY
(
QGCMapPolygon
*
mapPolygon
READ
mapPolygon
CONSTANT
)
Q_PROPERTY
(
QGeoCoordinate
breachReturnPoint
READ
breachReturnPoint
WRITE
setBreachReturnPoint
NOTIFY
breachReturnPointChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
polygons
READ
polygons
CONSTANT
)
Q_PROPERTY
(
QmlObjectListModel
*
circles
READ
circles
CONSTANT
)
Q_PROPERTY
(
QGeoCoordinate
breachReturnPoint
READ
breachReturnPoint
WRITE
setBreachReturnPoint
NOTIFY
breachReturnPointChanged
)
// The following properties are reflections of properties from GeoFenceManager
Q_PROPERTY
(
bool
circleEnabled
READ
circleEnabled
NOTIFY
circleEnabledChanged
)
Q_PROPERTY
(
Fact
*
circleRadiusFact
READ
circleRadiusFact
NOTIFY
circleRadiusFactChanged
)
Q_PROPERTY
(
bool
polygonSupported
READ
polygonSupported
NOTIFY
polygonSupportedChanged
)
Q_PROPERTY
(
bool
polygonEnabled
READ
polygonEnabled
NOTIFY
polygonEnabledChanged
)
Q_PROPERTY
(
bool
breachReturnSupported
READ
breachReturnSupported
NOTIFY
breachReturnSupportedChanged
)
Q_PROPERTY
(
QVariantList
params
READ
params
NOTIFY
paramsChanged
)
Q_PROPERTY
(
QStringList
paramLabels
READ
paramLabels
NOTIFY
paramLabelsChanged
)
/// Add a new inclusion polygon to the fence
/// @param topLeft - Top left coordinate or map viewport
/// @param topLeft - Bottom right left coordinate or map viewport
Q_INVOKABLE
void
addInclusionPolygon
(
QGeoCoordinate
topLeft
,
QGeoCoordinate
bottomRight
);
Q_INVOKABLE
void
addPolygon
(
void
)
{
emit
addInitialFencePolygon
();
}
Q_INVOKABLE
void
removePolygon
(
void
)
{
_mapPolygon
.
clear
();
}
/// Add a new inclusion circle to the fence
/// @param topLeft - Top left coordinate or map viewport
/// @param topLeft - Bottom right left coordinate or map viewport
Q_INVOKABLE
void
addInclusionCircle
(
QGeoCoordinate
topLeft
,
QGeoCoordinate
bottomRight
);
/// Deletes the specified polygon from the polygon list
/// @param index Index of poygon to delete
Q_INVOKABLE
void
deletePolygon
(
int
index
);
/// Deletes the specified circle from the circle list
/// @param index Index of circle to delete
Q_INVOKABLE
void
deleteCircle
(
int
index
);
/// Clears the interactive bit from all fence items
Q_INVOKABLE
void
clearAllInteractive
(
void
);
bool
supported
(
void
)
const
final
;
void
start
(
bool
editMode
)
final
;
void
save
(
QJsonObject
&
json
)
final
;
bool
load
(
const
QJsonObject
&
json
,
QString
&
errorString
)
final
;
...
...
@@ -58,15 +70,9 @@ public:
void
managerVehicleChanged
(
Vehicle
*
managerVehicle
)
final
;
bool
showPlanFromManagerVehicle
(
void
)
final
;
bool
circleEnabled
(
void
)
const
;
Fact
*
circleRadiusFact
(
void
)
const
;
bool
polygonSupported
(
void
)
const
;
bool
polygonEnabled
(
void
)
const
;
bool
breachReturnSupported
(
void
)
const
;
QVariantList
params
(
void
)
const
;
QStringList
paramLabels
(
void
)
const
;
QGCMapPolygon
*
mapPolygon
(
void
)
{
return
&
_mapPolygon
;
}
QGeoCoordinate
breachReturnPoint
(
void
)
const
{
return
_breachReturnPoint
;
}
QmlObjectListModel
*
polygons
(
void
)
{
return
&
_polygons
;
}
QmlObjectListModel
*
circles
(
void
)
{
return
&
_circles
;
}
QGeoCoordinate
breachReturnPoint
(
void
)
const
{
return
_breachReturnPoint
;
}
void
setBreachReturnPoint
(
const
QGeoCoordinate
&
breachReturnPoint
);
...
...
@@ -74,21 +80,14 @@ signals:
void
breachReturnPointChanged
(
QGeoCoordinate
breachReturnPoint
);
void
editorQmlChanged
(
QString
editorQml
);
void
loadComplete
(
void
);
void
addInitialFencePolygon
(
void
);
void
circleEnabledChanged
(
bool
circleEnabled
);
void
circleRadiusFactChanged
(
Fact
*
circleRadiusFact
);
void
polygonSupportedChanged
(
bool
polygonSupported
);
void
polygonEnabledChanged
(
bool
polygonEnabled
);
void
breachReturnSupportedChanged
(
bool
breachReturnSupported
);
void
paramsChanged
(
QVariantList
params
);
void
paramLabelsChanged
(
QStringList
paramLabels
);
private
slots
:
void
_polygonDirtyChanged
(
bool
dirty
);
void
_setDirty
(
void
);
void
_setPolygonFromManager
(
const
QList
<
QGeoCoordinate
>&
polygon
);
void
_setFenceFromManager
(
const
QList
<
QGCFencePolygon
>&
polygons
,
const
QList
<
QGCFenceCircle
>&
circles
);
void
_setReturnPointFromManager
(
QGeoCoordinate
breachReturnPoint
);
void
_managerLoadComplete
(
const
QGeoCoordinate
&
breachReturn
,
const
QList
<
QGeoCoordinate
>&
polygon
);
void
_managerLoadComplete
(
void
);
void
_updateContainsItems
(
void
);
void
_managerSendComplete
(
bool
error
);
void
_managerRemoveAllComplete
(
bool
error
);
...
...
@@ -99,7 +98,8 @@ private:
GeoFenceManager
*
_geoFenceManager
;
bool
_dirty
;
QGCMapPolygon
_mapPolygon
;
QmlObjectListModel
_polygons
;
QmlObjectListModel
_circles
;
QGeoCoordinate
_breachReturnPoint
;
bool
_itemsRequested
;
...
...
src/MissionManager/GeoFenceManager.cc
View file @
72ac8f8a
...
...
@@ -10,14 +10,22 @@
#include "GeoFenceManager.h"
#include "Vehicle.h"
#include "QmlObjectListModel.h"
#include "ParameterManager.h"
#include "QGCMapPolygon.h"
#include "QGCMapCircle.h"
QGC_LOGGING_CATEGORY
(
GeoFenceManagerLog
,
"GeoFenceManagerLog"
)
GeoFenceManager
::
GeoFenceManager
(
Vehicle
*
vehicle
)
:
QObject
(
vehicle
)
,
_vehicle
(
vehicle
)
:
_vehicle
(
vehicle
)
,
_planManager
(
vehicle
,
MAV_MISSION_TYPE_FENCE
)
,
_firstParamLoadComplete
(
false
)
{
connect
(
&
_planManager
,
&
PlanManager
::
inProgressChanged
,
this
,
&
GeoFenceManager
::
inProgressChanged
);
connect
(
&
_planManager
,
&
PlanManager
::
error
,
this
,
&
GeoFenceManager
::
error
);
<