From 2487abfb9d9ca537b0ec0b35425538153404b84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Sat, 26 May 2018 13:25:03 +0200 Subject: [PATCH] px4 sensor setup: replace ATT_W_MAG with SYS_HAS_MAG and check if param exists --- src/AutoPilotPlugins/PX4/SensorsComponent.cc | 12 ++++++++---- src/AutoPilotPlugins/PX4/SensorsComponent.h | 2 +- src/AutoPilotPlugins/PX4/SensorsSetup.qml | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/AutoPilotPlugins/PX4/SensorsComponent.cc b/src/AutoPilotPlugins/PX4/SensorsComponent.cc index d90a71ebc..0a2d96752 100644 --- a/src/AutoPilotPlugins/PX4/SensorsComponent.cc +++ b/src/AutoPilotPlugins/PX4/SensorsComponent.cc @@ -20,7 +20,7 @@ const char* SensorsComponent::_airspeedBreakerParam = "CBRK_AIRSPD_CHK"; const char* SensorsComponent::_airspeedDisabledParam = "FW_ARSP_MODE"; const char* SensorsComponent::_airspeedCalParam = "SENS_DPRES_OFF"; -const char* SensorsComponent::_magDisabledParam = "ATT_W_MAG"; +const char* SensorsComponent::_magEnabledParam = "SYS_HAS_MAG"; const char* SensorsComponent::_magCalParam = "CAL_MAG0_ID"; SensorsComponent::SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) : @@ -57,8 +57,12 @@ bool SensorsComponent::setupComplete(void) const return false; } } - if (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _magDisabledParam)->rawValue().toInt() != 0 && - _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _magCalParam)->rawValue().toFloat() == 0.0f) { + bool magEnabled = true; + if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _magEnabledParam)) { + magEnabled = _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _magEnabledParam)->rawValue().toBool(); + } + + if (magEnabled && _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _magCalParam)->rawValue().toFloat() == 0.0f) { return false; } @@ -77,7 +81,7 @@ QStringList SensorsComponent::setupCompleteChangedTriggerList(void) const { QStringList triggers; - triggers << _deviceIds << _magCalParam << _magDisabledParam; + triggers << _deviceIds << _magCalParam << _magEnabledParam; if (_vehicle->fixedWing() || _vehicle->vtol()) { triggers << _airspeedCalParam << _airspeedBreakerParam; } diff --git a/src/AutoPilotPlugins/PX4/SensorsComponent.h b/src/AutoPilotPlugins/PX4/SensorsComponent.h index 774b56c0a..13baae45d 100644 --- a/src/AutoPilotPlugins/PX4/SensorsComponent.h +++ b/src/AutoPilotPlugins/PX4/SensorsComponent.h @@ -45,7 +45,7 @@ private: static const char* _airspeedBreakerParam; static const char* _airspeedCalParam; - static const char* _magDisabledParam; + static const char* _magEnabledParam; static const char* _magCalParam; }; diff --git a/src/AutoPilotPlugins/PX4/SensorsSetup.qml b/src/AutoPilotPlugins/PX4/SensorsSetup.qml index 50b3da23f..028973fbf 100644 --- a/src/AutoPilotPlugins/PX4/SensorsSetup.qml +++ b/src/AutoPilotPlugins/PX4/SensorsSetup.qml @@ -365,12 +365,12 @@ Item { spacing: ScreenTools.defaultFontPixelHeight / 2 IndicatorButton { + property bool _hasMag: controller.parameterExists(-1, "SYS_HAS_MAG") ? controller.getParameterFact(-1, "SYS_HAS_MAG").value !== 0 : true id: compassButton width: _buttonWidth text: qsTr("Compass") indicatorGreen: cal_mag0_id.value !== 0 - visible: controller.getParameterFact(-1, "ATT_W_MAG").value !== 0 && - QGroundControl.corePlugin.options.showSensorCalibrationCompass && showSensorCalibrationCompass + visible: _hasMag && QGroundControl.corePlugin.options.showSensorCalibrationCompass && showSensorCalibrationCompass onClicked: { preCalibrationDialogType = "compass" -- 2.22.0