12 changed files with 715 additions and 5 deletions
@ -0,0 +1,86 @@ |
|||||||
|
/*=====================================================================
|
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
#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<APMAutoPilotPlugin*>(_autopilot); |
||||||
|
Q_ASSERT(plugin); |
||||||
|
if (!plugin->airframeComponent()->setupComplete()) { |
||||||
|
return plugin->airframeComponent()->name(); |
||||||
|
} |
||||||
|
return QString(); |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
/*=====================================================================
|
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
#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 |
@ -0,0 +1,251 @@ |
|||||||
|
/*===================================================================== |
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
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<sensorModel.count - 1; i++) { |
||||||
|
if (sensorModel.get(i).voltPin == battVoltPin.value && |
||||||
|
sensorModel.get(i).currPin == battCurrPin.value && |
||||||
|
Math.abs(sensorModel.get(i).voltMult - battVoltMult.value) < 0.001 && |
||||||
|
Math.abs(sensorModel.get(i).ampPerVolt - battAmpPerVolt.value) < 0.0001) { |
||||||
|
sensorCombo.currentIndex = i |
||||||
|
return |
||||||
|
} |
||||||
|
} |
||||||
|
sensorCombo.currentIndex = sensorModel.count - 1 |
||||||
|
} |
||||||
|
|
||||||
|
QGCPalette { id: palette; colorGroupEnabled: panel.enabled } |
||||||
|
|
||||||
|
FactPanelController { id: controller; factPanel: panel } |
||||||
|
|
||||||
|
ListModel { |
||||||
|
id: sensorModel |
||||||
|
|
||||||
|
ListElement { |
||||||
|
text: "Power Module 90A" |
||||||
|
voltPin: 2 |
||||||
|
currPin: 3 |
||||||
|
voltMult: 10.1 |
||||||
|
ampPerVolt: 17.0 |
||||||
|
} |
||||||
|
|
||||||
|
ListElement { |
||||||
|
text: "Power Module HV" |
||||||
|
voltPin: 2 |
||||||
|
currPin: 3 |
||||||
|
voltMult: 12.02 |
||||||
|
ampPerVolt: 39.877 |
||||||
|
} |
||||||
|
|
||||||
|
ListElement { |
||||||
|
text: "3DR Iris" |
||||||
|
voltPin: 2 |
||||||
|
currPin: 3 |
||||||
|
voltMult: 12.02 |
||||||
|
ampPerVolt: 17.0 |
||||||
|
} |
||||||
|
|
||||||
|
ListElement { |
||||||
|
text: "Other" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
QGCViewPanel { |
||||||
|
id: panel |
||||||
|
anchors.fill: parent |
||||||
|
|
||||||
|
Flickable { |
||||||
|
anchors.fill: parent |
||||||
|
clip: true |
||||||
|
contentWidth: capacityField.x + capacityField.width + _margins |
||||||
|
contentHeight: (_showAdvanced ? ampPerVoltField.y + ampPerVoltField.height : sensorCombo.y + sensorCombo.height) + _margins |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: monitorLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: monitorCombo.baseline |
||||||
|
text: "Battery monitor:" |
||||||
|
} |
||||||
|
|
||||||
|
FactComboBox { |
||||||
|
id: monitorCombo |
||||||
|
anchors.topMargin: _margins |
||||||
|
anchors.top: parent.top |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
fact: battMonitor |
||||||
|
indexModel: false |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: capacityLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: capacityField.baseline |
||||||
|
text: "Battery capacity:" |
||||||
|
} |
||||||
|
|
||||||
|
FactTextField { |
||||||
|
id: capacityField |
||||||
|
anchors.leftMargin: _margins |
||||||
|
anchors.topMargin: _margins / 2 |
||||||
|
anchors.top: monitorCombo.bottom |
||||||
|
anchors.left: capacityLabel.right |
||||||
|
width: ScreenTools.defaultFontPixelWidth * 25 |
||||||
|
fact: battCapacity |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: sensorLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: sensorCombo.baseline |
||||||
|
text: "Power sensor:" |
||||||
|
} |
||||||
|
|
||||||
|
QGCComboBox { |
||||||
|
id: sensorCombo |
||||||
|
anchors.topMargin: _margins |
||||||
|
anchors.top: capacityField.bottom |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
model: sensorModel |
||||||
|
|
||||||
|
onActivated: { |
||||||
|
if (index < sensorModel.count - 1) { |
||||||
|
battVoltPin.value = sensorModel.get(index).voltPin |
||||||
|
battCurrPin.value = sensorModel.get(index).currPin |
||||||
|
battVoltMult.value = sensorModel.get(index).voltMult |
||||||
|
battAmpPerVolt.value = sensorModel.get(index).ampPerVolt |
||||||
|
} else { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: currPinLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: currPinCombo.baseline |
||||||
|
text: "Current pin:" |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
FactComboBox { |
||||||
|
id: currPinCombo |
||||||
|
anchors.topMargin: _margins |
||||||
|
anchors.top: sensorCombo.bottom |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
fact: battCurrPin |
||||||
|
indexModel: false |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: voltPinLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: voltPinCombo.baseline |
||||||
|
text: "Voltage pin:" |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
FactComboBox { |
||||||
|
id: voltPinCombo |
||||||
|
anchors.topMargin: _margins / 2 |
||||||
|
anchors.top: currPinCombo.bottom |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
fact: battVoltPin |
||||||
|
indexModel: false |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: voltMultLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: voltMultField.baseline |
||||||
|
text: "Voltage multiplier:" |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
FactTextField { |
||||||
|
id: voltMultField |
||||||
|
anchors.topMargin: _margins / 2 |
||||||
|
anchors.top: voltPinCombo.bottom |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
fact: battVoltMult |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
QGCLabel { |
||||||
|
id: ampPerVoltLabel |
||||||
|
anchors.margins: _margins |
||||||
|
anchors.left: parent.left |
||||||
|
anchors.baseline: ampPerVoltField.baseline |
||||||
|
text: "Amps per volt:" |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
|
||||||
|
FactTextField { |
||||||
|
id: ampPerVoltField |
||||||
|
anchors.topMargin: _margins / 2 |
||||||
|
anchors.top: voltMultField.bottom |
||||||
|
anchors.left: capacityField.left |
||||||
|
width: capacityField.width |
||||||
|
fact: battAmpPerVolt |
||||||
|
visible: _showAdvanced |
||||||
|
} |
||||||
|
} // Flickable |
||||||
|
} // QGCViewPanel |
||||||
|
} // QGCView |
@ -0,0 +1,174 @@ |
|||||||
|
/*=====================================================================
|
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
/// @file
|
||||||
|
/// @author Don Gagne <don@thegagnes.com>
|
||||||
|
|
||||||
|
#include "PowerComponentController.h" |
||||||
|
#include "QGCMAVLink.h" |
||||||
|
#include "UAS.h" |
||||||
|
|
||||||
|
#include <QVariant> |
||||||
|
#include <QQmlProperty> |
||||||
|
|
||||||
|
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()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
/*=====================================================================
|
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
/// @file
|
||||||
|
/// @author Don Gagne <don@thegagnes.com>
|
||||||
|
|
||||||
|
#ifndef PowerComponentController_H |
||||||
|
#define PowerComponentController_H |
||||||
|
|
||||||
|
#include <QObject> |
||||||
|
#include <QQuickItem> |
||||||
|
|
||||||
|
#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 |
@ -0,0 +1,57 @@ |
|||||||
|
/*===================================================================== |
||||||
|
|
||||||
|
QGroundControl Open Source Ground Control Station |
||||||
|
|
||||||
|
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
|
======================================================================*/ |
||||||
|
|
||||||
|
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 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue