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
af8c2a88
Commit
af8c2a88
authored
Sep 16, 2016
by
Don Gagne
Committed by
GitHub
Sep 16, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4040 from DonLakeFlyer/FencePersistence
File load/save for GeoFence
parents
daff7498
e54c2a49
Changes
44
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
981 additions
and
232 deletions
+981
-232
qgcresources.qrc
qgcresources.qrc
+1
-0
qgroundcontrol.pro
qgroundcontrol.pro
+4
-4
APMAirframeLoader.h
src/AutoPilotPlugins/APM/APMAirframeLoader.h
+1
-1
AutoPilotPlugin.cc
src/AutoPilotPlugins/AutoPilotPlugin.cc
+9
-14
AutoPilotPlugin.h
src/AutoPilotPlugins/AutoPilotPlugin.h
+1
-3
PX4AirframeLoader.h
src/AutoPilotPlugins/PX4/PX4AirframeLoader.h
+1
-1
ParameterManager.cc
src/FactSystem/ParameterManager.cc
+208
-89
ParameterManager.h
src/FactSystem/ParameterManager.h
+26
-8
ParameterManagerTest.cc
src/FactSystem/ParameterManagerTest.cc
+10
-10
ParameterManagerTest.h
src/FactSystem/ParameterManagerTest.h
+3
-3
APMGeoFenceManager.cc
src/FirmwarePlugin/APM/APMGeoFenceManager.cc
+3
-3
CopterGeoFenceEditor.qml
src/FirmwarePlugin/APM/CopterGeoFenceEditor.qml
+2
-0
PlaneGeoFenceEditor.qml
src/FirmwarePlugin/APM/PlaneGeoFenceEditor.qml
+2
-0
PX4FirmwarePlugin.cc
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
+3
-1
PX4FirmwarePlugin.h
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
+2
-1
PX4GeoFenceEditor.qml
src/FirmwarePlugin/PX4/PX4GeoFenceEditor.qml
+4
-4
PX4GeoFenceManager.cc
src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc
+2
-2
PX4ParameterMetaData.cc
src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
+1
-1
V1.4.OfflineEditing.params
src/FirmwarePlugin/PX4/V1.4.OfflineEditing.params
+304
-0
FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewMap.qml
+3
-1
FlightMap.qml
src/FlightMap/FlightMap.qml
+1
-0
JsonHelper.cc
src/JsonHelper.cc
+24
-2
JsonHelper.h
src/JsonHelper.h
+11
-1
GeoFenceEditor.qml
src/MissionEditor/GeoFenceEditor.qml
+0
-10
MissionEditor.qml
src/MissionEditor/MissionEditor.qml
+35
-10
QGCMapPolygonControls.qml
src/MissionEditor/QGCMapPolygonControls.qml
+7
-1
GeoFenceController.cc
src/MissionManager/GeoFenceController.cc
+194
-15
GeoFenceController.h
src/MissionManager/GeoFenceController.h
+9
-4
MissionCommandTreeTest.cc
src/MissionManager/MissionCommandTreeTest.cc
+1
-1
MissionController.cc
src/MissionManager/MissionController.cc
+7
-9
MissionController.h
src/MissionManager/MissionController.h
+0
-2
QGCMapPolygon.cc
src/MissionManager/QGCMapPolygon.cc
+57
-0
QGCMapPolygon.h
src/MissionManager/QGCMapPolygon.h
+13
-0
SurveyMissionItem.cc
src/MissionManager/SurveyMissionItem.cc
+4
-5
SurveyMissionItem.h
src/MissionManager/SurveyMissionItem.h
+0
-1
QGCApplication.cc
src/QGCApplication.cc
+2
-1
QGCApplication.h
src/QGCApplication.h
+1
-0
QGCLoggingCategory.cc
src/QGCLoggingCategory.cc
+1
-1
QGCLoggingCategory.h
src/QGCLoggingCategory.h
+1
-1
ParameterEditorController.cc
src/QmlControls/ParameterEditorController.cc
+5
-4
Vehicle.cc
src/Vehicle/Vehicle.cc
+10
-10
Vehicle.h
src/Vehicle/Vehicle.h
+4
-4
FirmwareImage.cc
src/VehicleSetup/FirmwareImage.cc
+2
-2
UnitTestList.cc
src/qgcunittest/UnitTestList.cc
+2
-2
No files found.
qgcresources.qrc
View file @
af8c2a88
...
...
@@ -282,6 +282,7 @@
<qresource prefix="/FirmwarePlugin/PX4">
<file alias="PX4ParameterFactMetaData.xml">src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml</file>
<file alias="PX4GeoFenceEditor.qml">src/FirmwarePlugin/PX4/PX4GeoFenceEditor.qml</file>
<file alias="PX4.OfflineEditing.params">src/FirmwarePlugin/PX4/V1.4.OfflineEditing.params</file>
</qresource>
<qresource prefix="/opengl">
<file>resources/opengl/buglist.json</file>
...
...
qgroundcontrol.pro
View file @
af8c2a88
...
...
@@ -585,6 +585,7 @@ HEADERS += \
src/FactSystem/FactSystemTestBase.h \
src/FactSystem/FactSystemTestGeneric.h \
src/FactSystem/FactSystemTestPX4.h \
src/FactSystem/ParameterManagerTest.h \
src/MissionManager/ComplexMissionItemTest.h \
src/MissionManager/MissionCommandTreeTest.h \
src/MissionManager/MissionControllerTest.h \
...
...
@@ -601,7 +602,6 @@ HEADERS += \
src/qgcunittest/MavlinkLogTest.h \
src/qgcunittest/MessageBoxTest.h \
src/qgcunittest/MultiSignalSpy.h \
src/qgcunittest/ParameterLoaderTest.h \
src/qgcunittest/RadioConfigTest.h \
src/qgcunittest/TCPLinkTest.h \
src/qgcunittest/TCPLoopBackServer.h \
...
...
@@ -613,6 +613,7 @@ SOURCES += \
src/FactSystem/FactSystemTestBase.cc \
src/FactSystem/FactSystemTestGeneric.cc \
src/FactSystem/FactSystemTestPX4.cc \
src/FactSystem/ParameterManagerTest.cc \
src/MissionManager/ComplexMissionItemTest.cc \
src/MissionManager/MissionCommandTreeTest.cc \
src/MissionManager/MissionControllerTest.cc \
...
...
@@ -629,7 +630,6 @@ SOURCES += \
src/qgcunittest/MavlinkLogTest.cc \
src/qgcunittest/MessageBoxTest.cc \
src/qgcunittest/MultiSignalSpy.cc \
src/qgcunittest/ParameterLoaderTest.cc \
src/qgcunittest/RadioConfigTest.cc \
src/qgcunittest/TCPLinkTest.cc \
src/qgcunittest/TCPLoopBackServer.cc \
...
...
@@ -792,7 +792,7 @@ HEADERS += \
src/FactSystem/FactMetaData.h \
src/FactSystem/FactSystem.h \
src/FactSystem/FactValidator.h \
src/FactSystem/Parameter
Load
er.h \
src/FactSystem/Parameter
Manag
er.h \
src/FactSystem/SettingsFact.h \
SOURCES += \
...
...
@@ -802,7 +802,7 @@ SOURCES += \
src/FactSystem/FactMetaData.cc \
src/FactSystem/FactSystem.cc \
src/FactSystem/FactValidator.cc \
src/FactSystem/Parameter
Load
er.cc \
src/FactSystem/Parameter
Manag
er.cc \
src/FactSystem/SettingsFact.cc \
#-------------------------------------------------------------------------------------
...
...
src/AutoPilotPlugins/APM/APMAirframeLoader.h
View file @
af8c2a88
...
...
@@ -16,7 +16,7 @@
#include <QXmlStreamReader>
#include <QLoggingCategory>
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "FactSystem.h"
#include "UASInterface.h"
#include "AutoPilotPlugin.h"
...
...
src/AutoPilotPlugins/AutoPilotPlugin.cc
View file @
af8c2a88
...
...
@@ -13,7 +13,7 @@
#include "AutoPilotPlugin.h"
#include "QGCApplication.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "UAS.h"
#include "FirmwarePlugin.h"
...
...
@@ -104,24 +104,24 @@ void AutoPilotPlugin::resetAllParametersToDefaults(void)
void
AutoPilotPlugin
::
refreshAllParameters
(
unsigned
char
componentID
)
{
_vehicle
->
getParameter
Load
er
()
->
refreshAllParameters
((
uint8_t
)
componentID
);
_vehicle
->
getParameter
Manag
er
()
->
refreshAllParameters
((
uint8_t
)
componentID
);
}
void
AutoPilotPlugin
::
refreshParameter
(
int
componentId
,
const
QString
&
name
)
{
_vehicle
->
getParameter
Load
er
()
->
refreshParameter
(
componentId
,
name
);
_vehicle
->
getParameter
Manag
er
()
->
refreshParameter
(
componentId
,
name
);
}
void
AutoPilotPlugin
::
refreshParametersPrefix
(
int
componentId
,
const
QString
&
namePrefix
)
{
_vehicle
->
getParameter
Load
er
()
->
refreshParametersPrefix
(
componentId
,
namePrefix
);
_vehicle
->
getParameter
Manag
er
()
->
refreshParametersPrefix
(
componentId
,
namePrefix
);
}
bool
AutoPilotPlugin
::
factExists
(
FactSystem
::
Provider_t
provider
,
int
componentId
,
const
QString
&
name
)
{
switch
(
provider
)
{
case
FactSystem
:
:
ParameterProvider
:
return
_vehicle
->
getParameter
Load
er
()
->
parameterExists
(
componentId
,
name
);
return
_vehicle
->
getParameter
Manag
er
()
->
parameterExists
(
componentId
,
name
);
// Other providers will go here once they come online
}
...
...
@@ -134,7 +134,7 @@ Fact* AutoPilotPlugin::getFact(FactSystem::Provider_t provider, int componentId,
{
switch
(
provider
)
{
case
FactSystem
:
:
ParameterProvider
:
return
_vehicle
->
getParameter
Load
er
()
->
getFact
(
componentId
,
name
);
return
_vehicle
->
getParameter
Manag
er
()
->
getFact
(
componentId
,
name
);
// Other providers will go here once they come online
}
...
...
@@ -145,20 +145,15 @@ Fact* AutoPilotPlugin::getFact(FactSystem::Provider_t provider, int componentId,
QStringList
AutoPilotPlugin
::
parameterNames
(
int
componentId
)
{
return
_vehicle
->
getParameterLoader
()
->
parameterNames
(
componentId
);
}
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
AutoPilotPlugin
::
getGroupMap
(
void
)
{
return
_vehicle
->
getParameterLoader
()
->
getGroupMap
();
return
_vehicle
->
getParameterManager
()
->
parameterNames
(
componentId
);
}
void
AutoPilotPlugin
::
writeParametersToStream
(
QTextStream
&
stream
)
{
_vehicle
->
getParameter
Load
er
()
->
writeParametersToStream
(
stream
);
_vehicle
->
getParameter
Manag
er
()
->
writeParametersToStream
(
stream
);
}
QString
AutoPilotPlugin
::
readParametersFromStream
(
QTextStream
&
stream
)
{
return
_vehicle
->
getParameter
Load
er
()
->
readParametersFromStream
(
stream
);
return
_vehicle
->
getParameter
Manag
er
()
->
readParametersFromStream
(
stream
);
}
src/AutoPilotPlugins/AutoPilotPlugin.h
View file @
af8c2a88
...
...
@@ -19,7 +19,7 @@
#include "FactSystem.h"
#include "Vehicle.h"
class
Parameter
Load
er
;
class
Parameter
Manag
er
;
class
Vehicle
;
class
FirmwarePlugin
;
...
...
@@ -84,8 +84,6 @@ public:
int
componentId
,
///< fact component, -1=default component
const
QString
&
name
);
///< fact name
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
getGroupMap
(
void
);
// Must be implemented by derived class
virtual
const
QVariantList
&
vehicleComponents
(
void
)
=
0
;
...
...
src/AutoPilotPlugins/PX4/PX4AirframeLoader.h
View file @
af8c2a88
...
...
@@ -16,7 +16,7 @@
#include <QXmlStreamReader>
#include <QLoggingCategory>
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "FactSystem.h"
#include "UASInterface.h"
#include "AutoPilotPlugin.h"
...
...
src/FactSystem/Parameter
Load
er.cc
→
src/FactSystem/Parameter
Manag
er.cc
View file @
af8c2a88
This diff is collapsed.
Click to expand it.
src/FactSystem/Parameter
Load
er.h
→
src/FactSystem/Parameter
Manag
er.h
View file @
af8c2a88
...
...
@@ -8,8 +8,8 @@
****************************************************************************/
#ifndef P
ARAMETERLOADER
_H
#define P
ARAMETERLOADER
_H
#ifndef P
arameterManager
_H
#define P
arameterManager
_H
#include <QObject>
#include <QMap>
...
...
@@ -17,6 +17,7 @@
#include <QLoggingCategory>
#include <QMutex>
#include <QDir>
#include <QJsonObject>
#include "FactSystem.h"
#include "MAVLinkProtocol.h"
...
...
@@ -27,18 +28,18 @@
/// @file
/// @author Don Gagne <don@thegagnes.com>
Q_DECLARE_LOGGING_CATEGORY
(
Parameter
Load
erVerboseLog
)
Q_DECLARE_LOGGING_CATEGORY
(
Parameter
Manag
erVerboseLog
)
/// Connects to Parameter Manager to load/update Facts
class
Parameter
Load
er
:
public
QObject
class
Parameter
Manag
er
:
public
QObject
{
Q_OBJECT
public:
/// @param uas Uas which this set of facts is associated with
Parameter
Load
er
(
Vehicle
*
vehicle
);
Parameter
Manag
er
(
Vehicle
*
vehicle
);
~
Parameter
Load
er
();
~
Parameter
Manag
er
();
/// @return Directory of parameter caches
static
QDir
parameterCacheDir
();
...
...
@@ -91,8 +92,21 @@ public:
/// If this file is newer than anything in the cache, cache it as the latest version
static
void
cacheMetaDataFile
(
const
QString
&
metaDataFile
,
MAV_AUTOPILOT
firmwareType
);
int
defaultComponenentId
(
void
)
{
return
_defaultComponentId
;
}
int
defaultComponentId
(
void
)
{
return
_defaultComponentId
;
}
/// Saves the specified param set to the json object.
/// @param componentId Component id which contains params, MAV_COMP_ID_ALL to save all components
/// @param paramsToSave List of params names to save, empty to save all for component
/// @param saveObject Json object to save to
void
saveToJson
(
int
componentId
,
const
QStringList
&
paramsToSave
,
QJsonObject
&
saveObject
);
/// Load a parameter set from json
/// @param json Json object to load from
/// @param required true: no parameters in object will generate error
/// @param errorString Error string if return is false
/// @return true: success, false: failure (errorString set)
bool
loadFromJson
(
const
QJsonObject
&
json
,
bool
required
,
QString
&
errorString
);
signals:
/// Signalled when the full set of facts are ready
void
parametersReady
(
bool
missingParameters
);
...
...
@@ -179,6 +193,10 @@ private:
static
Fact
_defaultFact
;
///< Used to return default fact, when parameter not found
static
const
char
*
_cachedMetaDataFilePrefix
;
static
const
char
*
_jsonParametersKey
;
static
const
char
*
_jsonCompIdKey
;
static
const
char
*
_jsonParamNameKey
;
static
const
char
*
_jsonParamValueKey
;
};
#endif
src/
qgcunittest/ParameterLoad
erTest.cc
→
src/
FactSystem/ParameterManag
erTest.cc
View file @
af8c2a88
...
...
@@ -8,13 +8,13 @@
****************************************************************************/
#include "Parameter
Load
erTest.h"
#include "Parameter
Manag
erTest.h"
#include "MultiVehicleManager.h"
#include "QGCApplication.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
/// Test failure modes which should still lead to param load success
void
Parameter
Load
erTest
::
_noFailureWorker
(
MockConfiguration
::
FailureMode_t
failureMode
)
void
Parameter
Manag
erTest
::
_noFailureWorker
(
MockConfiguration
::
FailureMode_t
failureMode
)
{
Q_ASSERT
(
!
_mockLink
);
_mockLink
=
MockLink
::
startPX4MockLink
(
false
,
failureMode
);
...
...
@@ -34,7 +34,7 @@ void ParameterLoaderTest::_noFailureWorker(MockConfiguration::FailureMode_t fail
QVERIFY
(
vehicle
);
// We should get progress bar updates during load
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Load
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Manag
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
QCOMPARE
(
spyProgress
.
wait
(
2000
),
true
);
arguments
=
spyProgress
.
takeFirst
();
QCOMPARE
(
arguments
.
count
(),
1
);
...
...
@@ -54,18 +54,18 @@ void ParameterLoaderTest::_noFailureWorker(MockConfiguration::FailureMode_t fail
}
void
Parameter
Load
erTest
::
_noFailure
(
void
)
void
Parameter
Manag
erTest
::
_noFailure
(
void
)
{
_noFailureWorker
(
MockConfiguration
::
FailNone
);
}
void
Parameter
Load
erTest
::
_requestListMissingParamSuccess
(
void
)
void
Parameter
Manag
erTest
::
_requestListMissingParamSuccess
(
void
)
{
_noFailureWorker
(
MockConfiguration
::
FailMissingParamOnInitialReqest
);
}
// Test no response to param_request_list
void
Parameter
Load
erTest
::
_requestListNoResponse
(
void
)
void
Parameter
Manag
erTest
::
_requestListNoResponse
(
void
)
{
Q_ASSERT
(
!
_mockLink
);
_mockLink
=
MockLink
::
startPX4MockLink
(
false
,
MockConfiguration
::
FailParamNoReponseToRequestList
);
...
...
@@ -85,7 +85,7 @@ void ParameterLoaderTest::_requestListNoResponse(void)
QVERIFY
(
vehicle
);
QSignalSpy
spyParamsReady
(
vehicleMgr
,
SIGNAL
(
parameterReadyVehicleAvailableChanged
(
bool
)));
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Load
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Manag
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
// We should not get any progress bar updates, nor a parameter ready signal
QCOMPARE
(
spyProgress
.
wait
(
500
),
false
);
...
...
@@ -97,7 +97,7 @@ void ParameterLoaderTest::_requestListNoResponse(void)
// MockLink will fail to send a param on initial request, it will also fail to send it on subsequent
// param_read requests.
void
Parameter
Load
erTest
::
_requestListMissingParamFail
(
void
)
void
Parameter
Manag
erTest
::
_requestListMissingParamFail
(
void
)
{
// Will pop error about missing params
setExpectedMessageBox
(
QMessageBox
::
Ok
);
...
...
@@ -120,7 +120,7 @@ void ParameterLoaderTest::_requestListMissingParamFail(void)
QVERIFY
(
vehicle
);
QSignalSpy
spyParamsReady
(
vehicleMgr
,
SIGNAL
(
parameterReadyVehicleAvailableChanged
(
bool
)));
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Load
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
QSignalSpy
spyProgress
(
vehicle
->
getParameter
Manag
er
(),
SIGNAL
(
parameterListProgress
(
float
)));
// We will get progress bar updates, since it will fail after getting partially through the request
QCOMPARE
(
spyProgress
.
wait
(
2000
),
true
);
...
...
src/
qgcunittest/ParameterLoad
erTest.h
→
src/
FactSystem/ParameterManag
erTest.h
View file @
af8c2a88
...
...
@@ -8,15 +8,15 @@
****************************************************************************/
#ifndef Parameter
Load
erTest_H
#define Parameter
Load
erTest_H
#ifndef Parameter
Manag
erTest_H
#define Parameter
Manag
erTest_H
#include "UnitTest.h"
#include "MockLink.h"
#include "MultiSignalSpy.h"
#include "MockLink.h"
class
Parameter
Load
erTest
:
public
UnitTest
class
Parameter
Manag
erTest
:
public
UnitTest
{
Q_OBJECT
...
...
src/FirmwarePlugin/APM/APMGeoFenceManager.cc
View file @
af8c2a88
...
...
@@ -12,7 +12,7 @@
#include "FirmwarePlugin.h"
#include "MAVLinkProtocol.h"
#include "QGCApplication.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
const
char
*
APMGeoFenceManager
::
_fenceTotalParam
=
"FENCE_TOTAL"
;
const
char
*
APMGeoFenceManager
::
_fenceActionParam
=
"FENCE_ACTION"
;
...
...
@@ -30,9 +30,9 @@ APMGeoFenceManager::APMGeoFenceManager(Vehicle* vehicle)
,
_fenceTypeFact
(
NULL
)
{
connect
(
_vehicle
,
&
Vehicle
::
mavlinkMessageReceived
,
this
,
&
APMGeoFenceManager
::
_mavlinkMessageReceived
);
connect
(
_vehicle
->
getParameter
Loader
(),
&
ParameterLoad
er
::
parametersReady
,
this
,
&
APMGeoFenceManager
::
_parametersReady
);
connect
(
_vehicle
->
getParameter
Manager
(),
&
ParameterManag
er
::
parametersReady
,
this
,
&
APMGeoFenceManager
::
_parametersReady
);
if
(
_vehicle
->
getParameter
Load
er
()
->
parametersAreReady
())
{
if
(
_vehicle
->
getParameter
Manag
er
()
->
parametersAreReady
())
{
_parametersReady
();
}
}
...
...
src/FirmwarePlugin/APM/CopterGeoFenceEditor.qml
View file @
af8c2a88
...
...
@@ -78,5 +78,7 @@ Column {
polygon
:
geoFenceController
.
polygon
sectionLabel
:
qsTr
(
"
Fence Polygon:
"
)
visible
:
geoFenceController
.
polygonSupported
onPolygonEditCompleted
:
geoFenceController
.
sendToVehicle
()
}
}
src/FirmwarePlugin/APM/PlaneGeoFenceEditor.qml
View file @
af8c2a88
...
...
@@ -220,5 +220,7 @@ Column {
flightMap
:
editorMap
polygon
:
geoFenceController
.
polygon
sectionLabel
:
qsTr
(
"
Fence Polygon:
"
)
onPolygonEditCompleted
:
geoFenceController
.
sendToVehicle
()
}
}
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
View file @
af8c2a88
...
...
@@ -258,7 +258,9 @@ QString PX4FirmwarePlugin::missionCommandOverrides(MAV_TYPE vehicleType) const
QObject
*
PX4FirmwarePlugin
::
loadParameterMetaData
(
const
QString
&
metaDataFile
)
{
PX4ParameterMetaData
*
metaData
=
new
PX4ParameterMetaData
;
metaData
->
loadParameterFactMetaDataFile
(
metaDataFile
);
if
(
!
metaDataFile
.
isEmpty
())
{
metaData
->
loadParameterFactMetaDataFile
(
metaDataFile
);
}
return
metaData
;
}
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
View file @
af8c2a88
...
...
@@ -15,7 +15,7 @@
#define PX4FirmwarePlugin_H
#include "FirmwarePlugin.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "PX4ParameterMetaData.h"
#include "PX4GeoFenceManager.h"
...
...
@@ -57,6 +57,7 @@ public:
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
);
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
PX4GeoFenceManager
(
vehicle
);
}
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/PX4/PX4.OfflineEditing.params"
);
}
// Use these constants to set flight modes using setFlightMode method. Don't use hardcoded string names since the
// names may change.
...
...
src/FirmwarePlugin/PX4/PX4GeoFenceEditor.qml
View file @
af8c2a88
...
...
@@ -22,7 +22,7 @@ Column {
property
Fact
_fenceAction
:
factController
.
getParameterFact
(
-
1
,
"
GF_ACTION
"
)
property
Fact
_fenceRadius
:
factController
.
getParameterFact
(
-
1
,
"
GF_MAX_HOR_DIST
"
)
property
Fact
_fence
Alt
:
factController
.
getParameterFact
(
-
1
,
"
GF_MAX_VER_DIST
"
)
property
Fact
_fence
MaxAlt
:
factController
.
getParameterFact
(
-
1
,
"
GF_MAX_VER_DIST
"
)
FactPanelController
{
id
:
factController
...
...
@@ -80,8 +80,8 @@ Column {
QGCCheckBox
{
id
:
maxAltFenceCheckBox
text
:
qsTr
(
"
Maximum altitude fence
"
)
checked
:
_fenceAlt
.
value
>
0
onClicked
:
_fenceAlt
.
value
=
checked
?
100
:
0
checked
:
_fence
Max
Alt
.
value
>
0
onClicked
:
_fence
Max
Alt
.
value
=
checked
?
100
:
0
}
Row
{
...
...
@@ -97,7 +97,7 @@ Column {
FactTextField
{
id
:
fenceAltMaxField
showUnits
:
true
fact
:
_fenceAlt
fact
:
_fence
Max
Alt
enabled
:
maxAltFenceCheckBox
.
checked
width
:
_editFieldWidth
}
...
...
src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc
View file @
af8c2a88
...
...
@@ -10,14 +10,14 @@
#include "PX4GeoFenceManager.h"
#include "Vehicle.h"
#include "FirmwarePlugin.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
PX4GeoFenceManager
::
PX4GeoFenceManager
(
Vehicle
*
vehicle
)
:
GeoFenceManager
(
vehicle
)
,
_firstParamLoadComplete
(
false
)
,
_circleRadiusFact
(
NULL
)
{
connect
(
_vehicle
->
getParameter
Loader
(),
&
ParameterLoad
er
::
parametersReady
,
this
,
&
PX4GeoFenceManager
::
_parametersReady
);
connect
(
_vehicle
->
getParameter
Manager
(),
&
ParameterManag
er
::
parametersReady
,
this
,
&
PX4GeoFenceManager
::
_parametersReady
);
}
PX4GeoFenceManager
::~
PX4GeoFenceManager
()
...
...
src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
View file @
af8c2a88
...
...
@@ -64,7 +64,7 @@ QVariant PX4ParameterMetaData::_stringToTypedVariant(const QString& string, Fact
void
PX4ParameterMetaData
::
loadParameterFactMetaDataFile
(
const
QString
&
metaDataFile
)
{
qCDebug
(
Parameter
Load
erLog
)
<<
"PX4ParameterMetaData::loadParameterFactMetaDataFile"
<<
metaDataFile
;
qCDebug
(
Parameter
Manag
erLog
)
<<
"PX4ParameterMetaData::loadParameterFactMetaDataFile"
<<
metaDataFile
;
if
(
_parameterMetaDataLoaded
)
{
qWarning
()
<<
"Internal error: parameter meta data loaded more than once"
;
...
...
src/FirmwarePlugin/PX4/V1.4.OfflineEditing.params
0 → 100644
View file @
af8c2a88
# Onboard parameters for vehicle 1
#
# MAV ID COMPONENT ID PARAM NAME VALUE (FLOAT)
1 1 ATT_VIBE_THRESH 0.200000002980232239 9
1 1 BAT_A_PER_V 15.391030311584472656 9
1 1 BAT_CAPACITY -1.000000000000000000 9
1 1 BAT_CNT_V_CURR 0.000805664050858468 9
1 1 BAT_CNT_V_VOLT 0.000805664050858468 9
1 1 BAT_CRIT_THR 0.070000000298023224 9
1 1 BAT_LOW_THR 0.150000005960464478 9
1 1 BAT_N_CELLS 3 6
1 1 BAT_SOURCE 0 6
1 1 BAT_V_CHARGED 4.050000190734863281 9
1 1 BAT_V_DIV 10.177939414978027344 9
1 1 BAT_V_EMPTY 3.400000095367431641 9
1 1 BAT_V_LOAD_DROP 0.300000011920928955 9
1 1 BAT_V_OFFS_CURR 0.000000000000000000 9
1 1 BAT_V_SCALE_IO 10000 6
1 1 CAL_ACC0_ID 0 6
1 1 CAL_ACC1_ID 0 6
1 1 CAL_ACC2_ID 0 6
1 1 CAL_ACC_PRIME 0 6
1 1 CAL_BARO_PRIME 0 6
1 1 CAL_GYRO0_ID 0 6
1 1 CAL_GYRO1_ID 0 6
1 1 CAL_GYRO2_ID 0 6
1 1 CAL_GYRO_PRIME 0 6
1 1 CAL_MAG0_ID 0 6
1 1 CAL_MAG0_ROT -1 6
1 1 CAL_MAG1_ID 0 6
1 1 CAL_MAG1_ROT -1 6
1 1 CAL_MAG2_ID 0 6
1 1 CAL_MAG2_ROT -1 6
1 1 CAL_MAG_PRIME 0 6
1 1 CAL_MAG_SIDES 63 6
1 1 CBRK_AIRSPD_CHK 0 6
1 1 CBRK_BUZZER 0 6
1 1 CBRK_ENGINEFAIL 284953 6
1 1 CBRK_FLIGHTTERM 121212 6
1 1 CBRK_GPSFAIL 0 6
1 1 CBRK_IO_SAFETY 0 6
1 1 CBRK_SUPPLY_CHK 0 6
1 1 CBRK_USB_CHK 0 6
1 1 COM_ARM_WO_GPS 1 6
1 1 COM_AUTOS_PAR 1 6
1 1 COM_DISARM_LAND 0 6
1 1 COM_DL_LOSS_T 10 6
1 1 COM_DL_REG_T 0 6
1 1 COM_EF_C2T 5.000000000000000000 9
1 1 COM_EF_THROT 0.500000000000000000 9
1 1 COM_EF_TIME 10.000000000000000000 9
1 1 COM_FLTMODE1 -1 6
1 1 COM_FLTMODE2 -1 6
1 1 COM_FLTMODE3 -1 6
1 1 COM_FLTMODE4 -1 6
1 1 COM_FLTMODE5 -1 6
1 1 COM_FLTMODE6 -1 6
1 1 COM_HOME_H_T 5.000000000000000000 9
1 1 COM_HOME_V_T 10.000000000000000000 9
1 1 COM_LOW_BAT_ACT 0 6
1 1 COM_OBL_ACT 0 6
1 1 COM_OBL_RC_ACT 0 6
1 1 COM_OF_LOSS_T 0.000000000000000000 9
1 1 COM_RC_ARM_HYST 1000 6
1 1 COM_RC_IN_MODE 0 6
1 1 COM_RC_LOSS_T 0.500000000000000000 9
1 1 EKF2_REC_RPL 0 6
1 1 FW_AIRSPD_TRIM 15.000000000000000000 9
1 1 FW_MAN_P_SC 1.000000000000000000 9
1 1 FW_MAN_R_SC 1.000000000000000000 9
1 1 FW_MAN_Y_SC 1.000000000000000000 9
1 1 FW_THR_CRUISE 0.600000023841857910 9
1 1 GF_ACTION 1 6
1 1 GF_ALTMODE 0 6
1 1 GF_COUNT -1 6
1 1 GF_MAX_HOR_DIST 0 6
1 1 GF_MAX_VER_DIST 0 6
1 1 GF_SOURCE 0 6
1 1 GPS_DUMP_COMM 0 6
1 1 INAV_LIDAR_ERR 0.200000002980232239 9
1 1 MAV_BROADCAST 0 6
1 1 MAV_COMP_ID 1 6
1 1 MAV_FWDEXTSP 1 6
1 1 MAV_PROTO_VER 1 6
1 1 MAV_RADIO_ID 0 6
1 1 MAV_SYS_ID 1 6
1 1 MAV_TEST_PAR 1 6
1 1 MAV_TYPE 2 6
1 1 MAV_USEHILGPS 0 6
1 1 MC_YAWRAUTO_MAX 45.000000000000000000 9
1 1 MIS_ALTMODE 1 6
1 1 MIS_DIST_1WP 900.000000000000000000 9
1 1 MIS_LTRMIN_ALT 1.200000047683715820 9
1 1 MIS_ONBOARD_EN 1 6
1 1 MIS_TAKEOFF_ALT 10.000000000000000000 9
1 1 MIS_YAWMODE 1 6
1 1 MIS_YAW_ERR 12.000000000000000000 9
1 1 MIS_YAW_TMT -1.000000000000000000 9
1 1 MPC_XY_CRUISE 5.000000000000000000 9
1 1 NAV_ACC_RAD 10.000000000000000000 9
1 1 NAV_AH_ALT 600.000000000000000000 9
1 1 NAV_AH_LAT -265847810 6
1 1 NAV_AH_LON 1518423250 6
1 1 NAV_DLL_ACT 0 6
1 1 NAV_DLL_AH_T 120.000000000000000000 9
1 1 NAV_DLL_CHSK 0 6
1 1 NAV_DLL_CH_ALT 600.000000000000000000 9
1 1 NAV_DLL_CH_LAT -266072120 6
1 1 NAV_DLL_CH_LON 1518453890 6
1 1 NAV_DLL_CH_T 120.000000000000000000 9
1 1 NAV_DLL_N 2 6
1 1 NAV_FT_DST 8.000000000000000000 9
1 1 NAV_FT_FS 1 6
1 1 NAV_FT_RS 0.500000000000000000 9
1 1 NAV_FW_ALT_RAD 10.000000000000000000 9
1 1 NAV_GPSF_LT 30.000000000000000000 9
1 1 NAV_GPSF_P 0.000000000000000000 9
1 1 NAV_GPSF_R 15.000000000000000000 9
1 1 NAV_GPSF_TR 0.699999988079071045 9
1 1 NAV_LOITER_RAD 50.000000000000000000 9
1 1 NAV_MC_ALT_RAD 3.000000000000000000 9
1 1 NAV_MIN_FT_HT 8.000000000000000000 9
1 1 NAV_RCL_ACT 2 6
1 1 NAV_RCL_LT 120.000000000000000000 9
1 1 PWM_AUX_DISARMED 1000 6
1 1 PWM_AUX_MAX 2000 6
1 1 PWM_AUX_MIN 1000 6
1 1 PWM_DISARMED 0 6
1 1 PWM_MAIN_REV1 0 6
1 1 PWM_MAIN_REV2 0 6
1 1 PWM_MAIN_REV3 0 6
1 1 PWM_MAIN_REV4 0 6
1 1 PWM_MAIN_REV5 0 6
1 1 PWM_MAIN_REV6 0 6
1 1 PWM_MAIN_REV7 0 6
1 1 PWM_MAIN_REV8 0 6
1 1 PWM_MAX 2000 6
1 1 PWM_MIN 1000 6
1 1 PWM_SBUS_MODE 0 6
1 1 RC10_DZ 0.000000000000000000 9
1 1 RC10_MAX 2000.000000000000000000 9
1 1 RC10_MIN 1000.000000000000000000 9
1 1 RC10_REV 1.000000000000000000 9
1 1 RC10_TRIM 1500.000000000000000000 9
1 1 RC11_DZ 0.000000000000000000 9
1 1 RC11_MAX 2000.000000000000000000 9
1 1 RC11_MIN 1000.000000000000000000 9
1 1 RC11_REV 1.000000000000000000 9
1 1 RC11_TRIM 1500.000000000000000000 9
1 1 RC12_DZ 0.000000000000000000 9
1 1 RC12_MAX 2000.000000000000000000 9
1 1 RC12_MIN 1000.000000000000000000 9
1 1 RC12_REV 1.000000000000000000 9
1 1 RC12_TRIM 1500.000000000000000000 9
1 1 RC13_DZ 0.000000000000000000 9
1 1 RC13_MAX 2000.000000000000000000 9
1 1 RC13_MIN 1000.000000000000000000 9
1 1 RC13_REV 1.000000000000000000 9
1 1 RC13_TRIM 1500.000000000000000000 9
1 1 RC14_DZ 0.000000000000000000 9
1 1 RC14_MAX 2000.000000000000000000 9
1 1 RC14_MIN 1000.000000000000000000 9
1 1 RC14_REV 1.000000000000000000 9
1 1 RC14_TRIM 1500.000000000000000000 9
1 1 RC15_DZ 0.000000000000000000 9
1 1 RC15_MAX 2000.000000000000000000 9
1 1 RC15_MIN 1000.000000000000000000 9
1 1 RC15_REV 1.000000000000000000 9
1 1 RC15_TRIM 1500.000000000000000000 9
1 1 RC16_DZ 0.000000000000000000 9
1 1 RC16_MAX 2000.000000000000000000 9
1 1 RC16_MIN 1000.000000000000000000 9
1 1 RC16_REV 1.000000000000000000 9
1 1 RC16_TRIM 1500.000000000000000000 9
1 1 RC17_DZ 0.000000000000000000 9
1 1 RC17_MAX 2000.000000000000000000 9
1 1 RC17_MIN 1000.000000000000000000 9
1 1 RC17_REV 1.000000000000000000 9
1 1 RC17_TRIM 1500.000000000000000000 9
1 1 RC18_DZ 0.000000000000000000 9
1 1 RC18_MAX 2000.000000000000000000 9
1 1 RC18_MIN 1000.000000000000000000 9
1 1 RC18_REV 1.000000000000000000 9
1 1 RC18_TRIM 1500.000000000000000000 9
1 1 RC1_DZ 10.000000000000000000 9
1 1 RC1_MAX 2000.000000000000000000 9
1 1 RC1_MIN 1000.000000000000000000 9
1 1 RC1_REV 1.000000000000000000 9
1 1 RC1_TRIM 1500.000000000000000000 9
1 1 RC2_DZ 10.000000000000000000 9
1 1 RC2_MAX 2000.000000000000000000 9
1 1 RC2_MIN 1000.000000000000000000 9
1 1 RC2_REV 1.000000000000000000 9
1 1 RC2_TRIM 1500.000000000000000000 9
1 1 RC3_DZ 10.000000000000000000 9
1 1 RC3_MAX 2000.000000000000000000 9
1 1 RC3_MIN 1000.000000000000000000 9
1 1 RC3_REV 1.000000000000000000 9
1 1 RC3_TRIM 1500.000000000000000000 9
1 1 RC4_DZ 10.000000000000000000 9
1 1 RC4_MAX 2000.000000000000000000 9
1 1 RC4_MIN 1000.000000000000000000 9
1 1 RC4_REV 1.000000000000000000 9
1 1 RC4_TRIM 1500.000000000000000000 9
1 1 RC5_DZ 10.000000000000000000 9
1 1 RC5_MAX 2000.000000000000000000 9
1 1 RC5_MIN 1000.000000000000000000 9
1 1 RC5_REV 1.000000000000000000 9
1 1 RC5_TRIM 1500.000000000000000000 9
1 1 RC6_DZ 10.000000000000000000 9
1 1 RC6_MAX 2000.000000000000000000 9
1 1 RC6_MIN 1000.000000000000000000 9
1 1 RC6_REV 1.000000000000000000 9
1 1 RC6_TRIM 1500.000000000000000000 9
1 1 RC7_DZ 10.000000000000000000 9
1 1 RC7_MAX 2000.000000000000000000 9
1 1 RC7_MIN 1000.000000000000000000 9
1 1 RC7_REV 1.000000000000000000 9
1 1 RC7_TRIM 1500.000000000000000000 9
1 1 RC8_DZ 10.000000000000000000 9
1 1 RC8_MAX 2000.000000000000000000 9
1 1 RC8_MIN 1000.000000000000000000 9
1 1 RC8_REV 1.000000000000000000 9
1 1 RC8_TRIM 1500.000000000000000000 9
1 1 RC9_DZ 0.000000000000000000 9
1 1 RC9_MAX 2000.000000000000000000 9
1 1 RC9_MIN 1000.000000000000000000 9
1 1 RC9_REV 1.000000000000000000 9
1 1 RC9_TRIM 1500.000000000000000000 9
1 1 RC_ACRO_TH 0.500000000000000000 9
1 1 RC_ASSIST_TH 0.250000000000000000 9
1 1 RC_AUTO_TH 0.750000000000000000 9
1 1 RC_CHAN_CNT 0 6
1 1 RC_DSM_BIND -1 6
1 1 RC_FAILS_THR 0 6
1 1 RC_KILLSWITCH_TH 0.250000000000000000 9
1 1 RC_LOITER_TH 0.500000000000000000 9
1 1 RC_MAP_ACRO_SW 0 6
1 1 RC_MAP_AUX1 0 6
1 1 RC_MAP_AUX2 0 6
1 1 RC_MAP_AUX3 0 6
1 1 RC_MAP_AUX4 0 6
1 1 RC_MAP_AUX5 0 6
1 1 RC_MAP_FAILSAFE 0 6
1 1 RC_MAP_FLAPS 0 6
1 1 RC_MAP_FLTMODE 0 6
1 1 RC_MAP_KILL_SW 0 6
1 1 RC_MAP_LOITER_SW 0 6
1 1 RC_MAP_MODE_SW 0 6
1 1 RC_MAP_OFFB_SW 0 6
1 1 RC_MAP_PARAM1 0 6
1 1 RC_MAP_PARAM2 0 6
1 1 RC_MAP_PARAM3 0 6
1 1 RC_MAP_PITCH 0 6
1 1 RC_MAP_POSCTL_SW 0 6
1 1 RC_MAP_RATT_SW 0 6
1 1 RC_MAP_RETURN_SW 0 6
1 1 RC_MAP_ROLL 0 6
1 1 RC_MAP_THROTTLE 0 6
1 1 RC_MAP_TRANS_SW 0 6
1 1 RC_MAP_YAW 0 6
1 1 RC_OFFB_TH 0.500000000000000000 9
1 1 RC_POSCTL_TH 0.500000000000000000 9
1 1 RC_RATT_TH 0.500000000000000000 9
1 1 RC_RETURN_TH 0.500000000000000000 9
1 1 RC_RSSI_PWM_CHAN 0 6
1 1 RC_RSSI_PWM_MAX 1000 6
1 1 RC_RSSI_PWM_MIN 2000 6
1 1 RC_TH_USER 1 6
1 1 RC_TRANS_TH 0.250000000000000000 9
1 1 RTL_DESCEND_ALT 30.000000000000000000 9
1 1 RTL_LAND_DELAY -1.000000000000000000 9
1 1 RTL_MIN_DIST 5.000000000000000000 9
1 1 RTL_RETURN_ALT 60.000000000000000000 9
1 1 SDLOG_EXT -1 6
1 1 SDLOG_GPSTIME 1 6
1 1 SDLOG_PRIO_BOOST 2 6
1 1 SDLOG_RATE -1 6
1 1 SENS_BARO_QNH 1013.250000000000000000 9
1 1 SENS_BOARD_ROT 0 6
1 1 SENS_BOARD_X_OFF 0.000000000000000000 9
1 1 SENS_BOARD_Y_OFF 0.000000000000000000 9
1 1 SENS_BOARD_Z_OFF 0.000000000000000000 9
1 1 SENS_DPRES_ANSC 0.000000000000000000 9
1 1 SENS_DPRES_OFF 0.000000000000000000 9
1 1 SENS_EN_LL40LS 0 6
1 1 SENS_EN_MB12XX 0 6
1 1 SENS_EN_SF0X 0 6
1 1 SYS_AUTOCONFIG 0 6
1 1 SYS_AUTOSTART 0 6
1 1 SYS_COMPANION 157600 6
1 1 SYS_LOGGER 0 6
1 1 SYS_MC_EST_GROUP 1 6
1 1 SYS_PARAM_VER 1 6
1 1 SYS_RESTART_TYPE 0 6
1 1 SYS_USE_IO 1 6
1 1 TRIG_MODE 0 6
1 1 TRIM_PITCH 0.000000000000000000 9
1 1 TRIM_ROLL 0.000000000000000000 9
1 1 TRIM_YAW 0.000000000000000000 9
1 1 UAVCAN_ENABLE 0 6
1 1 VT_NAV_FORCE_VT 1 6
1 1 VT_WV_LND_EN 0 6
1 1 VT_WV_LTR_EN 0 6
src/FlightDisplay/FlightDisplayViewMap.qml
View file @
af8c2a88
...
...
@@ -87,7 +87,7 @@ FlightMap {
coordinate
:
object
.
coordinate
isSatellite
:
flightMap
.
isSatelliteMap
size
:
_mainIsMap
?
ScreenTools
.
defaultFontPixelHeight
*
5
:
ScreenTools
.
defaultFontPixelHeight
*
2
z
:
QGroundControl
.
zOrderMapItems
z
:
QGroundControl
.
zOrderMapItems
-
1
}
}
...
...
@@ -114,6 +114,7 @@ FlightMap {
border.width
:
3
center
:
missionController
.
plannedHomePosition
radius
:
geoFenceController
.
circleSupported
?
geoFenceController
.
circleRadius
:
0
z
:
QGroundControl
.
zOrderMapItems
}
// GeoFence breach return point
...
...
@@ -122,6 +123,7 @@ FlightMap {
coordinate
:
geoFenceController
.
breachReturnPoint
visible
:
geoFenceController
.
breachReturnSupported
sourceItem
:
MissionItemIndexLabel
{
label
:
"
F
"
}
z
:
QGroundControl
.
zOrderMapItems
}
// GoTo here waypoint
...
...
src/FlightMap/FlightMap.qml
View file @
af8c2a88
...
...
@@ -119,6 +119,7 @@ Map {
onMapTypeChanged
:
updateActiveMapType
()
}
/// Ground Station location
MapQuickItem
{
anchorPoint.x
:
sourceItem
.
width
/
2
anchorPoint.y
:
sourceItem
.
height
/
2
...
...
src/JsonHelper.cc
View file @
af8c2a88
...
...
@@ -11,9 +11,14 @@
#include "JsonHelper.h"
#include <QJsonArray>
#include <QJsonParseError>
const
char
*
JsonHelper
::
_enumStringsJsonKey
=
"enumStrings"
;
const
char
*
JsonHelper
::
_enumValuesJsonKey
=
"enumValues"
;
const
char
*
JsonHelper
::
_enumStringsJsonKey
=
"enumStrings"
;
const
char
*
JsonHelper
::
_enumValuesJsonKey
=
"enumValues"
;
const
char
*
JsonHelper
::
jsonVersionKey
=
"version"
;
const
char
*
JsonHelper
::
jsonGroundStationKey
=
"groundStation"
;
const
char
*
JsonHelper
::
jsonGroundStationValue
=
"QGroundControl"
;
const
char
*
JsonHelper
::
jsonFileTypeKey
=
"fileType"
;
bool
JsonHelper
::
validateRequiredKeys
(
const
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
QString
&
errorString
)
{
...
...
@@ -108,3 +113,20 @@ bool JsonHelper::parseEnum(QJsonObject& jsonObject, QStringList& enumStrings, QS
return
true
;
}
bool
JsonHelper
::
isJsonFile
(
const
QByteArray
&
bytes
,
QJsonDocument
&
jsonDoc
)
{
QJsonParseError
error
;
jsonDoc
=
QJsonDocument
::
fromJson
(
bytes
,
&
error
);
if
(
error
.
error
==
QJsonParseError
::
NoError
)
{
return
true
;
}
if
(
error
.
error
==
QJsonParseError
::
MissingObject
&&
error
.
offset
==
0
)
{
return
false
;
}
return
true
;
}
src/JsonHelper.h
View file @
af8c2a88
...
...
@@ -7,7 +7,6 @@
*
****************************************************************************/
#ifndef JsonHelper_H
#define JsonHelper_H
...
...
@@ -17,6 +16,11 @@
class
JsonHelper
{
public:
/// Determines is the specified data is a json file
/// @param jsonDoc Returned json document if json file
/// @return true: file is json, false: file is not json
static
bool
isJsonFile
(
const
QByteArray
&
bytes
,
QJsonDocument
&
jsonDoc
);
static
bool
validateRequiredKeys
(
const
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
QString
&
errorString
);
static
bool
validateKeyTypes
(
const
QJsonObject
&
jsonObject
,
const
QStringList
&
keys
,
const
QList
<
QJsonValue
::
Type
>&
types
,
QString
&
errorString
);
static
bool
toQGeoCoordinate
(
const
QJsonValue
&
jsonValue
,
QGeoCoordinate
&
coordinate
,
bool
altitudeRequired
,
QString
&
errorString
);
...
...
@@ -24,6 +28,12 @@ public:
static
void
writeQGeoCoordinate
(
QJsonValue
&
jsonValue
,
const
QGeoCoordinate
&
coordinate
,
bool
writeAltitude
);
static
const
char
*
jsonVersionKey
;
static
const
char
*
jsonGroundStationKey
;
static
const
char
*
jsonGroundStationValue
;
static
const
char
*
jsonFileTypeKey
;
private:
static
const
char
*
_enumStringsJsonKey
;
static
const
char
*
_enumValuesJsonKey
;
};
...
...
src/MissionEditor/GeoFenceEditor.qml
View file @
af8c2a88
...
...
@@ -18,16 +18,6 @@ QGCFlickable {
property
var
polygon
:
geoFenceController
.
polygon
Connections
{
target
:
geoFenceController
.
polygon
onPathChanged
:
{
if
(
geoFenceController
.
polygon
.
path
.
length
>
2
)
{
geoFenceController
.
breachReturnPoint
=
geoFenceController
.
polygon
.
center
()
}
}
}
Rectangle
{
id
:
geoFenceEditorRect
width
:
parent
.
width
...
...
src/MissionEditor/MissionEditor.qml
View file @
af8c2a88
...
...
@@ -154,11 +154,33 @@ QGCView {
Component.onCompleted
:
start
(
true
/* editMode */
)
function
saveToSelectedFile
()
{
if
(
ScreenTools
.
isMobile
)
{
qgcView
.
showDialog
(
mobileFileSaver
,
qsTr
(
"
Save Fence File
"
),
qgcView
.
showDialogDefaultWidth
,
StandardButton
.
Save
|
StandardButton
.
Cancel
)
}
else
{
geoFenceController
.
saveToFilePicker
()
}
}
function
loadFromSelectedFile
()
{
if
(
ScreenTools
.
isMobile
)
{
qgcView
.
showDialog
(
mobileFilePicker
,
qsTr
(
"
Select Fence File
"
),
qgcView
.
showDialogDefaultWidth
,
StandardButton
.
Yes
|
StandardButton
.
Cancel
)
}
else
{
geoFenceController
.
loadFromFilePicker
()
}
}
onFenceSupportedChanged
:
{
if
(
!
fenceSupported
&&
_editingLayer
==
_layerGeoFence
)
{
_editingLayer
=
_layerMission
}
}
onBreachReturnPointChanged
:
{
if
(
polygon
.
count
()
>
3
)
{
sendToVehicle
()
}
}
}
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
...
...
@@ -193,7 +215,7 @@ QGCView {
QGCMobileFileDialog
{
openDialog
:
true
fileExtension
:
QGroundControl
.
missionFileExtension
fileExtension
:
_syncDropDownController
==
geoFenceController
?
QGroundControl
.
fenceFileExtension
:
QGroundControl
.
missionFileExtension
onFilenameReturned
:
_syncDropDownController
.
loadFromfile
(
filename
)
}
}
...
...
@@ -203,7 +225,7 @@ QGCView {
QGCMobileFileDialog
{
openDialog
:
false
fileExtension
:
QGroundControl
.
missionFileExtension
fileExtension
:
_syncDropDownController
==
geoFenceController
?
QGroundControl
.
fenceFileExtension
:
QGroundControl
.
missionFileExtension
onFilenameReturned
:
_syncDropDownController
.
saveToFile
()
}
}
...
...
@@ -299,6 +321,7 @@ QGCView {
}
break
case
_layerGeoFence
:
console
.
log
(
"
Updating breach return point
"
,
coordinate
)
geoFenceController
.
breachReturnPoint
=
coordinate
break
}
...
...
@@ -586,6 +609,7 @@ QGCView {
border.color
:
"
#80FF0000
"
border.width
:
3
path
:
geoFenceController
.
polygonSupported
?
geoFenceController
.
polygon
.
path
:
undefined
z
:
QGroundControl
.
zOrderMapItems
}
// GeoFence circle
...
...
@@ -594,14 +618,7 @@ QGCView {
border.width
:
3
center
:
missionController
.
plannedHomePosition
radius
:
geoFenceController
.
circleSupported
?
geoFenceController
.
circleRadius
:
0
}
// GeoFence circle
MapCircle
{
border.color
:
"
#80FF0000
"
border.width
:
3
center
:
missionController
.
plannedHomePosition
radius
:
geoFenceController
.
circleSupported
?
geoFenceController
.
circleRadius
:
0
z
:
QGroundControl
.
zOrderMapItems
}
// GeoFence breach return point
...
...
@@ -610,6 +627,14 @@ QGCView {
coordinate
:
geoFenceController
.
breachReturnPoint
visible
:
geoFenceController
.
breachReturnSupported
sourceItem
:
MissionItemIndexLabel
{
label
:
"
F
"
}
z
:
QGroundControl
.
zOrderMapItems
Connections
{
target
:
geoFenceController
onBreachReturnPointChanged
:
console
.
log
(
"
breachreturn changed inside
"
,
geoFenceController
.
breachReturnPoint
)
}
onCoordinateChanged
:
console
.
log
(
"
MqpQuickItem coodinateChanged
"
,
coordinate
)
}
//-- Dismiss Drop Down (if any)
...
...
src/MissionEditor/QGCMapPolygonControls.qml
View file @
af8c2a88
...
...
@@ -14,6 +14,8 @@ Column {
property
var
flightMap
///< Must be set to FlightMap control
property
var
polygon
///< Must be set to MapPolygon
signal
polygonEditCompleted
///< Signalled when either a capture or adjust has completed
property
real
_margin
:
ScreenTools
.
defaultFontPixelWidth
/
2
function
polygonCaptureStarted
()
{
...
...
@@ -22,6 +24,7 @@ Column {
function
polygonCaptureFinished
(
coordinates
)
{
polygon
.
path
=
coordinates
polygonEditCompleted
()
}
function
polygonAdjustVertex
(
vertexIndex
,
vertexCoordinate
)
{
...
...
@@ -29,7 +32,10 @@ Column {
}
function
polygonAdjustStarted
()
{
}
function
polygonAdjustFinished
()
{
}
function
polygonAdjustFinished
()
{
polygonEditCompleted
()
}
QGCLabel
{
text
:
sectionLabel
}
...
...
src/MissionManager/GeoFenceController.cc
View file @
af8c2a88
This diff is collapsed.
Click to expand it.
src/MissionManager/GeoFenceController.h
View file @
af8c2a88
...
...
@@ -19,6 +19,8 @@
Q_DECLARE_LOGGING_CATEGORY
(
GeoFenceControllerLog
)
class
GeoFenceManager
;
class
GeoFenceController
:
public
PlanElementController
{
Q_OBJECT
...
...
@@ -84,14 +86,17 @@ private slots:
private:
void
_clearGeoFence
(
void
);
void
_signalAll
(
void
);
bool
_loadJsonFile
(
QJsonDocument
&
jsonDoc
,
QString
&
errorString
);
void
_activeVehicleBeingRemoved
(
void
)
final
;
void
_activeVehicleSet
(
void
)
final
;
bool
_dirty
;
QGCMapPolygon
_polygon
;
QGeoCoordinate
_breachReturnPoint
;
QVariantList
_params
;
bool
_dirty
;
QGCMapPolygon
_polygon
;
QGeoCoordinate
_breachReturnPoint
;
QVariantList
_params
;
static
const
char
*
_jsonFileTypeValue
;
};
#endif
src/MissionManager/MissionCommandTreeTest.cc
View file @
af8c2a88
...
...
@@ -195,8 +195,8 @@ void MissionCommandTreeTest::testAllTrees(void)
// This will cause all of the variants of collapsed trees to be built
foreach
(
MAV_AUTOPILOT
firmwareType
,
firmwareList
)
{
foreach
(
MAV_TYPE
vehicleType
,
vehicleList
)
{
Vehicle
*
vehicle
=
new
Vehicle
(
firmwareType
,
vehicleType
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
());
qDebug
()
<<
firmwareType
<<
vehicleType
;
Vehicle
*
vehicle
=
new
Vehicle
(
firmwareType
,
vehicleType
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
());
QVERIFY
(
qgcApp
()
->
toolbox
()
->
missionCommandTree
()
->
getUIInfo
(
vehicle
,
MAV_CMD_NAV_WAYPOINT
)
!=
NULL
);
delete
vehicle
;
}
...
...
src/MissionManager/MissionController.cc
View file @
af8c2a88
...
...
@@ -17,7 +17,7 @@
#include "SimpleMissionItem.h"
#include "SurveyMissionItem.h"
#include "JsonHelper.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "QGroundControlQmlGlobal.h"
#ifndef __mobile__
...
...
@@ -29,8 +29,6 @@ QGC_LOGGING_CATEGORY(MissionControllerLog, "MissionControllerLog")
const
char
*
MissionController
::
jsonSimpleItemsKey
=
"items"
;
const
char
*
MissionController
::
_settingsGroup
=
"MissionController"
;
const
char
*
MissionController
::
_jsonVersionKey
=
"version"
;
const
char
*
MissionController
::
_jsonGroundStationKey
=
"groundStation"
;
const
char
*
MissionController
::
_jsonMavAutopilotKey
=
"MAV_AUTOPILOT"
;
const
char
*
MissionController
::
_jsonComplexItemsKey
=
"complexItems"
;
const
char
*
MissionController
::
_jsonPlannedHomePositionKey
=
"plannedHomePosition"
;
...
...
@@ -258,7 +256,7 @@ bool MissionController::_loadJsonMissionFile(const QByteArray& bytes, QmlObjectL
// Check for required keys
QStringList
requiredKeys
;
requiredKeys
<<
_
jsonVersionKey
<<
_jsonPlannedHomePositionKey
;
requiredKeys
<<
JsonHelper
::
jsonVersionKey
<<
_jsonPlannedHomePositionKey
;
if
(
!
JsonHelper
::
validateRequiredKeys
(
json
,
requiredKeys
,
errorString
))
{
return
false
;
}
...
...
@@ -266,14 +264,14 @@ bool MissionController::_loadJsonMissionFile(const QByteArray& bytes, QmlObjectL
// Validate base key types
QStringList
keyList
;
QList
<
QJsonValue
::
Type
>
typeList
;
keyList
<<
jsonSimpleItemsKey
<<
_jsonVersionKey
<<
_
jsonGroundStationKey
<<
_jsonMavAutopilotKey
<<
_jsonComplexItemsKey
<<
_jsonPlannedHomePositionKey
;
keyList
<<
jsonSimpleItemsKey
<<
JsonHelper
::
jsonVersionKey
<<
JsonHelper
::
jsonGroundStationKey
<<
_jsonMavAutopilotKey
<<
_jsonComplexItemsKey
<<
_jsonPlannedHomePositionKey
;
typeList
<<
QJsonValue
::
Array
<<
QJsonValue
::
String
<<
QJsonValue
::
String
<<
QJsonValue
::
Double
<<
QJsonValue
::
Array
<<
QJsonValue
::
Object
;
if
(
!
JsonHelper
::
validateKeyTypes
(
json
,
keyList
,
typeList
,
errorString
))
{
return
false
;
}
// Version check
if
(
json
[
_
jsonVersionKey
].
toString
()
!=
"1.0"
)
{
if
(
json
[
JsonHelper
::
jsonVersionKey
].
toString
()
!=
"1.0"
)
{
errorString
=
QStringLiteral
(
"QGroundControl does not support this file version"
);
return
false
;
}
...
...
@@ -502,8 +500,8 @@ void MissionController::saveToFile(const QString& filename)
QJsonArray
simpleItemsObject
;
QJsonArray
complexItemsObject
;
missionFileObject
[
_jsonVersionKey
]
=
"1.0"
;
missionFileObject
[
_jsonGroundStationKey
]
=
"QGroundControl"
;
missionFileObject
[
JsonHelper
::
jsonVersionKey
]
=
"1.0"
;
missionFileObject
[
JsonHelper
::
jsonGroundStationKey
]
=
JsonHelper
::
jsonGroundStationValue
;
MAV_AUTOPILOT
firmwareType
=
MAV_AUTOPILOT_GENERIC
;
if
(
_activeVehicle
)
{
...
...
@@ -1054,7 +1052,7 @@ void MissionController::_activeVehicleSet(void)
connect
(
_activeVehicle
,
&
Vehicle
::
homePositionAvailableChanged
,
this
,
&
MissionController
::
_activeVehicleHomePositionAvailableChanged
);
connect
(
_activeVehicle
,
&
Vehicle
::
homePositionChanged
,
this
,
&
MissionController
::
_activeVehicleHomePositionChanged
);
if
(
_activeVehicle
->
getParameter
Load
er
()
->
parametersAreReady
()
&&
!
syncInProgress
())
{
if
(
_activeVehicle
->
getParameter
Manag
er
()
->
parametersAreReady
()
&&
!
syncInProgress
())
{
// We are switching between two previously existing vehicles. We have to manually ask for the items from the Vehicle.
// We don't request mission items for new vehicles since that will happen autamatically.
loadFromVehicle
();
...
...
src/MissionManager/MissionController.h
View file @
af8c2a88
...
...
@@ -148,8 +148,6 @@ private:
double
_hoverDistance
;
static
const
char
*
_settingsGroup
;
static
const
char
*
_jsonVersionKey
;
static
const
char
*
_jsonGroundStationKey
;
static
const
char
*
_jsonMavAutopilotKey
;
static
const
char
*
_jsonComplexItemsKey
;
static
const
char
*
_jsonPlannedHomePositionKey
;
...
...
src/MissionManager/QGCMapPolygon.cc
View file @
af8c2a88
...
...
@@ -9,10 +9,14 @@
#include "QGCMapPolygon.h"
#include "QGCGeo.h"
#include "JsonHelper.h"
#include <QGeoRectangle>
#include <QDebug>
#include <QPolygon>
#include <QJsonArray>
const
char
*
QGCMapPolygon
::
_jsonPolygonKey
=
"polygon"
;
QGCMapPolygon
::
QGCMapPolygon
(
QObject
*
parent
)
:
QObject
(
parent
)
...
...
@@ -106,3 +110,56 @@ void QGCMapPolygon::setPath(const QVariantList& path)
setDirty
(
true
);
emit
pathChanged
();
}
void
QGCMapPolygon
::
saveToJson
(
QJsonObject
&
json
)
{
QJsonArray
rgPoints
;
// Add all points to the array
for
(
int
i
=
0
;
i
<
_polygonPath
.
count
();
i
++
)
{
QJsonValue
jsonPoint
;
JsonHelper
::
writeQGeoCoordinate
(
jsonPoint
,
(
*
this
)[
i
],
false
/* writeAltitude */
);
rgPoints
.
append
(
jsonPoint
);
}
json
.
insert
(
_jsonPolygonKey
,
QJsonValue
(
rgPoints
));
setDirty
(
false
);
}
bool
QGCMapPolygon
::
loadFromJson
(
const
QJsonObject
&
json
,
bool
required
,
QString
&
errorString
)
{
errorString
.
clear
();
clear
();
if
(
required
)
{
if
(
!
JsonHelper
::
validateRequiredKeys
(
json
,
QStringList
(
_jsonPolygonKey
),
errorString
))
{
return
false
;
}
}
else
if
(
!
json
.
contains
(
_jsonPolygonKey
))
{
return
true
;
}
QList
<
QJsonValue
::
Type
>
types
;
types
<<
QJsonValue
::
Array
;
if
(
!
JsonHelper
::
validateKeyTypes
(
json
,
QStringList
(
_jsonPolygonKey
),
types
,
errorString
))
{
return
false
;
}
QJsonArray
rgPoints
=
json
[
_jsonPolygonKey
].
toArray
();
for
(
int
i
=
0
;
i
<
rgPoints
.
count
();
i
++
)
{
QGeoCoordinate
coordinate
;
if
(
!
JsonHelper
::
toQGeoCoordinate
(
rgPoints
[
i
],
coordinate
,
false
/* altitudeRequired */
,
errorString
))
{
return
false
;
}
addCoordinate
(
coordinate
);
}
setDirty
(
false
);
return
true
;
}
src/MissionManager/QGCMapPolygon.h
View file @
af8c2a88
...
...
@@ -41,6 +41,17 @@ public:
bool
dirty
(
void
)
const
{
return
_dirty
;
}
void
setDirty
(
bool
dirty
);
/// Saves the polygon to the json object.
/// @param json Json object to save to
void
saveToJson
(
QJsonObject
&
json
);
/// Load a polygon from json
/// @param json Json object to load from
/// @param required true: no polygon in object will generate error
/// @param errorString Error string if return is false
/// @return true: success, false: failure (errorString set)
bool
loadFromJson
(
const
QJsonObject
&
json
,
bool
required
,
QString
&
errorString
);
signals:
void
pathChanged
(
void
);
void
dirtyChanged
(
bool
dirty
);
...
...
@@ -48,6 +59,8 @@ signals:
private:
QVariantList
_polygonPath
;
bool
_dirty
;
static
const
char
*
_jsonPolygonKey
;
};
#endif
src/MissionManager/SurveyMissionItem.cc
View file @
af8c2a88
...
...
@@ -17,7 +17,6 @@
QGC_LOGGING_CATEGORY
(
SurveyMissionItemLog
,
"SurveyMissionItemLog"
)
const
char
*
SurveyMissionItem
::
_jsonVersionKey
=
"version"
;
const
char
*
SurveyMissionItem
::
_jsonTypeKey
=
"type"
;
const
char
*
SurveyMissionItem
::
_jsonPolygonKey
=
"polygon"
;
const
char
*
SurveyMissionItem
::
_jsonIdKey
=
"id"
;
...
...
@@ -198,7 +197,7 @@ void SurveyMissionItem::setDirty(bool dirty)
void
SurveyMissionItem
::
save
(
QJsonObject
&
saveObject
)
const
{
saveObject
[
_jsonVersionKey
]
=
1
;
saveObject
[
JsonHelper
::
jsonVersionKey
]
=
1
;
saveObject
[
_jsonTypeKey
]
=
_complexType
;
saveObject
[
_jsonIdKey
]
=
sequenceNumber
();
saveObject
[
_jsonGridAltitudeKey
]
=
_gridAltitudeFact
.
rawValue
().
toDouble
();
...
...
@@ -246,7 +245,7 @@ bool SurveyMissionItem::load(const QJsonObject& complexObject, QString& errorStr
// Validate requires keys
QStringList
requiredKeys
;
requiredKeys
<<
_
jsonVersionKey
<<
_jsonTypeKey
<<
_jsonIdKey
<<
_jsonPolygonKey
<<
_jsonGridAltitudeKey
<<
_jsonGridAngleKey
<<
_jsonGridSpacingKey
<<
requiredKeys
<<
JsonHelper
::
jsonVersionKey
<<
_jsonTypeKey
<<
_jsonIdKey
<<
_jsonPolygonKey
<<
_jsonGridAltitudeKey
<<
_jsonGridAngleKey
<<
_jsonGridSpacingKey
<<
_jsonCameraTriggerKey
<<
_jsonCameraTriggerDistanceKey
<<
_jsonGridAltitudeRelativeKey
;
if
(
!
JsonHelper
::
validateRequiredKeys
(
complexObject
,
requiredKeys
,
errorString
))
{
_clear
();
...
...
@@ -256,7 +255,7 @@ bool SurveyMissionItem::load(const QJsonObject& complexObject, QString& errorStr
// Validate types
QStringList
keyList
;
QList
<
QJsonValue
::
Type
>
typeList
;
keyList
<<
_
jsonVersionKey
<<
_jsonTypeKey
<<
_jsonIdKey
<<
_jsonPolygonKey
<<
_jsonGridAltitudeKey
<<
_jsonGridAngleKey
<<
_jsonGridSpacingKey
<<
_jsonTurnaroundDistKey
<<
keyList
<<
JsonHelper
::
jsonVersionKey
<<
_jsonTypeKey
<<
_jsonIdKey
<<
_jsonPolygonKey
<<
_jsonGridAltitudeKey
<<
_jsonGridAngleKey
<<
_jsonGridSpacingKey
<<
_jsonTurnaroundDistKey
<<
_jsonCameraTriggerKey
<<
_jsonCameraTriggerDistanceKey
<<
_jsonGridAltitudeRelativeKey
;
typeList
<<
QJsonValue
::
Double
<<
QJsonValue
::
String
<<
QJsonValue
::
Double
<<
QJsonValue
::
Array
<<
QJsonValue
::
Double
<<
QJsonValue
::
Double
<<
QJsonValue
::
Double
<<
QJsonValue
::
Double
<<
QJsonValue
::
Bool
<<
QJsonValue
::
Double
<<
QJsonValue
::
Bool
;
...
...
@@ -266,7 +265,7 @@ bool SurveyMissionItem::load(const QJsonObject& complexObject, QString& errorStr
}
// Version check
if
(
complexObject
[
_
jsonVersionKey
].
toInt
()
!=
1
)
{
if
(
complexObject
[
JsonHelper
::
jsonVersionKey
].
toInt
()
!=
1
)
{
errorString
=
tr
(
"QGroundControl does not support this version of survey items"
);
_clear
();
return
false
;
...
...
src/MissionManager/SurveyMissionItem.h
View file @
af8c2a88
...
...
@@ -140,7 +140,6 @@ private:
FactMetaData
_turnaroundDistMetaData
;
FactMetaData
_cameraTriggerDistanceMetaData
;
static
const
char
*
_jsonVersionKey
;
static
const
char
*
_jsonTypeKey
;
static
const
char
*
_jsonPolygonKey
;
static
const
char
*
_jsonIdKey
;
...
...
src/QGCApplication.cc
View file @
af8c2a88
...
...
@@ -124,6 +124,7 @@ QGCApplication* QGCApplication::_app = NULL;
const
char
*
QGCApplication
::
parameterFileExtension
=
"params"
;
const
char
*
QGCApplication
::
missionFileExtension
=
"mission"
;
const
char
*
QGCApplication
::
fenceFileExtension
=
"fence"
;
const
char
*
QGCApplication
::
telemetryFileExtension
=
"tlog"
;
const
char
*
QGCApplication
::
_deleteAllSettingsKey
=
"DeleteAllSettingsNextBoot"
;
...
...
@@ -305,7 +306,7 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
settings
.
setValue
(
_settingsVersionKey
,
QGC_SETTINGS_VERSION
);
// Clear parameter cache
QDir
paramDir
(
Parameter
Load
er
::
parameterCacheDir
());
QDir
paramDir
(
Parameter
Manag
er
::
parameterCacheDir
());
paramDir
.
removeRecursively
();
paramDir
.
mkpath
(
paramDir
.
absolutePath
());
}
else
{
...
...
src/QGCApplication.h
View file @
af8c2a88
...
...
@@ -67,6 +67,7 @@ public:
static
const
char
*
parameterFileExtension
;
static
const
char
*
missionFileExtension
;
static
const
char
*
fenceFileExtension
;
static
const
char
*
telemetryFileExtension
;
/// @brief Sets the persistent flag to delete all settings the next time QGroundControl is started.
...
...
src/QGCLoggingCategory.cc
View file @
af8c2a88
...
...
@@ -20,7 +20,7 @@ QGC_LOGGING_CATEGORY(FirmwareUpgradeLog, "FirmwareUpgradeLog")
QGC_LOGGING_CATEGORY
(
FirmwareUpgradeVerboseLog
,
"FirmwareUpgradeVerboseLog"
)
QGC_LOGGING_CATEGORY
(
MissionCommandsLog
,
"MissionCommandsLog"
)
QGC_LOGGING_CATEGORY
(
MissionItemLog
,
"MissionItemLog"
)
QGC_LOGGING_CATEGORY
(
Parameter
LoaderLog
,
"ParameterLoad
erLog"
)
QGC_LOGGING_CATEGORY
(
Parameter
ManagerLog
,
"ParameterManag
erLog"
)
QGCLoggingCategoryRegister
*
_instance
=
NULL
;
const
char
*
QGCLoggingCategoryRegister
::
_filterRulesSettingsGroup
=
"LoggingFilters"
;
...
...
src/QGCLoggingCategory.h
View file @
af8c2a88
...
...
@@ -22,7 +22,7 @@ Q_DECLARE_LOGGING_CATEGORY(FirmwareUpgradeLog)
Q_DECLARE_LOGGING_CATEGORY
(
FirmwareUpgradeVerboseLog
)
Q_DECLARE_LOGGING_CATEGORY
(
MissionCommandsLog
)
Q_DECLARE_LOGGING_CATEGORY
(
MissionItemLog
)
Q_DECLARE_LOGGING_CATEGORY
(
Parameter
Load
erLog
)
Q_DECLARE_LOGGING_CATEGORY
(
Parameter
Manag
erLog
)
/// @def QGC_LOGGING_CATEGORY
/// This is a QGC specific replacement for Q_LOGGING_CATEGORY. It will register the category name into a
...
...
src/QmlControls/ParameterEditorController.cc
View file @
af8c2a88
...
...
@@ -14,6 +14,7 @@
#include "ParameterEditorController.h"
#include "AutoPilotPluginManager.h"
#include "QGCApplication.h"
#include "ParameterManager.h"
#ifndef __mobile__
#include "QGCFileDialog.h"
...
...
@@ -28,7 +29,7 @@ ParameterEditorController::ParameterEditorController(void)
:
_currentComponentId
(
_vehicle
->
defaultComponentId
())
,
_parameters
(
new
QmlObjectListModel
(
this
))
{
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
autopilot
->
getGroupMap
();
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
vehicle
->
getParameterManager
()
->
getGroupMap
();
foreach
(
int
componentId
,
groupMap
.
keys
())
{
_componentIds
+=
QString
(
"%1"
).
arg
(
componentId
);
}
...
...
@@ -48,14 +49,14 @@ ParameterEditorController::~ParameterEditorController()
QStringList
ParameterEditorController
::
getGroupsForComponent
(
int
componentId
)
{
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
autopilot
->
getGroupMap
();
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
vehicle
->
getParameterManager
()
->
getGroupMap
();
return
groupMap
[
componentId
].
keys
();
}
QStringList
ParameterEditorController
::
getParametersForGroup
(
int
componentId
,
QString
group
)
{
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
autopilot
->
getGroupMap
();
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
vehicle
->
getParameterManager
()
->
getGroupMap
();
return
groupMap
[
componentId
][
group
];
}
...
...
@@ -187,7 +188,7 @@ void ParameterEditorController::_updateParameters(void)
QObjectList
newParameterList
;
if
(
_searchText
.
isEmpty
())
{
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
autopilot
->
getGroupMap
();
const
QMap
<
int
,
QMap
<
QString
,
QStringList
>
>&
groupMap
=
_
vehicle
->
getParameterManager
()
->
getGroupMap
();
foreach
(
const
QString
&
parameter
,
groupMap
[
_currentComponentId
][
_currentGroup
])
{
newParameterList
.
append
(
_vehicle
->
getParameterFact
(
_currentComponentId
,
parameter
));
}
...
...
src/Vehicle/Vehicle.cc
View file @
af8c2a88
...
...
@@ -18,7 +18,7 @@
#include "JoystickManager.h"
#include "MissionManager.h"
#include "CoordinateVector.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include "QGCApplication.h"
#include "QGCImageProvider.h"
#include "GAudioOutput.h"
...
...
@@ -199,11 +199,11 @@ Vehicle::Vehicle(LinkInterface* link,
connect
(
_missionManager
,
&
MissionManager
::
error
,
this
,
&
Vehicle
::
_missionManagerError
);
connect
(
_missionManager
,
&
MissionManager
::
newMissionItemsAvailable
,
this
,
&
Vehicle
::
_newMissionItemsAvailable
);
_parameterLoader
=
new
Parameter
Load
er
(
this
);
connect
(
_parameterLoader
,
&
Parameter
Load
er
::
parametersReady
,
_autopilotPlugin
,
&
AutoPilotPlugin
::
_parametersReadyPreChecks
);
connect
(
_parameterLoader
,
&
Parameter
Load
er
::
parameterListProgress
,
_autopilotPlugin
,
&
AutoPilotPlugin
::
parameterListProgress
);
_parameterLoader
=
new
Parameter
Manag
er
(
this
);
connect
(
_parameterLoader
,
&
Parameter
Manag
er
::
parametersReady
,
_autopilotPlugin
,
&
AutoPilotPlugin
::
_parametersReadyPreChecks
);
connect
(
_parameterLoader
,
&
Parameter
Manag
er
::
parameterListProgress
,
_autopilotPlugin
,
&
AutoPilotPlugin
::
parameterListProgress
);
// GeoFenceManager needs to access Parameter
Load
er so make sure to create after
// GeoFenceManager needs to access Parameter
Manag
er so make sure to create after
_geoFenceManager
=
_firmwarePlugin
->
newGeoFenceManager
(
this
);
connect
(
_geoFenceManager
,
&
GeoFenceManager
::
error
,
this
,
&
Vehicle
::
_geoFenceManagerError
);
...
...
@@ -332,9 +332,9 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
_missionManager
=
new
MissionManager
(
this
);
connect
(
_missionManager
,
&
MissionManager
::
error
,
this
,
&
Vehicle
::
_missionManagerError
);
_parameterLoader
=
new
Parameter
Load
er
(
this
);
_parameterLoader
=
new
Parameter
Manag
er
(
this
);
// GeoFenceManager needs to access Parameter
Load
er so make sure to create after
// GeoFenceManager needs to access Parameter
Manag
er so make sure to create after
_geoFenceManager
=
_firmwarePlugin
->
newGeoFenceManager
(
this
);
connect
(
_geoFenceManager
,
&
GeoFenceManager
::
error
,
this
,
&
Vehicle
::
_geoFenceManagerError
);
...
...
@@ -1813,7 +1813,7 @@ void Vehicle::rebootVehicle()
int
Vehicle
::
defaultComponentId
(
void
)
{
return
_parameterLoader
->
defaultComponen
en
tId
();
return
_parameterLoader
->
defaultComponentId
();
}
void
Vehicle
::
setSoloFirmware
(
bool
soloFirmware
)
...
...
@@ -1835,7 +1835,7 @@ void Vehicle::motorTest(int motor, int percent, int timeoutSecs)
/// Returns true if the specifed parameter exists from the default component
bool
Vehicle
::
parameterExists
(
int
componentId
,
const
QString
&
name
)
const
{
return
getParameter
Load
er
()
->
parameterExists
(
componentId
,
name
);
return
getParameter
Manag
er
()
->
parameterExists
(
componentId
,
name
);
}
/// Returns the specified parameter Fact from the default component
...
...
@@ -1843,7 +1843,7 @@ bool Vehicle::parameterExists(int componentId, const QString& name) const
/// parameterExists.
Fact
*
Vehicle
::
getParameterFact
(
int
componentId
,
const
QString
&
name
)
{
return
getParameter
Load
er
()
->
getFact
(
componentId
,
name
);
return
getParameter
Manag
er
()
->
getFact
(
componentId
,
name
);
}
void
Vehicle
::
_newMissionItemsAvailable
(
void
)
...
...
src/Vehicle/Vehicle.h
View file @
af8c2a88
...
...
@@ -34,7 +34,7 @@ class AutoPilotPlugin;
class
AutoPilotPluginManager
;
class
MissionManager
;
class
GeoFenceManager
;
class
Parameter
Load
er
;
class
Parameter
Manag
er
;
class
JoystickManager
;
class
UASMessage
;
...
...
@@ -544,8 +544,8 @@ public:
void
setConnectionLostEnabled
(
bool
connectionLostEnabled
);
Parameter
Loader
*
getParameterLoad
er
(
void
)
{
return
_parameterLoader
;
}
Parameter
Loader
*
getParameterLoad
er
(
void
)
const
{
return
_parameterLoader
;
}
Parameter
Manager
*
getParameterManag
er
(
void
)
{
return
_parameterLoader
;
}
Parameter
Manager
*
getParameterManag
er
(
void
)
const
{
return
_parameterLoader
;
}
static
const
int
cMaxRcChannels
=
18
;
...
...
@@ -763,7 +763,7 @@ private:
GeoFenceManager
*
_geoFenceManager
;
bool
_geoFenceManagerInitialRequestComplete
;
Parameter
Load
er
*
_parameterLoader
;
Parameter
Manag
er
*
_parameterLoader
;
bool
_armed
;
///< true: vehicle is armed
uint8_t
_base_mode
;
///< base_mode from HEARTBEAT
...
...
src/VehicleSetup/FirmwareImage.cc
View file @
af8c2a88
...
...
@@ -18,7 +18,7 @@
#include "QGCMAVLink.h"
#include "QGCApplication.h"
#include "FirmwarePlugin.h"
#include "Parameter
Load
er.h"
#include "Parameter
Manag
er.h"
#include <QDebug>
#include <QFile>
...
...
@@ -275,7 +275,7 @@ bool FirmwareImage::_px4Load(const QString& imageFilename)
}
// Cache this file with the system
Parameter
Load
er
::
cacheMetaDataFile
(
parameterFilename
,
firmwareType
);
Parameter
Manag
er
::
cacheMetaDataFile
(
parameterFilename
,
firmwareType
);
}
// Decompress the airframe xml and save to file
...
...
src/qgcunittest/UnitTestList.cc
View file @
af8c2a88
...
...
@@ -29,7 +29,7 @@
#include "MainWindowTest.h"
#include "FileManagerTest.h"
#include "TCPLinkTest.h"
#include "Parameter
Load
erTest.h"
#include "Parameter
Manag
erTest.h"
#include "MissionCommandTreeTest.h"
#include "LogDownloadTest.h"
...
...
@@ -49,7 +49,7 @@ UT_REGISTER_TEST(MissionManagerTest)
UT_REGISTER_TEST
(
RadioConfigTest
)
UT_REGISTER_TEST
(
TCPLinkTest
)
UT_REGISTER_TEST
(
FileManagerTest
)
UT_REGISTER_TEST
(
Parameter
Load
erTest
)
UT_REGISTER_TEST
(
Parameter
Manag
erTest
)
UT_REGISTER_TEST
(
MissionCommandTreeTest
)
UT_REGISTER_TEST
(
LogDownloadTest
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment