Commit e3367e35 authored by DonLakeFlyer's avatar DonLakeFlyer

New Arm/Disarm toolbar indicator

parent 950ee021
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<file alias="FactSystemTest.qml">src/FactSystem/FactSystemTest.qml</file> <file alias="FactSystemTest.qml">src/FactSystem/FactSystemTest.qml</file>
</qresource> </qresource>
<qresource prefix="/toolbar"> <qresource prefix="/toolbar">
<file alias="ArmedIndicator.qml">src/ui/toolbar/ArmedIndicator.qml</file>
<file alias="BatteryIndicator.qml">src/ui/toolbar/BatteryIndicator.qml</file> <file alias="BatteryIndicator.qml">src/ui/toolbar/BatteryIndicator.qml</file>
<file alias="GPSIndicator.qml">src/ui/toolbar/GPSIndicator.qml</file> <file alias="GPSIndicator.qml">src/ui/toolbar/GPSIndicator.qml</file>
<file alias="MessageIndicator.qml">src/ui/toolbar/MessageIndicator.qml</file> <file alias="MessageIndicator.qml">src/ui/toolbar/MessageIndicator.qml</file>
......
...@@ -76,6 +76,7 @@ public: ...@@ -76,6 +76,7 @@ public:
QString landFlightMode(void) const override { return QString("Land"); } QString landFlightMode(void) const override { return QString("Land"); }
QString takeControlFlightMode(void) const override { return QString("Stablize"); } QString takeControlFlightMode(void) const override { return QString("Stablize"); }
bool vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const final; bool vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const final;
QString autoDisarmParameter(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral("DISARM_DELAY"); }
private: private:
static bool _remapParamNameIntialized; static bool _remapParamNameIntialized;
......
...@@ -59,6 +59,7 @@ public: ...@@ -59,6 +59,7 @@ public:
QString offlineEditingParamFile(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral(":/FirmwarePlugin/APM/Plane.OfflineEditing.params"); } QString offlineEditingParamFile(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral(":/FirmwarePlugin/APM/Plane.OfflineEditing.params"); }
const FirmwarePlugin::remapParamNameMajorVersionMap_t& paramNameRemapMajorVersionMap(void) const final { return _remapParamName; } const FirmwarePlugin::remapParamNameMajorVersionMap_t& paramNameRemapMajorVersionMap(void) const final { return _remapParamName; }
int remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const final; int remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const final;
QString autoDisarmParameter(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral("LAND_DISARMDELAY"); }
private: private:
static bool _remapParamNameIntialized; static bool _remapParamNameIntialized;
......
...@@ -336,6 +336,7 @@ const QVariantList &FirmwarePlugin::toolBarIndicators(const Vehicle* vehicle) ...@@ -336,6 +336,7 @@ const QVariantList &FirmwarePlugin::toolBarIndicators(const Vehicle* vehicle)
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RCRSSIIndicator.qml"))); _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RCRSSIIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml"))); _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml"))); _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")));
} }
return _toolBarIndicatorList; return _toolBarIndicatorList;
} }
...@@ -445,3 +446,9 @@ void FirmwarePlugin::batteryConsumptionData(Vehicle* vehicle, int& mAhBattery, d ...@@ -445,3 +446,9 @@ void FirmwarePlugin::batteryConsumptionData(Vehicle* vehicle, int& mAhBattery, d
hoverAmps = 0; hoverAmps = 0;
cruiseAmps = 0; cruiseAmps = 0;
} }
QString FirmwarePlugin::autoDisarmParameter(Vehicle* vehicle)
{
Q_UNUSED(vehicle);
return QString();
}
...@@ -282,6 +282,9 @@ public: ...@@ -282,6 +282,9 @@ public:
/// @param[out] cruiseAmps Current draw in amps during cruise /// @param[out] cruiseAmps Current draw in amps during cruise
virtual void batteryConsumptionData(Vehicle* vehicle, int& mAhBattery, double& hoverAmps, double& cruiseAmps) const; virtual void batteryConsumptionData(Vehicle* vehicle, int& mAhBattery, double& hoverAmps, double& cruiseAmps) const;
// Returns the parameter which control auto-dismar. Assume == 0 means no auto disarm
virtual QString autoDisarmParameter(Vehicle* vehicle);
// FIXME: Hack workaround for non pluginize FollowMe support // FIXME: Hack workaround for non pluginize FollowMe support
static const char* px4FollowMeFlightMode; static const char* px4FollowMeFlightMode;
......
...@@ -67,6 +67,7 @@ public: ...@@ -67,6 +67,7 @@ public:
QString brandImageIndoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/PX4/BrandImage"); } 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"); } QString brandImageOutdoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/PX4/BrandImage"); }
bool vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const override; bool vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const override;
QString autoDisarmParameter (Vehicle* vehicle) override { Q_UNUSED(vehicle); return QStringLiteral("COM_DISARM_LAND"); }
protected: protected:
typedef struct { typedef struct {
......
...@@ -34,6 +34,8 @@ QGCView { ...@@ -34,6 +34,8 @@ QGCView {
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
property alias guidedController: guidedActionsController
property bool activeVehicleJoystickEnabled: _activeVehicle ? _activeVehicle.joystickEnabled : false property bool activeVehicleJoystickEnabled: _activeVehicle ? _activeVehicle.joystickEnabled : false
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
...@@ -444,7 +446,7 @@ QGCView { ...@@ -444,7 +446,7 @@ QGCView {
} }
GuidedActionsController { GuidedActionsController {
id: guidedController id: guidedActionsController
missionController: flyMissionController missionController: flyMissionController
z: _flightVideoPipControl.z + 1 z: _flightVideoPipControl.z + 1
......
...@@ -46,8 +46,8 @@ Item { ...@@ -46,8 +46,8 @@ Item {
readonly property string setWaypointTitle: qsTr("Set Waypoint") readonly property string setWaypointTitle: qsTr("Set Waypoint")
readonly property string gotoTitle: qsTr("Goto Location") readonly property string gotoTitle: qsTr("Goto Location")
readonly property string armMessage: qsTr("arm") readonly property string armMessage: qsTr("Arm the vehicle.")
readonly property string disarmMessage: qsTr("disarm") readonly property string disarmMessage: qsTr("Disarm the vehicle")
readonly property string emergencyStopMessage: qsTr("WARNING: This still stop all motors. If vehicle is currently in air it will crash.") readonly property string emergencyStopMessage: qsTr("WARNING: This still stop all motors. If vehicle is currently in air it will crash.")
readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.") readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.")
readonly property string startMissionMessage: qsTr("Start the mission which is currently displayed above. If the vehicle is on the ground it will takeoff.") readonly property string startMissionMessage: qsTr("Start the mission which is currently displayed above. If the vehicle is on the ground it will takeoff.")
...@@ -109,10 +109,16 @@ Item { ...@@ -109,10 +109,16 @@ Item {
_actionData = actionData _actionData = actionData
switch (actionCode) { switch (actionCode) {
case actionArm: case actionArm:
if (_activeVehicle.flying) {
return
}
title = armTitle title = armTitle
message = armMessage message = armMessage
break; break;
case actionDisarm: case actionDisarm:
if (_activeVehicle.flying) {
return
}
title = disarmTitle title = disarmTitle
message = disarmMessage message = disarmMessage
break; break;
......
...@@ -1647,10 +1647,8 @@ void Vehicle::_startMissionRequest(void) ...@@ -1647,10 +1647,8 @@ void Vehicle::_startMissionRequest(void)
void Vehicle::_parametersReady(bool parametersReady) void Vehicle::_parametersReady(bool parametersReady)
{ {
if (parametersReady) { if (parametersReady) {
_setupAutoDisarmSignalling();
_startMissionRequest(); _startMissionRequest();
}
if (parametersReady) {
setJoystickEnabled(_joystickEnabled); setJoystickEnabled(_joystickEnabled);
} }
} }
...@@ -2413,6 +2411,29 @@ bool Vehicle::vehicleYawsToNextWaypointInMission(void) const ...@@ -2413,6 +2411,29 @@ bool Vehicle::vehicleYawsToNextWaypointInMission(void) const
return _firmwarePlugin->vehicleYawsToNextWaypointInMission(this); return _firmwarePlugin->vehicleYawsToNextWaypointInMission(this);
} }
void Vehicle::_setupAutoDisarmSignalling(void)
{
QString param = _firmwarePlugin->autoDisarmParameter(this);
if (!param.isEmpty() && _parameterManager->parameterExists(FactSystem::defaultComponentId, param)) {
Fact* fact = _parameterManager->getParameter(FactSystem::defaultComponentId,param);
connect(fact, &Fact::rawValueChanged, this, &Vehicle::autoDisarmChanged);
emit autoDisarmChanged();
}
}
bool Vehicle::autoDisarm(void)
{
QString param = _firmwarePlugin->autoDisarmParameter(this);
if (!param.isEmpty() && _parameterManager->parameterExists(FactSystem::defaultComponentId, param)) {
Fact* fact = _parameterManager->getParameter(FactSystem::defaultComponentId,param);
return fact->rawValue().toDouble() > 0;
}
return false;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
......
...@@ -240,6 +240,7 @@ public: ...@@ -240,6 +240,7 @@ public:
Q_PROPERTY(QGeoCoordinate coordinate READ coordinate NOTIFY coordinateChanged) Q_PROPERTY(QGeoCoordinate coordinate READ coordinate NOTIFY coordinateChanged)
Q_PROPERTY(QGeoCoordinate homePosition READ homePosition NOTIFY homePositionChanged) Q_PROPERTY(QGeoCoordinate homePosition READ homePosition NOTIFY homePositionChanged)
Q_PROPERTY(bool armed READ armed WRITE setArmed NOTIFY armedChanged) Q_PROPERTY(bool armed READ armed WRITE setArmed NOTIFY armedChanged)
Q_PROPERTY(bool autoDisarm READ autoDisarm NOTIFY autoDisarmChanged)
Q_PROPERTY(bool flightModeSetAvailable READ flightModeSetAvailable CONSTANT) Q_PROPERTY(bool flightModeSetAvailable READ flightModeSetAvailable CONSTANT)
Q_PROPERTY(QStringList flightModes READ flightModes CONSTANT) Q_PROPERTY(QStringList flightModes READ flightModes CONSTANT)
Q_PROPERTY(QString flightMode READ flightMode WRITE setFlightMode NOTIFY flightModeChanged) Q_PROPERTY(QString flightMode READ flightMode WRITE setFlightMode NOTIFY flightModeChanged)
...@@ -588,6 +589,7 @@ public: ...@@ -588,6 +589,7 @@ public:
unsigned int telemetryTXBuffer () { return _telemetryTXBuffer; } unsigned int telemetryTXBuffer () { return _telemetryTXBuffer; }
unsigned int telemetryLNoise () { return _telemetryLNoise; } unsigned int telemetryLNoise () { return _telemetryLNoise; }
unsigned int telemetryRNoise () { return _telemetryRNoise; } unsigned int telemetryRNoise () { return _telemetryRNoise; }
bool autoDisarm ();
Fact* roll (void) { return &_rollFact; } Fact* roll (void) { return &_rollFact; }
Fact* heading (void) { return &_headingFact; } Fact* heading (void) { return &_headingFact; }
...@@ -717,6 +719,7 @@ signals: ...@@ -717,6 +719,7 @@ signals:
void telemetryTXBufferChanged (unsigned int value); void telemetryTXBufferChanged (unsigned int value);
void telemetryLNoiseChanged (unsigned int value); void telemetryLNoiseChanged (unsigned int value);
void telemetryRNoiseChanged (unsigned int value); void telemetryRNoiseChanged (unsigned int value);
void autoDisarmChanged (void);
void firmwareMajorVersionChanged(int major); void firmwareMajorVersionChanged(int major);
void firmwareMinorVersionChanged(int minor); void firmwareMinorVersionChanged(int minor);
...@@ -825,6 +828,7 @@ private: ...@@ -825,6 +828,7 @@ private:
void _updatePriorityLink(void); void _updatePriorityLink(void);
void _commonInit(void); void _commonInit(void);
void _startMissionRequest(void); void _startMissionRequest(void);
void _setupAutoDisarmSignalling(void);
int _id; ///< Mavlink system id int _id; ///< Mavlink system id
int _defaultComponentId; int _defaultComponentId;
......
...@@ -265,12 +265,16 @@ Item { ...@@ -265,12 +265,16 @@ Item {
anchors.top: parent.top anchors.top: parent.top
opacity: planToolBar.visible ? 0 : 1 opacity: planToolBar.visible ? 0 : 1
z: QGroundControl.zOrderTopMost z: QGroundControl.zOrderTopMost
Component.onCompleted: ScreenTools.availableHeight = parent.height - toolBar.height Component.onCompleted: ScreenTools.availableHeight = parent.height - toolBar.height
onShowSettingsView: mainWindow.showSettingsView() onShowSettingsView: mainWindow.showSettingsView()
onShowSetupView: mainWindow.showSetupView() onShowSetupView: mainWindow.showSetupView()
onShowPlanView: mainWindow.showPlanView() onShowPlanView: mainWindow.showPlanView()
onShowFlyView: mainWindow.showFlyView() onShowFlyView: mainWindow.showFlyView()
onShowAnalyzeView: mainWindow.showAnalyzeView() onShowAnalyzeView: mainWindow.showAnalyzeView()
onArmVehicle: flightView.guidedController.confirmAction(flightView.guidedController.actionArm)
onDisarmVehicle: flightView.guidedController.confirmAction(flightView.guidedController.actionDisarm)
//-- Entire tool bar area disable on cammand //-- Entire tool bar area disable on cammand
MouseArea { MouseArea {
id: toolbarBlocker id: toolbarBlocker
......
/****************************************************************************
*
* (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.3
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.2
import QGroundControl 1.0
import QGroundControl.Controls 1.0
import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Palette 1.0
//-------------------------------------------------------------------------
//-- Armed Indicator
QGCLabel {
anchors.top: parent.top
anchors.bottom: parent.bottom
verticalAlignment: Text.AlignVCenter
text: _armed ? qsTr("Armed") : qsTr("Disarmed")
font.pointSize: ScreenTools.mediumFontPointSize
color: qgcPal.buttonText
visible: !_autoDisarm || _fixedWing
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property bool _autoDisarm: _activeVehicle ? _activeVehicle.autoDisarm : false
property bool _fixedWing: _activeVehicle ? _activeVehicle.fixedWing : false
property bool _armed: _activeVehicle ? _activeVehicle.armed : false
QGCPalette { id: qgcPal }
QGCMouseArea {
fillItem: parent
onClicked: _armed ? toolBar.disarmVehicle() : toolBar.armVehicle()
}
}
...@@ -31,6 +31,8 @@ Rectangle { ...@@ -31,6 +31,8 @@ Rectangle {
signal showPlanView signal showPlanView
signal showFlyView signal showFlyView
signal showAnalyzeView signal showAnalyzeView
signal armVehicle
signal disarmVehicle
function checkSettingsButton() { function checkSettingsButton() {
settingsButton.checked = true settingsButton.checked = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment