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
db1aade4
Commit
db1aade4
authored
Oct 14, 2016
by
Don Gagne
Committed by
GitHub
Oct 14, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4133 from bluerobotics/subSettingsTab
ArduSub Safety Tab and Lights Tab
parents
a93076dd
66efcdfc
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
807 additions
and
1 deletion
+807
-1
qgcresources.qrc
qgcresources.qrc
+1
-0
qgroundcontrol.pro
qgroundcontrol.pro
+2
-0
qgroundcontrol.qrc
qgroundcontrol.qrc
+4
-0
APMAutoPilotPlugin.cc
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
+8
-0
APMAutoPilotPlugin.h
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h
+3
-0
APMLightsComponent.cc
src/AutoPilotPlugins/APM/APMLightsComponent.cc
+76
-0
APMLightsComponent.h
src/AutoPilotPlugins/APM/APMLightsComponent.h
+40
-0
APMLightsComponent.qml
src/AutoPilotPlugins/APM/APMLightsComponent.qml
+190
-0
APMLightsComponentSummary.qml
src/AutoPilotPlugins/APM/APMLightsComponentSummary.qml
+101
-0
APMSafetyComponent.cc
src/AutoPilotPlugins/APM/APMSafetyComponent.cc
+22
-1
APMSafetyComponentSub.qml
src/AutoPilotPlugins/APM/APMSafetyComponentSub.qml
+266
-0
APMSafetyComponentSummarySub.qml
src/AutoPilotPlugins/APM/APMSafetyComponentSummarySub.qml
+94
-0
LightsComponentIcon.png
src/AutoPilotPlugins/APM/Images/LightsComponentIcon.png
+0
-0
No files found.
qgcresources.qrc
View file @
db1aade4
...
...
@@ -57,6 +57,7 @@
<file alias="GeoTagIcon">src/AnalyzeView/GeoTagIcon.png</file>
<file alias="LandMode.svg">src/AutoPilotPlugins/PX4/Images/LandMode.svg</file>
<file alias="LandModeCopter.svg">src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg</file>
<file alias="LightsComponentIcon.png">src/AutoPilotPlugins/APM/Images/LightsComponentIcon.png</file>
<file alias="LogDownloadIcon">src/AnalyzeView/LogDownloadIcon.png</file>
<file alias="LowBattery.svg">src/AutoPilotPlugins/PX4/Images/LowBattery.svg</file>
<file alias="LowBatteryLight.svg">src/AutoPilotPlugins/PX4/Images/LowBatteryLight.svg</file>
...
...
qgroundcontrol.pro
View file @
db1aade4
...
...
@@ -667,6 +667,7 @@ HEADERS+= \
src/AutoPilotPlugins/APM/APMAirframeComponentController.h \
src/AutoPilotPlugins/APM/APMAirframeComponentAirframes.h \
src/AutoPilotPlugins/APM/APMCameraComponent.h \
src/AutoPilotPlugins/APM/APMLightsComponent.h \
src/AutoPilotPlugins/APM/APMCompassCal.h \
src/AutoPilotPlugins/APM/APMFlightModesComponent.h \
src/AutoPilotPlugins/APM/APMFlightModesComponentController.h \
...
...
@@ -730,6 +731,7 @@ SOURCES += \
src/AutoPilotPlugins/APM/APMAirframeComponent.cc \
src/AutoPilotPlugins/APM/APMAirframeComponentController.cc \
src/AutoPilotPlugins/APM/APMCameraComponent.cc \
src/AutoPilotPlugins/APM/APMLightsComponent.cc \
src/AutoPilotPlugins/APM/APMCompassCal.cc \
src/AutoPilotPlugins/APM/APMFlightModesComponent.cc \
src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc \
...
...
qgroundcontrol.qrc
View file @
db1aade4
...
...
@@ -143,15 +143,19 @@
<file alias="APMNotSupported.qml">src/AutoPilotPlugins/APM/APMNotSupported.qml</file>
<file alias="APMCameraComponent.qml">src/AutoPilotPlugins/APM/APMCameraComponent.qml</file>
<file alias="APMCameraComponentSummary.qml">src/AutoPilotPlugins/APM/APMCameraComponentSummary.qml</file>
<file alias="APMLightsComponent.qml">src/AutoPilotPlugins/APM/APMLightsComponent.qml</file>
<file alias="APMLightsComponentSummary.qml">src/AutoPilotPlugins/APM/APMLightsComponentSummary.qml</file>
<file alias="APMPowerComponent.qml">src/AutoPilotPlugins/APM/APMPowerComponent.qml</file>
<file alias="APMPowerComponentSummary.qml">src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml</file>
<file alias="APMRadioComponentSummary.qml">src/AutoPilotPlugins/APM/APMRadioComponentSummary.qml</file>
<file alias="APMSafetyComponentCopter.qml">src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml</file>
<file alias="APMSafetyComponentPlane.qml">src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml</file>
<file alias="APMSafetyComponentRover.qml">src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml</file>
<file alias="APMSafetyComponentSub.qml">src/AutoPilotPlugins/APM/APMSafetyComponentSub.qml</file>
<file alias="APMSafetyComponentSummaryCopter.qml">src/AutoPilotPlugins/APM/APMSafetyComponentSummaryCopter.qml</file>
<file alias="APMSafetyComponentSummaryPlane.qml">src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml</file>
<file alias="APMSafetyComponentSummaryRover.qml">src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml</file>
<file alias="APMSafetyComponentSummarySub.qml">src/AutoPilotPlugins/APM/APMSafetyComponentSummarySub.qml</file>
<file alias="APMTuningComponentCopter.qml">src/AutoPilotPlugins/APM/APMTuningComponentCopter.qml</file>
<file alias="CameraComponent.qml">src/AutoPilotPlugins/PX4/CameraComponent.qml</file>
<file alias="CameraComponentSummary.qml">src/AutoPilotPlugins/PX4/CameraComponentSummary.qml</file>
...
...
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
View file @
db1aade4
...
...
@@ -27,6 +27,7 @@
#include "APMPowerComponent.h"
#include "MotorComponent.h"
#include "APMCameraComponent.h"
#include "APMLightsComponent.h"
#include "ESP8266Component.h"
/// This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_ARDUPILOT type.
...
...
@@ -35,6 +36,7 @@ APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent)
,
_incorrectParameterVersion
(
false
)
,
_airframeComponent
(
NULL
)
,
_cameraComponent
(
NULL
)
,
_lightsComponent
(
NULL
)
,
_flightModesComponent
(
NULL
)
,
_powerComponent
(
NULL
)
#if 0
...
...
@@ -104,6 +106,12 @@ const QVariantList& APMAutoPilotPlugin::vehicleComponents(void)
_cameraComponent
->
setupTriggerSignals
();
_components
.
append
(
QVariant
::
fromValue
((
VehicleComponent
*
)
_cameraComponent
));
if
(
_vehicle
->
sub
())
{
_lightsComponent
=
new
APMLightsComponent
(
_vehicle
,
this
);
_lightsComponent
->
setupTriggerSignals
();
_components
.
append
(
QVariant
::
fromValue
((
VehicleComponent
*
)
_lightsComponent
));
}
//-- Is there an ESP8266 Connected?
if
(
_vehicle
->
parameterManager
()
->
parameterExists
(
MAV_COMP_ID_UDP_BRIDGE
,
"SW_VER"
))
{
_esp8266Component
=
new
ESP8266Component
(
_vehicle
,
this
);
...
...
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h
View file @
db1aade4
...
...
@@ -24,6 +24,7 @@ class APMSensorsComponent;
class
APMPowerComponent
;
class
MotorComponent
;
class
APMCameraComponent
;
class
APMLightsComponent
;
class
ESP8266Component
;
/// This is the APM specific implementation of the AutoPilot class.
...
...
@@ -40,6 +41,7 @@ public:
APMAirframeComponent
*
airframeComponent
(
void
)
const
{
return
_airframeComponent
;
}
APMCameraComponent
*
cameraComponent
(
void
)
const
{
return
_cameraComponent
;
}
APMLightsComponent
*
lightsComponent
(
void
)
const
{
return
_lightsComponent
;
}
APMFlightModesComponent
*
flightModesComponent
(
void
)
const
{
return
_flightModesComponent
;
}
APMPowerComponent
*
powerComponent
(
void
)
const
{
return
_powerComponent
;
}
#if 0
...
...
@@ -58,6 +60,7 @@ private:
APMAirframeComponent
*
_airframeComponent
;
APMCameraComponent
*
_cameraComponent
;
APMLightsComponent
*
_lightsComponent
;
APMFlightModesComponent
*
_flightModesComponent
;
APMPowerComponent
*
_powerComponent
;
#if 0
...
...
src/AutoPilotPlugins/APM/APMLightsComponent.cc
0 → 100644
View file @
db1aade4
/****************************************************************************
*
* (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.
*
****************************************************************************/
/// @file
/// @author Don Gagne <don@thegagnes.com>
/// @author Rustom Jehangir <rusty@bluerobotics.com>
#include "APMLightsComponent.h"
#include "QGCQmlWidgetHolder.h"
#include "APMAutoPilotPlugin.h"
#include "APMAirframeComponent.h"
APMLightsComponent
::
APMLightsComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
)
:
VehicleComponent
(
vehicle
,
autopilot
,
parent
)
,
_name
(
tr
(
"Lights"
))
{
}
QString
APMLightsComponent
::
name
(
void
)
const
{
return
_name
;
}
QString
APMLightsComponent
::
description
(
void
)
const
{
return
tr
(
"Lights setup is used to adjust light output channels."
);
}
QString
APMLightsComponent
::
iconResource
(
void
)
const
{
return
QStringLiteral
(
"/qmlimages/LightsComponentIcon.png"
);
}
bool
APMLightsComponent
::
requiresSetup
(
void
)
const
{
return
false
;
}
bool
APMLightsComponent
::
setupComplete
(
void
)
const
{
return
true
;
}
QStringList
APMLightsComponent
::
setupCompleteChangedTriggerList
(
void
)
const
{
return
QStringList
();
}
QUrl
APMLightsComponent
::
setupSource
(
void
)
const
{
return
QUrl
::
fromUserInput
(
QStringLiteral
(
"qrc:/qml/APMLightsComponent.qml"
));
}
QUrl
APMLightsComponent
::
summaryQmlSource
(
void
)
const
{
return
QUrl
::
fromUserInput
(
QStringLiteral
(
"qrc:/qml/APMLightsComponentSummary.qml"
));
}
QString
APMLightsComponent
::
prerequisiteSetup
(
void
)
const
{
APMAutoPilotPlugin
*
plugin
=
dynamic_cast
<
APMAutoPilotPlugin
*>
(
_autopilot
);
Q_ASSERT
(
plugin
);
if
(
!
plugin
->
airframeComponent
()
->
setupComplete
())
{
return
plugin
->
airframeComponent
()
->
name
();
}
return
QString
();
}
src/AutoPilotPlugins/APM/APMLightsComponent.h
0 → 100644
View file @
db1aade4
/****************************************************************************
*
* (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 APMLightsComponent_H
#define APMLightsComponent_H
#include "VehicleComponent.h"
class
APMLightsComponent
:
public
VehicleComponent
{
Q_OBJECT
public:
APMLightsComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
=
NULL
);
// Virtuals from VehicleComponent
QStringList
setupCompleteChangedTriggerList
(
void
)
const
final
;
// Virtuals from VehicleComponent
QString
name
(
void
)
const
final
;
QString
description
(
void
)
const
final
;
QString
iconResource
(
void
)
const
final
;
bool
requiresSetup
(
void
)
const
final
;
bool
setupComplete
(
void
)
const
final
;
QUrl
setupSource
(
void
)
const
final
;
QUrl
summaryQmlSource
(
void
)
const
final
;
QString
prerequisiteSetup
(
void
)
const
final
;
private:
const
QString
_name
;
};
#endif
src/AutoPilotPlugins/APM/APMLightsComponent.qml
0 → 100644
View file @
db1aade4
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
SetupPage
{
id
:
lightsPage
pageComponent
:
lightsPageComponent
Component
{
id
:
lightsPageComponent
Column
{
spacing
:
_margins
width
:
availableWidth
FactPanelController
{
id
:
controller
;
factPanel
:
lightsPage
.
viewPanel
}
QGCPalette
{
id
:
palette
;
colorGroupEnabled
:
true
}
property
Fact
_rc5Function
:
controller
.
getParameterFact
(
-
1
,
"
RC5_FUNCTION
"
)
property
Fact
_rc6Function
:
controller
.
getParameterFact
(
-
1
,
"
RC6_FUNCTION
"
)
property
Fact
_rc7Function
:
controller
.
getParameterFact
(
-
1
,
"
RC7_FUNCTION
"
)
property
Fact
_rc8Function
:
controller
.
getParameterFact
(
-
1
,
"
RC8_FUNCTION
"
)
property
Fact
_rc9Function
:
controller
.
getParameterFact
(
-
1
,
"
RC9_FUNCTION
"
)
property
Fact
_rc10Function
:
controller
.
getParameterFact
(
-
1
,
"
RC10_FUNCTION
"
)
property
Fact
_rc11Function
:
controller
.
getParameterFact
(
-
1
,
"
RC11_FUNCTION
"
)
property
Fact
_rc12Function
:
controller
.
getParameterFact
(
-
1
,
"
RC12_FUNCTION
"
)
property
Fact
_rc13Function
:
controller
.
getParameterFact
(
-
1
,
"
RC13_FUNCTION
"
)
property
Fact
_rc14Function
:
controller
.
getParameterFact
(
-
1
,
"
RC14_FUNCTION
"
)
readonly
property
real
_margins
:
ScreenTools
.
defaultFontPixelHeight
readonly
property
int
_rcFunctionDisabled
:
0
readonly
property
int
_rcFunctionRCIN9
:
59
readonly
property
int
_rcFunctionRCIN10
:
60
readonly
property
int
_firstLightsOutChannel
:
5
readonly
property
int
_lastLightsOutChannel
:
14
Component.onCompleted
:
{
calcLightOutValues
()
}
/// Light output channels are stored in RC#_FUNCTION parameters. We need to loop through those
/// to find them and setup the ui accordindly.
function
calcLightOutValues
()
{
lightsLoader
.
lights1OutIndex
=
0
lightsLoader
.
lights2OutIndex
=
0
for
(
var
channel
=
_firstLightsOutChannel
;
channel
<=
_lastLightsOutChannel
;
channel
++
)
{
var
functionFact
=
controller
.
getParameterFact
(
-
1
,
"
RC
"
+
channel
+
"
_FUNCTION
"
)
if
(
functionFact
.
value
==
_rcFunctionRCIN9
)
{
lightsLoader
.
lights1OutIndex
=
channel
-
4
}
else
if
(
functionFact
.
value
==
_rcFunctionRCIN10
)
{
lightsLoader
.
lights2OutIndex
=
channel
-
4
}
}
}
function
setRCFunction
(
channel
,
rcFunction
)
{
// First clear any previous settings for this function
for
(
var
index
=
_firstLightsOutChannel
;
index
<=
_lastLightsOutChannel
;
index
++
)
{
var
functionFact
=
controller
.
getParameterFact
(
-
1
,
"
RC
"
+
index
+
"
_FUNCTION
"
)
if
(
functionFact
.
value
!=
_rcFunctionDisabled
&&
functionFact
.
value
==
rcFunction
)
{
functionFact
.
value
=
_rcFunctionDisabled
}
}
// Now set the function into the new channel
if
(
channel
!=
0
)
{
var
functionFact
=
controller
.
getParameterFact
(
-
1
,
"
RC
"
+
channel
+
"
_FUNCTION
"
)
functionFact
.
value
=
rcFunction
}
}
// Whenever any RC#_FUNCTION parameters chagnes we need to go looking for light output channels again
Connections
{
target
:
_rc5Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc6Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc7Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc8Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc9Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc10Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc11Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc12Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc13Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc14Function
;
onValueChanged
:
calcLightOutValues
()
}
ListModel
{
id
:
lightsOutModel
ListElement
{
text
:
qsTr
(
"
Disabled
"
);
value
:
0
}
ListElement
{
text
:
qsTr
(
"
Channel 5
"
);
value
:
5
}
ListElement
{
text
:
qsTr
(
"
Channel 6
"
);
value
:
6
}
ListElement
{
text
:
qsTr
(
"
Channel 7
"
);
value
:
7
}
ListElement
{
text
:
qsTr
(
"
Channel 8
"
);
value
:
8
}
ListElement
{
text
:
qsTr
(
"
Channel 9
"
);
value
:
9
}
ListElement
{
text
:
qsTr
(
"
Channel 10
"
);
value
:
10
}
ListElement
{
text
:
qsTr
(
"
Channel 11
"
);
value
:
11
}
ListElement
{
text
:
qsTr
(
"
Channel 12
"
);
value
:
12
}
ListElement
{
text
:
qsTr
(
"
Channel 13
"
);
value
:
13
}
ListElement
{
text
:
qsTr
(
"
Channel 14
"
);
value
:
14
}
}
Component
{
id
:
lightSettings
Item
{
width
:
rectangle
.
x
+
rectangle
.
width
height
:
rectangle
.
y
+
rectangle
.
height
QGCLabel
{
id
:
settingsLabel
text
:
qsTr
(
"
Light Output Channels
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
}
Rectangle
{
id
:
rectangle
anchors.topMargin
:
_margins
/
2
anchors.top
:
settingsLabel
.
bottom
width
:
lights1Combo
.
x
+
lights1Combo
.
width
+
_margins
height
:
lights2Combo
.
y
+
lights2Combo
.
height
+
_margins
color
:
palette
.
windowShade
QGCLabel
{
id
:
lights1Label
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
lights1Combo
.
baseline
text
:
qsTr
(
"
Lights 1:
"
)
}
QGCComboBox
{
id
:
lights1Combo
anchors.margins
:
_margins
anchors.top
:
parent
.
top
anchors.left
:
lights1Label
.
right
width
:
ScreenTools
.
defaultFontPixelWidth
*
15
model
:
lightsOutModel
currentIndex
:
lights1OutIndex
onActivated
:
setRCFunction
(
lightsOutModel
.
get
(
index
).
value
,
lights1Function
)
}
QGCLabel
{
id
:
lights2Label
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
lights2Combo
.
baseline
text
:
qsTr
(
"
Lights 2:
"
)
}
QGCComboBox
{
id
:
lights2Combo
anchors.margins
:
_margins
anchors.top
:
lights1Combo
.
bottom
anchors.left
:
lights2Label
.
right
width
:
lights1Combo
.
width
model
:
lightsOutModel
currentIndex
:
lights2OutIndex
onActivated
:
setRCFunction
(
lightsOutModel
.
get
(
index
).
value
,
lights2Function
)
}
}
// Rectangle
}
// Item
}
// Component - lightSettings
Loader
{
id
:
lightsLoader
sourceComponent
:
lightSettings
property
int
lights1OutIndex
:
0
property
int
lights2OutIndex
:
0
property
int
lights1Function
:
_rcFunctionRCIN9
property
int
lights2Function
:
_rcFunctionRCIN10
}
}
// Column
}
// Component
}
// SetupPage
src/AutoPilotPlugins/APM/APMLightsComponentSummary.qml
0 → 100644
View file @
db1aade4
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Palette
1.0
FactPanel
{
id
:
panel
anchors.fill
:
parent
color
:
qgcPal
.
windowShadeDark
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
FactPanelController
{
id
:
controller
;
factPanel
:
panel
}
property
Fact
_rc5Function
:
controller
.
getParameterFact
(
-
1
,
"
RC5_FUNCTION
"
)
property
Fact
_rc6Function
:
controller
.
getParameterFact
(
-
1
,
"
RC6_FUNCTION
"
)
property
Fact
_rc7Function
:
controller
.
getParameterFact
(
-
1
,
"
RC7_FUNCTION
"
)
property
Fact
_rc8Function
:
controller
.
getParameterFact
(
-
1
,
"
RC8_FUNCTION
"
)
property
Fact
_rc9Function
:
controller
.
getParameterFact
(
-
1
,
"
RC9_FUNCTION
"
)
property
Fact
_rc10Function
:
controller
.
getParameterFact
(
-
1
,
"
RC10_FUNCTION
"
)
property
Fact
_rc11Function
:
controller
.
getParameterFact
(
-
1
,
"
RC11_FUNCTION
"
)
property
Fact
_rc12Function
:
controller
.
getParameterFact
(
-
1
,
"
RC12_FUNCTION
"
)
property
Fact
_rc13Function
:
controller
.
getParameterFact
(
-
1
,
"
RC13_FUNCTION
"
)
property
Fact
_rc14Function
:
controller
.
getParameterFact
(
-
1
,
"
RC14_FUNCTION
"
)
readonly
property
int
_rcFunctionRCIN9
:
59
readonly
property
int
_rcFunctionRCIN10
:
60
readonly
property
int
_firstLightsOutChannel
:
5
readonly
property
int
_lastLightsOutChannel
:
14
Component.onCompleted
:
{
calcLightOutValues
()
}
/// Light output channels are stored in RC#_FUNCTION parameters. We need to loop through those
/// to find them and setup the ui accordindly.
function
calcLightOutValues
()
{
lightsLoader
.
lights1OutIndex
=
0
lightsLoader
.
lights2OutIndex
=
0
for
(
var
channel
=
_firstLightsOutChannel
;
channel
<=
_lastLightsOutChannel
;
channel
++
)
{
var
functionFact
=
controller
.
getParameterFact
(
-
1
,
"
RC
"
+
channel
+
"
_FUNCTION
"
)
if
(
functionFact
.
value
==
_rcFunctionRCIN9
)
{
lightsLoader
.
lights1OutIndex
=
channel
-
4
}
else
if
(
functionFact
.
value
==
_rcFunctionRCIN10
)
{
lightsLoader
.
lights2OutIndex
=
channel
-
4
}
}
}
// Whenever any RC#_FUNCTION parameters chagnes we need to go looking for light output channels again
Connections
{
target
:
_rc5Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc6Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc7Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc8Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc9Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc10Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc11Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc12Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc13Function
;
onValueChanged
:
calcLightOutValues
()
}
Connections
{
target
:
_rc14Function
;
onValueChanged
:
calcLightOutValues
()
}
ListModel
{
id
:
lightsOutModel
ListElement
{
text
:
qsTr
(
"
Disabled
"
);
value
:
0
}
ListElement
{
text
:
qsTr
(
"
Channel 5
"
);
value
:
5
}
ListElement
{
text
:
qsTr
(
"
Channel 6
"
);
value
:
6
}
ListElement
{
text
:
qsTr
(
"
Channel 7
"
);
value
:
7
}
ListElement
{
text
:
qsTr
(
"
Channel 8
"
);
value
:
8
}
ListElement
{
text
:
qsTr
(
"
Channel 9
"
);
value
:
9
}
ListElement
{
text
:
qsTr
(
"
Channel 10
"
);
value
:
10
}
ListElement
{
text
:
qsTr
(
"
Channel 11
"
);
value
:
11
}
ListElement
{
text
:
qsTr
(
"
Channel 12
"
);
value
:
12
}
ListElement
{
text
:
qsTr
(
"
Channel 13
"
);
value
:
13
}
ListElement
{
text
:
qsTr
(
"
Channel 14
"
);
value
:
14
}
}
Loader
{
id
:
lightsLoader
property
int
lights1OutIndex
:
0
property
int
lights2OutIndex
:
0
property
int
lights1Function
:
_rcFunctionRCIN9
property
int
lights2Function
:
_rcFunctionRCIN10
}
Column
{
anchors.fill
:
parent
VehicleSummaryRow
{
labelText
:
qsTr
(
"
Lights Output 1:
"
)
valueText
:
lightsOutModel
.
get
(
lightsLoader
.
lights1OutIndex
).
text
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
Lights Output 2:
"
)
valueText
:
lightsOutModel
.
get
(
lightsLoader
.
lights2OutIndex
).
text
}
}
}
src/AutoPilotPlugins/APM/APMSafetyComponent.cc
View file @
db1aade4
...
...
@@ -29,7 +29,22 @@ QString APMSafetyComponent::name(void) const
QString
APMSafetyComponent
::
description
(
void
)
const
{
return
tr
(
"Safety Setup is used to setup triggers for Return to Land as well as the settings for Return to Land itself."
);
switch
(
_vehicle
->
vehicleType
())
{
case
MAV_TYPE_SUBMARINE
:
return
tr
(
"Safety Setup is used to setup failsafe actions, geofence limits, leak detection, and arming checks."
);
break
;
case
MAV_TYPE_GROUND_ROVER
:
case
MAV_TYPE_FIXED_WING
:
case
MAV_TYPE_QUADROTOR
:
case
MAV_TYPE_COAXIAL
:
case
MAV_TYPE_HELICOPTER
:
case
MAV_TYPE_HEXAROTOR
:
case
MAV_TYPE_OCTOROTOR
:
case
MAV_TYPE_TRICOPTER
:
default:
return
tr
(
"Safety Setup is used to setup triggers for Return to Land as well as the settings for Return to Land itself."
);
break
;
}
}
QString
APMSafetyComponent
::
iconResource
(
void
)
const
...
...
@@ -69,6 +84,9 @@ QUrl APMSafetyComponent::setupSource(void) const
case
MAV_TYPE_TRICOPTER
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentCopter.qml"
);
break
;
case
MAV_TYPE_SUBMARINE
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentSub.qml"
);
break
;
case
MAV_TYPE_GROUND_ROVER
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentRover.qml"
);
break
;
...
...
@@ -96,6 +114,9 @@ QUrl APMSafetyComponent::summaryQmlSource(void) const
case
MAV_TYPE_TRICOPTER
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentSummaryCopter.qml"
);
break
;
case
MAV_TYPE_SUBMARINE
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentSummarySub.qml"
);
break
;
case
MAV_TYPE_GROUND_ROVER
:
qmlFile
=
QStringLiteral
(
"qrc:/qml/APMSafetyComponentSummaryRover.qml"
);
break
;
...
...
src/AutoPilotPlugins/APM/APMSafetyComponentSub.qml
0 → 100644
View file @
db1aade4
This diff is collapsed.
Click to expand it.
src/AutoPilotPlugins/APM/APMSafetyComponentSummarySub.qml
0 → 100644
View file @
db1aade4
import
QtQuick
2.2
import
QtQuick
.
Controls
1.2
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Palette
1.0
FactPanel
{
id
:
panel
anchors.fill
:
parent
color
:
qgcPal
.
windowShadeDark
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
FactPanelController
{
id
:
controller
;
factPanel
:
panel
}
property
Fact
_failsafeGCSEnable
:
controller
.
getParameterFact
(
-
1
,
"
FS_GCS_ENABLE
"
)
property
Fact
_failsafeLeakEnable
:
controller
.
getParameterFact
(
-
1
,
"
FS_LEAK_ENABLE
"
)
property
Fact
_fenceAction
:
controller
.
getParameterFact
(
-
1
,
"
FENCE_ACTION
"
)
property
Fact
_fenceEnable
:
controller
.
getParameterFact
(
-
1
,
"
FENCE_ENABLE
"
)
property
Fact
_fenceType
:
controller
.
getParameterFact
(
-
1
,
"
FENCE_TYPE
"
)
property
Fact
_leakPin
:
controller
.
getParameterFact
(
-
1
,
"
LEAK1_PIN
"
)
property
Fact
_armingCheck
:
controller
.
getParameterFact
(
-
1
,
"
ARMING_CHECK
"
)
property
string
_failsafeGCSEnableText
Component.onCompleted
:
{
setFailsafeGCSEnableText
()
}
Connections
{
target
:
_failsafeGCSEnable
onValueChanged
:
setFailsafeGCSEnableText
()
}
function
setFailsafeGCSEnableText
()
{
switch
(
_failsafeGCSEnable
.
value
)
{
case
0
:
_failsafeGCSEnableText
=
qsTr
(
"
Disabled
"
)
break
case
1
:
_failsafeGCSEnableText
=
qsTr
(
"
Always RTL
"
)
break
case
2
:
_failsafeGCSEnableText
=
qsTr
(
"
Continue with Mission in Auto Mode
"
)
break
default
:
_failsafeGCSEnableText
=
qsTr
(
"
Unknown
"
)
}
}
Column
{
anchors.fill
:
parent
VehicleSummaryRow
{
labelText
:
qsTr
(
"
Arming Checks:
"
)
valueText
:
_armingCheck
.
value
&
1
?
qsTr
(
"
Enabled
"
)
:
qsTr
(
"
Some disabled
"
)
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
GCS failsafe:
"
)
valueText
:
_failsafeGCSEnableText
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
Leak failsafe:
"
)
valueText
:
_failsafeLeakEnable
.
value
?
qsTr
(
"
Enabled
"
)
:
qsTr
(
"
Disabled
"
)
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
Leak detector:
"
)
valueText
:
_leakPin
.
value
>
0
?
qsTr
(
"
Enabled
"
)
:
qsTr
(
"
Disabled
"
)
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
GeoFence:
"
)
valueText
:
_fenceEnable
.
value
==
0
||
_fenceType
==
0
?
qsTr
(
"
Disabled
"
)
:
(
_fenceType
.
value
==
1
?
qsTr
(
"
Depth
"
)
:
(
_fenceType
.
value
==
2
?
qsTr
(
"
Circle
"
)
:
qsTr
(
"
Depth,Circle
"
)))
}
VehicleSummaryRow
{
labelText
:
qsTr
(
"
GeoFence:
"
)
valueText
:
qsTr
(
"
Report only
"
)
visible
:
_fenceEnable
.
value
!=
0
}
}
}
src/AutoPilotPlugins/APM/Images/LightsComponentIcon.png
0 → 100644
View file @
db1aade4
2.08 KB
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