Commit 58b9c3f6 authored by Don Gagne's avatar Don Gagne

Merge pull request #2432 from DonLakeFlyer/APMPlane

APM  plane fixes
parents 8eced4a7 b887cbd9
......@@ -544,10 +544,12 @@ SOURCES += \
#
INCLUDEPATH += \
src/AutoPilotPlugins/APM \
src/AutoPilotPlugins/Common \
src/AutoPilotPlugins/PX4 \
src/AutoPilotPlugins/APM \
src/FirmwarePlugin \
src/FirmwarePlugin/APM \
src/FirmwarePlugin/PX4 \
src/Vehicle \
src/VehicleSetup \
......
......@@ -25,13 +25,14 @@
/// @author Don Gagne <don@thegagnes.com>
#include "APMAirframeComponent.h"
#include "QGCQmlWidgetHolder.h"
#include "ArduCopterFirmwarePlugin.h"
APMAirframeComponent::APMAirframeComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) :
APMComponent(vehicle, autopilot, parent),
_name(tr("Airframe"))
APMAirframeComponent::APMAirframeComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent)
: APMComponent(vehicle, autopilot, parent)
, _copterFirmware(false)
, _name("Airframe")
{
_copterFirmware = qobject_cast<ArduCopterFirmwarePlugin*>(_vehicle->firmwarePlugin()) != NULL;
}
QString APMAirframeComponent::name(void) const
......@@ -52,28 +53,45 @@ QString APMAirframeComponent::iconResource(void) const
bool APMAirframeComponent::requiresSetup(void) const
{
return true;
return _copterFirmware;
}
bool APMAirframeComponent::setupComplete(void) const
{
//: Not the correct one, but it works for the moment.
return _autopilot->getParameterFact(FactSystem::defaultComponentId, "FRAME")->rawValue().toInt() != -1;
if (_copterFirmware) {
return _autopilot->getParameterFact(FactSystem::defaultComponentId, "FRAME")->rawValue().toInt() >= 0;
} else {
return true;
}
}
QStringList APMAirframeComponent::setupCompleteChangedTriggerList(void) const
{
return QStringList();
QStringList list;
if (_copterFirmware) {
list << "FRAME";
}
return list;
}
QUrl APMAirframeComponent::setupSource(void) const
{
return QUrl::fromUserInput("qrc:/qml/APMAirframeComponent.qml");
if (_copterFirmware) {
return QUrl::fromUserInput("qrc:/qml/APMAirframeComponent.qml");
} else {
return QUrl();
}
}
QUrl APMAirframeComponent::summaryQmlSource(void) const
{
return QUrl::fromUserInput("qrc:/qml/APMAirframeComponentSummary.qml");
if (_copterFirmware) {
return QUrl::fromUserInput("qrc:/qml/APMAirframeComponentSummary.qml");
} else {
return QUrl();
}
}
QString APMAirframeComponent::prerequisiteSetup(void) const
......
......@@ -47,8 +47,8 @@ public:
virtual QString prerequisiteSetup(void) const;
private:
bool _copterFirmware;
const QString _name;
QVariantList _summaryItems;
};
#endif
......@@ -67,14 +67,12 @@ const QVariantList& APMAutoPilotPlugin::vehicleComponents(void)
Q_ASSERT(_vehicle);
if (parametersReady()) {
if (dynamic_cast<ArduCopterFirmwarePlugin*>(_vehicle->firmwarePlugin())){
_airframeComponent = new APMAirframeComponent(_vehicle, this);
if(_airframeComponent) {
_airframeComponent->setupTriggerSignals();
_components.append(QVariant::fromValue((VehicleComponent*)_airframeComponent));
} else {
qWarning() << "new APMAirframeComponent failed";
}
_airframeComponent = new APMAirframeComponent(_vehicle, this);
if(_airframeComponent) {
_airframeComponent->setupTriggerSignals();
_components.append(QVariant::fromValue((VehicleComponent*)_airframeComponent));
} else {
qWarning() << "new APMAirframeComponent failed";
}
_flightModesComponent = new APMFlightModesComponent(_vehicle, this);
......
......@@ -36,6 +36,7 @@ QGCView {
viewPanel: panel
property real _margins: ScreenTools.defaultFontPixelHeight
property bool _channelOptionsAvailable: controller.parameterExists(-1, "CH7_OPT") // Not available in all firmware types
QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled }
......@@ -116,6 +117,7 @@ QGCView {
anchors.left: flightModeSettings.right
text: "Channel Options"
font.weight: Font.DemiBold
visible: _channelOptionsAvailable
}
Rectangle {
......@@ -126,6 +128,7 @@ QGCView {
width: channelOptColumn.width + (_margins * 2)
height: channelOptColumn.height + ScreenTools.defaultFontPixelHeight
color: qgcPal.windowShade
visible: _channelOptionsAvailable
Column {
id: channelOptColumn
......@@ -141,19 +144,18 @@ QGCView {
spacing: ScreenTools.defaultFontPixelWidth
property int index: modelData + 7
property Fact nullFact: Fact { }
QGCLabel {
anchors.baseline: optCombo.baseline
text: "Channel option " + index + ":"
color: controller.channelOptionEnabled[modelData] ? qgcPal.buttonHighlight : qgcPal.text
Component.onCompleted: console.log(index, controller.channelOptionEnabled[modelData])
}
FactComboBox {
id: optCombo
width: ScreenTools.defaultFontPixelWidth * 15
fact: controller.getParameterFact(-1, "CH" + index + "_OPT")
fact: _channelOptionsAvailable ? controller.getParameterFact(-1, "CH" + index + "_OPT") : nullFact
indexModel: false
}
}
......
......@@ -299,6 +299,8 @@ Rectangle {
setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup
text: modelData.name
visible: modelData.setupSource.toString() != ""
onClicked: showVehicleComponentPanel(modelData)
}
......
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