Unverified Commit 3436500f authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #7235 from DonLakeFlyer/PX4HITL

PX4: Warn if HITL is enabled on vehicle
parents efd77cee 480f09bb
...@@ -134,14 +134,10 @@ void PX4AutoPilotPlugin::parametersReadyPreChecks(void) ...@@ -134,14 +134,10 @@ void PX4AutoPilotPlugin::parametersReadyPreChecks(void)
// Base class must be called // Base class must be called
AutoPilotPlugin::parametersReadyPreChecks(); AutoPilotPlugin::parametersReadyPreChecks();
// Check for older parameter version set QString hitlParam("SYS_HITL");
// FIXME: Firmware is moving to version stamp parameter set. Once that is complete the version stamp if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, hitlParam) &&
// should be used instead. _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, hitlParam)->rawValue().toBool()) {
if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "SENS_GYRO_XOFF") || qgcApp()->showMessage(tr("Warning: Hardware In The Loop (HITL) simulation is enabled for this vehicle."));
_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "COM_DL_LOSS_EN")) {
_incorrectParameterVersion = true;
qgcApp()->showMessage(tr("This version of GroundControl can only perform vehicle setup on a newer version of firmware. "
"Please perform a Firmware Upgrade if you wish to use Vehicle Setup."));
} }
} }
......
...@@ -29,13 +29,15 @@ SetupPage { ...@@ -29,13 +29,15 @@ SetupPage {
Item { Item {
width: Math.max(availableWidth, outerGrid.width) width: Math.max(availableWidth, outerGrid.width)
height: lastRect.y + lastRect.height height: _hitlAvailable ? (lastRect.y + lastRect.height) : (otherLastRect.y + otherLastRect.height)
FactPanelController { FactPanelController {
id: controller id: controller
factPanel: safetyPage.viewPanel factPanel: safetyPage.viewPanel
} }
readonly property string hitlParam: "SYS_HITL"
property real _margins: ScreenTools.defaultFontPixelHeight property real _margins: ScreenTools.defaultFontPixelHeight
property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20
property real _imageWidth: ScreenTools.defaultFontPixelWidth * 15 property real _imageWidth: ScreenTools.defaultFontPixelWidth * 15
...@@ -50,18 +52,11 @@ SetupPage { ...@@ -50,18 +52,11 @@ SetupPage {
property Fact _dlLossAction: controller.getParameterFact(-1, "NAV_DLL_ACT") property Fact _dlLossAction: controller.getParameterFact(-1, "NAV_DLL_ACT")
property Fact _disarmLandDelay: controller.getParameterFact(-1, "COM_DISARM_LAND") property Fact _disarmLandDelay: controller.getParameterFact(-1, "COM_DISARM_LAND")
property Fact _landSpeedMC: controller.getParameterFact(-1, "MPC_LAND_SPEED", false) property Fact _landSpeedMC: controller.getParameterFact(-1, "MPC_LAND_SPEED", false)
property Fact _hitlEnabled: controller.getParameterFact(-1, "SYS_HITL", false) property bool _hitlAvailable: controller.parameterExists(-1, hitlParam)
property Fact _hitlEnabled: controller.getParameterFact(-1, hitlParam, false)
ExclusiveGroup { id: homeLoiterGroup } ExclusiveGroup { id: homeLoiterGroup }
Rectangle {
x: hitlGrid.x + outerGrid.x - _margins
y: hitlGrid.y + outerGrid.y - _margins
width: hitlGrid.width + (_margins * 2)
height: hitlGrid.height + (_margins * 2)
color: qgcPal.windowShade
}
Rectangle { Rectangle {
x: lowBattGrid.x + outerGrid.x - _margins x: lowBattGrid.x + outerGrid.x - _margins
y: lowBattGrid.y + outerGrid.y - _margins y: lowBattGrid.y + outerGrid.y - _margins
...@@ -103,7 +98,7 @@ SetupPage { ...@@ -103,7 +98,7 @@ SetupPage {
} }
Rectangle { Rectangle {
id: lastRect id: otherLastRect
x: landModeGrid.x + outerGrid.x - _margins x: landModeGrid.x + outerGrid.x - _margins
y: landModeGrid.y + outerGrid.y - _margins y: landModeGrid.y + outerGrid.y - _margins
width: landModeGrid.width + (_margins * 2) width: landModeGrid.width + (_margins * 2)
...@@ -111,48 +106,21 @@ SetupPage { ...@@ -111,48 +106,21 @@ SetupPage {
color: qgcPal.windowShade color: qgcPal.windowShade
} }
Rectangle {
id: lastRect
x: hitlGrid.x + outerGrid.x - _margins
y: hitlGrid.y + outerGrid.y - _margins
width: hitlGrid.width + (_margins * 2)
height: hitlGrid.height + (_margins * 2)
color: qgcPal.windowShade
visible: _hitlAvailable
}
GridLayout { GridLayout {
id: outerGrid id: outerGrid
columns: 3 columns: 3
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
QGCLabel {
text: qsTr("Hardware in the Loop Simulation")
Layout.columnSpan: 3
}
Item { width: 1; height: _margins; Layout.columnSpan: 3 }
Item { width: _margins; height: 1 }
GridLayout {
id: hitlGrid
columns: 3
Image {
mipmap: true
fillMode: Image.PreserveAspectFit
source: qgcPal.globalTheme === qgcPal.Light ? "/qmlimages/VehicleSummaryIcon.png" : "/qmlimages/VehicleSummaryIcon.png"
Layout.rowSpan: 3
Layout.maximumWidth: _imageWidth
Layout.maximumHeight: _imageHeight
width: _imageWidth
height: _imageHeight
}
QGCLabel {
text: qsTr("HITL Enabled:")
Layout.fillWidth: true
}
FactComboBox {
fact: _hitlEnabled
indexModel: false
Layout.minimumWidth: _editFieldWidth
}
}
Item { width: 1; height: _margins; Layout.columnSpan: 3 }
QGCLabel { QGCLabel {
text: qsTr("Low Battery Failsafe Trigger") text: qsTr("Low Battery Failsafe Trigger")
Layout.columnSpan: 3 Layout.columnSpan: 3
...@@ -517,6 +485,45 @@ SetupPage { ...@@ -517,6 +485,45 @@ SetupPage {
Layout.minimumWidth: _editFieldWidth Layout.minimumWidth: _editFieldWidth
} }
} }
Item { width: 1; height: _margins; Layout.columnSpan: 3; visible: _hitlAvailable }
QGCLabel {
text: qsTr("Hardware in the Loop Simulation")
Layout.columnSpan: 3
visible: _hitlAvailable
}
Item { width: 1; height: _margins; Layout.columnSpan: 3; visible: _hitlAvailable }
Item { width: _margins; height: 1; visible: _hitlAvailable }
GridLayout {
id: hitlGrid
columns: 3
visible: _hitlAvailable
Image {
mipmap: true
fillMode: Image.PreserveAspectFit
source: qgcPal.globalTheme === qgcPal.Light ? "/qmlimages/VehicleSummaryIcon.png" : "/qmlimages/VehicleSummaryIcon.png"
Layout.rowSpan: 3
Layout.maximumWidth: _imageWidth
Layout.maximumHeight: _imageHeight
width: _imageWidth
height: _imageHeight
}
QGCLabel {
text: qsTr("HITL Enabled:")
Layout.fillWidth: true
}
FactComboBox {
fact: _hitlEnabled
indexModel: false
Layout.minimumWidth: _editFieldWidth
}
}
} }
} }
} }
......
...@@ -37,7 +37,7 @@ JoystickManager::JoystickManager(QGCApplication* app, QGCToolbox* toolbox) ...@@ -37,7 +37,7 @@ JoystickManager::JoystickManager(QGCApplication* app, QGCToolbox* toolbox)
JoystickManager::~JoystickManager() { JoystickManager::~JoystickManager() {
QMap<QString, Joystick*>::iterator i; QMap<QString, Joystick*>::iterator i;
for (i = _name2JoystickMap.begin(); i != _name2JoystickMap.end(); ++i) { for (i = _name2JoystickMap.begin(); i != _name2JoystickMap.end(); ++i) {
qDebug() << "Releasing joystick:" << i.key(); qCDebug(JoystickManagerLog) << "Releasing joystick:" << i.key();
delete i.value(); delete i.value();
} }
qDebug() << "Done"; qDebug() << "Done";
......
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