diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc index ca98155a1c91e99a7d95c688349c16aea71a3de9..adfe990e19d024a6616be66a1ea87ddb5aa960c1 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc @@ -134,14 +134,10 @@ void PX4AutoPilotPlugin::parametersReadyPreChecks(void) // Base class must be called AutoPilotPlugin::parametersReadyPreChecks(); - // Check for older parameter version set - // FIXME: Firmware is moving to version stamp parameter set. Once that is complete the version stamp - // should be used instead. - if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "SENS_GYRO_XOFF") || - _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.")); + QString hitlParam("SYS_HITL"); + if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, hitlParam) && + _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, hitlParam)->rawValue().toBool()) { + qgcApp()->showMessage(tr("Warning: Hardware In The Loop (HITL) simulation is enabled for this vehicle.")); } } diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.qml b/src/AutoPilotPlugins/PX4/SafetyComponent.qml index 4b9e00dca7d2753cbce925dd1066d3e58c61dc9c..a654239aac47ab7d7741e652ad3c48e03fc88e20 100644 --- a/src/AutoPilotPlugins/PX4/SafetyComponent.qml +++ b/src/AutoPilotPlugins/PX4/SafetyComponent.qml @@ -29,13 +29,15 @@ SetupPage { Item { width: Math.max(availableWidth, outerGrid.width) - height: lastRect.y + lastRect.height + height: _hitlAvailable ? (lastRect.y + lastRect.height) : (otherLastRect.y + otherLastRect.height) FactPanelController { id: controller factPanel: safetyPage.viewPanel } + readonly property string hitlParam: "SYS_HITL" + property real _margins: ScreenTools.defaultFontPixelHeight property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20 property real _imageWidth: ScreenTools.defaultFontPixelWidth * 15 @@ -50,18 +52,11 @@ SetupPage { property Fact _dlLossAction: controller.getParameterFact(-1, "NAV_DLL_ACT") property Fact _disarmLandDelay: controller.getParameterFact(-1, "COM_DISARM_LAND") 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 } - 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 { x: lowBattGrid.x + outerGrid.x - _margins y: lowBattGrid.y + outerGrid.y - _margins @@ -103,7 +98,7 @@ SetupPage { } Rectangle { - id: lastRect + id: otherLastRect x: landModeGrid.x + outerGrid.x - _margins y: landModeGrid.y + outerGrid.y - _margins width: landModeGrid.width + (_margins * 2) @@ -111,48 +106,21 @@ SetupPage { 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 { id: outerGrid columns: 3 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 { text: qsTr("Low Battery Failsafe Trigger") Layout.columnSpan: 3 @@ -517,6 +485,45 @@ SetupPage { 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 + } + } } } } diff --git a/src/Joystick/JoystickManager.cc b/src/Joystick/JoystickManager.cc index 1cac13960e590b2b8424914a6e0a0b3d713a5f44..4bac8564b20423a520b9db14d2fdbfa10555d53d 100644 --- a/src/Joystick/JoystickManager.cc +++ b/src/Joystick/JoystickManager.cc @@ -37,7 +37,7 @@ JoystickManager::JoystickManager(QGCApplication* app, QGCToolbox* toolbox) JoystickManager::~JoystickManager() { QMap::iterator i; for (i = _name2JoystickMap.begin(); i != _name2JoystickMap.end(); ++i) { - qDebug() << "Releasing joystick:" << i.key(); + qCDebug(JoystickManagerLog) << "Releasing joystick:" << i.key(); delete i.value(); } qDebug() << "Done";