From 082234361b99d334e2f6403a3b82523815692bf7 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 19 Dec 2015 22:55:45 -0800 Subject: [PATCH 1/2] Support enumInfo --- src/FirmwarePlugin/APM/APMParameterMetaData.cc | 31 ++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/FirmwarePlugin/APM/APMParameterMetaData.cc b/src/FirmwarePlugin/APM/APMParameterMetaData.cc index 967fd1c..4a62977 100644 --- a/src/FirmwarePlugin/APM/APMParameterMetaData.cc +++ b/src/FirmwarePlugin/APM/APMParameterMetaData.cc @@ -215,7 +215,7 @@ void APMParameterMetaData::_loadParameterFactMetaData() // so not setting currentCategory xmlState.push(XmlStateFoundParameters); } else { - qCDebug(APMParameterMetaDataLog) << "not interested in this block of parameters skip"; + qCDebug(APMParameterMetaDataLog) << "not interested in this block of parameters, skipping:" << nameValue; if (skipXMLBlock(xml, "parameters")) { qCWarning(APMParameterMetaDataLog) << "something wrong with the xml, skip of the xml failed"; return; @@ -461,6 +461,33 @@ void APMParameterMetaData::addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType) } } - // FixMe:: not handling values and increment size as their is no place for them in FactMetaData and no ui + if (rawMetaData->values.count() > 0) { + QStringList enumStrings; + QVariantList enumValues; + + for (int i=0; ivalues.count(); i++) { + QVariant enumValue; + QString errorString; + QPair enumPair = rawMetaData->values[i]; + + if (metaData->convertAndValidate(enumPair.first, false /* validate */, enumValue, errorString)) { + enumValues << enumValue; + enumStrings << enumPair.second; + } else { + qCDebug(APMParameterMetaDataLog) << "Invalid enum value, name:" << metaData->name() + << " type:" << metaData->type() << " value:" << enumPair.first + << " error:" << errorString; + enumStrings.clear(); + enumValues.clear(); + break; + } + } + + if (enumStrings.count() != 0) { + metaData->setEnumInfo(enumStrings, enumValues); + } + } + + // FixMe:: not handling increment size as their is no place for it in FactMetaData and no ui fact->setMetaData(metaData); } From 01ff99bff0b3066e4abfb13207afea792ae389b5 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 19 Dec 2015 22:56:02 -0800 Subject: [PATCH 2/2] APM Power Config --- qgroundcontrol.pro | 6 +- qgroundcontrol.qrc | 2 + src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc | 10 + src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h | 3 + src/AutoPilotPlugins/APM/APMPowerComponent.cc | 86 +++++++ src/AutoPilotPlugins/APM/APMPowerComponent.h | 54 +++++ src/AutoPilotPlugins/APM/APMPowerComponent.qml | 251 +++++++++++++++++++++ .../APM/APMPowerComponentController.cc | 174 ++++++++++++++ .../APM/APMPowerComponentController.h | 70 ++++++ .../APM/APMPowerComponentSummary.qml | 57 +++++ src/AutoPilotPlugins/PX4/SafetyComponent.cc | 1 - src/FactSystem/FactControls/FactTextField.qml | 6 +- 12 files changed, 715 insertions(+), 5 deletions(-) create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponent.cc create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponent.h create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponent.qml create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponentController.cc create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponentController.h create mode 100644 src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 589b3e3..e6f7fcd 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -559,9 +559,10 @@ HEADERS+= \ src/AutoPilotPlugins/APM/APMAirframeComponentController.h \ src/AutoPilotPlugins/APM/APMAirframeComponentAirframes.h \ src/AutoPilotPlugins/APM/APMComponent.h \ - src/AutoPilotPlugins/APM/APMRadioComponent.h \ src/AutoPilotPlugins/APM/APMFlightModesComponent.h \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.h \ + src/AutoPilotPlugins/APM/APMPowerComponent.h \ + src/AutoPilotPlugins/APM/APMRadioComponent.h \ src/AutoPilotPlugins/APM/APMSafetyComponent.h \ src/AutoPilotPlugins/APM/APMSensorsComponent.h \ src/AutoPilotPlugins/APM/APMSensorsComponentController.h \ @@ -611,9 +612,10 @@ SOURCES += \ src/AutoPilotPlugins/APM/APMAirframeComponent.cc \ src/AutoPilotPlugins/APM/APMAirframeComponentController.cc \ src/AutoPilotPlugins/APM/APMComponent.cc \ - src/AutoPilotPlugins/APM/APMRadioComponent.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponent.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc \ + src/AutoPilotPlugins/APM/APMPowerComponent.cc \ + src/AutoPilotPlugins/APM/APMRadioComponent.cc \ src/AutoPilotPlugins/APM/APMSafetyComponent.cc \ src/AutoPilotPlugins/APM/APMSensorsComponent.cc \ src/AutoPilotPlugins/APM/APMSensorsComponentController.cc \ diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 61848f0..ae36d21 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -106,6 +106,8 @@ src/AutoPilotPlugins/Common/RadioComponent.qml src/AutoPilotPlugins/PX4/PX4RadioComponentSummary.qml src/AutoPilotPlugins/APM/APMNotSupported.qml + src/AutoPilotPlugins/APM/APMPowerComponent.qml + src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml src/AutoPilotPlugins/APM/APMRadioComponentSummary.qml src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc index d8254a3..338ce0d 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc @@ -38,6 +38,7 @@ #include "APMSafetyComponent.h" #include "APMTuningComponent.h" #include "APMSensorsComponent.h" +#include "APMPowerComponent.h" /// This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_ARDUPILOT type. APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) @@ -45,6 +46,7 @@ APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) , _incorrectParameterVersion(false) , _airframeComponent(NULL) , _flightModesComponent(NULL) + , _powerComponent(NULL) , _radioComponent(NULL) , _safetyComponent(NULL) , _sensorsComponent(NULL) @@ -83,6 +85,14 @@ const QVariantList& APMAutoPilotPlugin::vehicleComponents(void) qWarning() << "new APMFlightModesComponent failed"; } + _powerComponent = new APMPowerComponent(_vehicle, this); + if (_powerComponent) { + _powerComponent->setupTriggerSignals(); + _components.append(QVariant::fromValue((VehicleComponent*)_powerComponent)); + } else { + qWarning() << "new APMPowerComponent failed"; + } + _radioComponent = new APMRadioComponent(_vehicle, this); if (_radioComponent) { _radioComponent->setupTriggerSignals(); diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h index 1102cf1..9eedfe9 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h @@ -34,6 +34,7 @@ class APMRadioComponent; class APMTuningComponent; class APMSafetyComponent; class APMSensorsComponent; +class APMPowerComponent; /// This is the APM specific implementation of the AutoPilot class. class APMAutoPilotPlugin : public AutoPilotPlugin @@ -49,6 +50,7 @@ public: APMAirframeComponent* airframeComponent (void) { return _airframeComponent; } APMFlightModesComponent* flightModesComponent(void) { return _flightModesComponent; } + APMPowerComponent* powerComponent (void) { return _powerComponent; } APMRadioComponent* radioComponent (void) { return _radioComponent; } APMSafetyComponent* safetyComponent (void) { return _safetyComponent; } APMSensorsComponent* sensorsComponent (void) { return _sensorsComponent; } @@ -64,6 +66,7 @@ private: APMAirframeComponent* _airframeComponent; APMFlightModesComponent* _flightModesComponent; + APMPowerComponent* _powerComponent; APMRadioComponent* _radioComponent; APMSafetyComponent* _safetyComponent; APMSensorsComponent* _sensorsComponent; diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.cc b/src/AutoPilotPlugins/APM/APMPowerComponent.cc new file mode 100644 index 0000000..8f5203b --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.cc @@ -0,0 +1,86 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2015 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +#include "APMPowerComponent.h" +#include "APMAutoPilotPlugin.h" +#include "APMAirframeComponent.h" + +APMPowerComponent::APMPowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) + : APMComponent(vehicle, autopilot, parent), + _name("Power") +{ +} + +QString APMPowerComponent::name(void) const +{ + return _name; +} + +QString APMPowerComponent::description(void) const +{ + return tr("The Power Component is used to setup battery parameters."); +} + +QString APMPowerComponent::iconResource(void) const +{ + return "/qmlimages/PowerComponentIcon.png"; +} + +bool APMPowerComponent::requiresSetup(void) const +{ + return true; +} + +bool APMPowerComponent::setupComplete(void) const +{ + return _autopilot->getParameterFact(FactSystem::defaultComponentId, "BATT_CAPACITY")->rawValue().toInt() != 0; +} + +QStringList APMPowerComponent::setupCompleteChangedTriggerList(void) const +{ + QStringList list; + + list << "BATT_CAPACITY"; + + return list; +} + +QUrl APMPowerComponent::setupSource(void) const +{ + return QUrl::fromUserInput("qrc:/qml/APMPowerComponent.qml"); +} + +QUrl APMPowerComponent::summaryQmlSource(void) const +{ + return QUrl::fromUserInput("qrc:/qml/APMPowerComponentSummary.qml"); +} + +QString APMPowerComponent::prerequisiteSetup(void) const +{ + APMAutoPilotPlugin* plugin = dynamic_cast(_autopilot); + Q_ASSERT(plugin); + if (!plugin->airframeComponent()->setupComplete()) { + return plugin->airframeComponent()->name(); + } + return QString(); +} diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.h b/src/AutoPilotPlugins/APM/APMPowerComponent.h new file mode 100644 index 0000000..6c77b28 --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.h @@ -0,0 +1,54 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2015 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +#ifndef APMPowerComponent_H +#define APMPowerComponent_H + +#include "APMComponent.h" + +class APMPowerComponent : public APMComponent +{ + Q_OBJECT + +public: + APMPowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); + + // Virtuals from PX4Component + virtual QStringList setupCompleteChangedTriggerList(void) const; + + // Virtuals from VehicleComponent + virtual QString name (void) const; + virtual QString description (void) const; + virtual QString iconResource (void) const; + virtual bool requiresSetup (void) const; + virtual bool setupComplete (void) const; + virtual QUrl setupSource (void) const; + virtual QUrl summaryQmlSource (void) const; + virtual QString prerequisiteSetup (void) const; + +private: + const QString _name; + QVariantList _summaryItems; +}; + +#endif diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.qml b/src/AutoPilotPlugins/APM/APMPowerComponent.qml new file mode 100644 index 0000000..37f0aa6 --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.qml @@ -0,0 +1,251 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2015 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +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 + +QGCView { + id: rootQGCView + viewPanel: panel + + property Fact battAmpPerVolt: controller.getParameterFact(-1, "BATT_AMP_PERVOLT") + property Fact battCapacity: controller.getParameterFact(-1, "BATT_CAPACITY") + property Fact battCurrPin: controller.getParameterFact(-1, "BATT_CURR_PIN") + property Fact battMonitor: controller.getParameterFact(-1, "BATT_MONITOR") + property Fact battVoltMult: controller.getParameterFact(-1, "BATT_VOLT_MULT") + property Fact battVoltPin: controller.getParameterFact(-1, "BATT_VOLT_PIN") + + property real _margins: ScreenTools.defaultFontPixelHeight + property bool _showAdvanced: sensorCombo.currentIndex == sensorModel.count - 1 + + Component.onCompleted: calcSensor() + + function calcSensor() { + for (var i=0; i + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// @file +/// @author Don Gagne + +#include "PowerComponentController.h" +#include "QGCMAVLink.h" +#include "UAS.h" + +#include +#include + +PowerComponentController::PowerComponentController(void) +{ + +} + +PowerComponentController::~PowerComponentController() +{ + _stopCalibration(); +} + +void PowerComponentController::calibrateEsc(void) +{ + _warningMessages.clear(); + connect(_uas, &UASInterface::textMessageReceived, this, &PowerComponentController::_handleUASTextMessage); + _uas->startCalibration(UASInterface::StartCalibrationEsc); +} + +void PowerComponentController::busConfigureActuators(void) +{ + _warningMessages.clear(); + connect(_uas, &UASInterface::textMessageReceived, this, &PowerComponentController::_handleUASTextMessage); + _uas->startBusConfig(UASInterface::StartBusConfigActuators); +} + +void PowerComponentController::stopBusConfigureActuators(void) +{ + disconnect(_uas, &UASInterface::textMessageReceived, this, &PowerComponentController::_handleUASTextMessage); + _uas->startBusConfig(UASInterface::EndBusConfigActuators); +} + +void PowerComponentController::_stopCalibration(void) +{ + disconnect(_uas, &UASInterface::textMessageReceived, this, &PowerComponentController::_handleUASTextMessage); +} + +void PowerComponentController::_stopBusConfig(void) +{ + _stopCalibration(); +} + +void PowerComponentController::_handleUASTextMessage(int uasId, int compId, int severity, QString text) +{ + Q_UNUSED(compId); + Q_UNUSED(severity); + + UASInterface* uas = _autopilot->vehicle()->uas(); + Q_ASSERT(uas); + if (uasId != uas->getUASID()) { + return; + } + + // All calibration messages start with [cal] + QString calPrefix("[cal] "); + if (!text.startsWith(calPrefix)) { + return; + } + text = text.right(text.length() - calPrefix.length()); + + // Make sure we can understand this firmware rev + QString calStartPrefix("calibration started: "); + if (text.startsWith(calStartPrefix)) { + text = text.right(text.length() - calStartPrefix.length()); + + // Split version number and cal type + QStringList parts = text.split(" "); + if (parts.count() != 2) { + emit incorrectFirmwareRevReporting(); + return; + } + +#if 0 + // FIXME: Cal version check is not working. Needs to be able to cancel, calibration + + int firmwareRev = parts[0].toInt(); + if (firmwareRev < _neededFirmwareRev) { + emit oldFirmware(); + return; + } + if (firmwareRev > _neededFirmwareRev) { + emit newerFirmware(); + return; + } +#endif + } + + if (text == "Connect battery now") { + emit connectBattery(); + return; + } + + if (text == "Battery connected") { + emit batteryConnected(); + return; + } + + + QString failedPrefix("calibration failed: "); + if (text.startsWith(failedPrefix)) { + QString failureText = text.right(text.length() - failedPrefix.length()); + if (failureText.startsWith("Disconnect battery")) { + emit disconnectBattery(); + return; + } + + _stopCalibration(); + emit calibrationFailed(text.right(text.length() - failedPrefix.length())); + return; + } + + QString calCompletePrefix("calibration done:"); + if (text.startsWith(calCompletePrefix)) { + _stopCalibration(); + emit calibrationSuccess(_warningMessages); + return; + } + + QString warningPrefix("config warning: "); + if (text.startsWith(warningPrefix)) { + _warningMessages << text.right(text.length() - warningPrefix.length()); + } + + QString busFailedPrefix("bus conf fail:"); + if (text.startsWith(busFailedPrefix)) { + + _stopBusConfig(); + emit calibrationFailed(text.right(text.length() - failedPrefix.length())); + return; + } + + QString busCompletePrefix("bus conf done:"); + if (text.startsWith(calCompletePrefix)) { + _stopBusConfig(); + emit calibrationSuccess(_warningMessages); + return; + } + + QString busWarningPrefix("bus conf warn: "); + if (text.startsWith(busWarningPrefix)) { + _warningMessages << text.right(text.length() - warningPrefix.length()); + } +} diff --git a/src/AutoPilotPlugins/APM/APMPowerComponentController.h b/src/AutoPilotPlugins/APM/APMPowerComponentController.h new file mode 100644 index 0000000..5e608c7 --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMPowerComponentController.h @@ -0,0 +1,70 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009, 2015 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// @file +/// @author Don Gagne + +#ifndef PowerComponentController_H +#define PowerComponentController_H + +#include +#include + +#include "UASInterface.h" +#include "FactPanelController.h" + +/// Power Component MVC Controller for PowerComponent.qml. +class PowerComponentController : public FactPanelController +{ + Q_OBJECT + +public: + PowerComponentController(void); + ~PowerComponentController(); + + Q_INVOKABLE void calibrateEsc(void); + Q_INVOKABLE void busConfigureActuators(void); + Q_INVOKABLE void stopBusConfigureActuators(void); + +signals: + void oldFirmware(void); + void newerFirmware(void); + void incorrectFirmwareRevReporting(void); + void connectBattery(void); + void disconnectBattery(void); + void batteryConnected(void); + void calibrationFailed(const QString& errorMessage); + void calibrationSuccess(const QStringList& warningMessages); + +private slots: + void _handleUASTextMessage(int uasId, int compId, int severity, QString text); + +private: + void _stopCalibration(void); + void _stopBusConfig(void); + + QStringList _warningMessages; + static const int _neededFirmwareRev = 1; +}; + +#endif diff --git a/src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml b/src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml new file mode 100644 index 0000000..2575a6d --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml @@ -0,0 +1,57 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2015 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +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 battCapacity: controller.getParameterFact(-1, "BATT_CAPACITY") + property Fact battMonitor: controller.getParameterFact(-1, "BATT_MONITOR") + + Column { + anchors.fill: parent + anchors.margins: 8 + + VehicleSummaryRow { + labelText: "Battery monitor:" + valueText: battMonitor.enumStringValue + } + + VehicleSummaryRow { + labelText: "Battery capacity:" + valueText: battCapacity.valueString + } + } +} diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.cc b/src/AutoPilotPlugins/PX4/SafetyComponent.cc index 5233074..26ab7c4 100644 --- a/src/AutoPilotPlugins/PX4/SafetyComponent.cc +++ b/src/AutoPilotPlugins/PX4/SafetyComponent.cc @@ -25,7 +25,6 @@ /// @author Don Gagne #include "SafetyComponent.h" -#include "QGCQmlWidgetHolder.h" #include "PX4AutoPilotPlugin.h" SafetyComponent::SafetyComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) : diff --git a/src/FactSystem/FactControls/FactTextField.qml b/src/FactSystem/FactControls/FactTextField.qml index f4afbe8..aa7050a 100644 --- a/src/FactSystem/FactControls/FactTextField.qml +++ b/src/FactSystem/FactControls/FactTextField.qml @@ -11,11 +11,13 @@ import QGroundControl.Controls 1.0 QGCTextField { id: _textField + text: fact.valueString + unitsLabel: fact.units + showUnits: true + property Fact fact: null property string _validateString - text: fact.valueString - unitsLabel: fact.units // At this point all Facts are numeric inputMethodHints: Qt.ImhFormattedNumbersOnly