From 538e0925a8222901ab88f4b79a1dec612ffbd26b Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Tue, 28 Jul 2015 12:24:46 +0200 Subject: [PATCH 1/3] LP-65 Heli tab : Custom values refreshed - Check unused/duplicate output channels --- .../src/plugins/config/airframe_ccpm.ui | 36 ++-- .../cfg_vehicletypes/configccpmwidget.cpp | 204 ++++++++++-------- .../cfg_vehicletypes/configccpmwidget.h | 2 +- .../config/cfg_vehicletypes/vehicleconfig.h | 4 +- 4 files changed, 134 insertions(+), 112 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/airframe_ccpm.ui b/ground/openpilotgcs/src/plugins/config/airframe_ccpm.ui index 8b7e8bfe7..946ccf06f 100644 --- a/ground/openpilotgcs/src/plugins/config/airframe_ccpm.ui +++ b/ground/openpilotgcs/src/plugins/config/airframe_ccpm.ui @@ -1050,7 +1050,7 @@ margin:1px; - 200 + 220 0 @@ -1098,13 +1098,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1120,13 +1120,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1195,7 +1195,7 @@ margin:1px; - 200 + 220 0 @@ -1265,13 +1265,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1287,13 +1287,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1312,13 +1312,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1359,13 +1359,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 16777215 @@ -1426,13 +1426,13 @@ margin:1px; - 85 + 100 0 - 100 + 120 25 @@ -1504,7 +1504,7 @@ margin:1px; - 200 + 220 0 @@ -1844,7 +1844,7 @@ margin:1px; - 200 + 220 0 diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp index b1f2901cf..1995a6469 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp @@ -254,7 +254,7 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) : connect(m_aircraft->ccpmCollectivespinBox, SIGNAL(valueChanged(int)), this, SLOT(UpdateMixer())); connect(m_aircraft->ccpmType, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateType())); connect(m_aircraft->ccpmSingleServo, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateType())); - connect(m_aircraft->TabObject, SIGNAL(currentChanged(QWidget *)), this, SLOT(UpdateType())); + connect(m_aircraft->TabObject, SIGNAL(currentChanged(int)), this, SLOT(UpdateType())); connect(m_aircraft->SwashLvlStartButton, SIGNAL(clicked()), this, SLOT(SwashLvlStartButtonPressed())); connect(m_aircraft->SwashLvlNextButton, SIGNAL(clicked()), this, SLOT(SwashLvlNextButtonPressed())); @@ -384,43 +384,15 @@ QString ConfigCcpmWidget::updateConfigObjectsFromWidgets() void ConfigCcpmWidget::UpdateType() { - int TypeInt, SingleServoIndex, NumServosDefined; + int SingleServoIndex, NumServosDefined; double AdjustmentAngle = 0; SetUIComponentVisibilities(); - TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; TypeText = m_aircraft->ccpmType->currentText(); SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex(); - // set visibility of user settings (When Custom) - m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0); - - // Clear advanced settings table if not Custom selected (Keep previous settings) - if (TypeText.compare(QString::fromUtf8("Custom - Advanced Settings"), Qt::CaseInsensitive) != 0) { - m_aircraft->ccpmAdvancedSettingsTable->clearFocus(); - } - - m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleY->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleZ->setEnabled(TypeInt == 1); - m_aircraft->ccpmCorrectionAngle->setEnabled(TypeInt != 0); - - m_aircraft->ccpmServoWChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoXChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoYChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoZChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmSingleServo->setEnabled(TypeInt > 1); - - m_aircraft->ccpmEngineChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmTailChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmCollectiveSlider->setEnabled(TypeInt > 0); - m_aircraft->ccpmCollectivespinBox->setEnabled(TypeInt > 0); - m_aircraft->ccpmRevoSlider->setEnabled(TypeInt > 0); - m_aircraft->ccpmREVOspinBox->setEnabled(TypeInt > 0); - - AdjustmentAngle = SingleServoIndex * 90; + AdjustmentAngle = SingleServoIndex * 90; m_aircraft->PitchCurve->setVisible(1); @@ -671,7 +643,11 @@ void ConfigCcpmWidget::UpdateMixer() float ThisAngle[6]; QString Channel; - if (throwConfigError(QString("HeliCP"))) { + int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + + // Don't check config if Custom, exit if currently updatingToHardware + // Avoid updating custom table if saving data to board + if ((throwConfigError(TypeInt) && TypeInt != 0) || updatingToHardware) { return; } GUIConfigDataUnion config = getConfigData(); @@ -694,16 +670,18 @@ void ConfigCcpmWidget::UpdateMixer() ; } } - int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; - if (TypeInt != 0) { // not advanced settings - // get the channel data from the ui - MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex(); - MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex(); - MixerChannelData[2] = m_aircraft->ccpmServoWChannel->currentIndex(); - MixerChannelData[3] = m_aircraft->ccpmServoXChannel->currentIndex(); - MixerChannelData[4] = m_aircraft->ccpmServoYChannel->currentIndex(); - MixerChannelData[5] = m_aircraft->ccpmServoZChannel->currentIndex(); + // get the channel data from the ui + MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex(); + MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex(); + MixerChannelData[2] = m_aircraft->ccpmServoWChannel->currentIndex(); + MixerChannelData[3] = m_aircraft->ccpmServoXChannel->currentIndex(); + MixerChannelData[4] = m_aircraft->ccpmServoYChannel->currentIndex(); + MixerChannelData[5] = m_aircraft->ccpmServoZChannel->currentIndex(); + + QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; + + if (TypeInt != 0) { // not advanced settings // get the angle data from the ui ThisAngle[2] = m_aircraft->ccpmAngleW->value(); ThisAngle[3] = m_aircraft->ccpmAngleX->value(); @@ -722,11 +700,9 @@ void ConfigCcpmWidget::UpdateMixer() ServosText[3]->setPlainText(QString("%1").arg(MixerChannelData[5])); // go through the user data and update the mixer matrix - QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; for (int i = 0; i < 6; i++) { - if ((MixerChannelData[i] > 0) && ((ThisEnable[i]) || (i < 2))) { + if (((MixerChannelData[i] > 0) && ThisEnable[i]) || (i < 2)) { table->item(i, 0)->setText(QString("%1").arg(MixerChannelData[i])); - // Generate the mixer vector if (i == 0) { // main motor-engine table->item(i, 1)->setText(QString("%1").arg(127)); // ThrottleCurve1 @@ -787,14 +763,34 @@ void ConfigCcpmWidget::UpdateMixer() } } else { // advanced settings - QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; + UAVDataObject *mixer = dynamic_cast(getObjectManager()->getObject(QString("MixerSettings"))); + Q_ASSERT(mixer); + // Populate custom mixer table from board values for (int i = 0; i < 6; i++) { - Channel = table->item(i, 0)->text(); - if (Channel == "-") { - Channel = QString((int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1); + if (MixerChannelData[i] > 0) { + // Channel number + table->item(i, 0)->setText(QString("%1").arg(MixerChannelData[i])); + // Throttle1 + table->item(i, 1)->setText(QString("%1").arg(getMixerVectorValue(mixer, MixerChannelData[i] - 1, + VehicleConfig::MIXERVECTOR_THROTTLECURVE1))); + // Throttle2 + table->item(i, 2)->setText(QString("%1").arg(getMixerVectorValue(mixer, MixerChannelData[i] - 1, + VehicleConfig::MIXERVECTOR_THROTTLECURVE2))); + // Roll + table->item(i, 3)->setText(QString("%1").arg(getMixerVectorValue(mixer, MixerChannelData[i] - 1, + VehicleConfig::MIXERVECTOR_ROLL))); + // Pitch + table->item(i, 4)->setText(QString("%1").arg(getMixerVectorValue(mixer, MixerChannelData[i] - 1, + VehicleConfig::MIXERVECTOR_PITCH))); + // Yaw + table->item(i, 5)->setText(QString("%1").arg(getMixerVectorValue(mixer, MixerChannelData[i] - 1, + VehicleConfig::MIXERVECTOR_YAW))); + } else { + for (int j = 0; j < 6; j++) { + table->item(i, j)->setText(QString("-")); + } } - MixerChannelData[i] = Channel.toInt(); } } } @@ -893,6 +889,31 @@ void ConfigCcpmWidget::SetUIComponentVisibilities() m_aircraft->SwashLvlStepList->item(1)->setBackground(Qt::transparent); m_aircraft->SwashLvlStepList->item(2)->setBackground(Qt::transparent); m_aircraft->SwashLvlStepList->item(3)->setBackground(Qt::transparent); + + // Enable / disable by TypeInt : 0 is custom + int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + + // set visibility of user settings (When Custom) + m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0); + + m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1); + m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1); + m_aircraft->ccpmAngleY->setEnabled(TypeInt == 1); + m_aircraft->ccpmAngleZ->setEnabled(TypeInt == 1); + m_aircraft->ccpmCorrectionAngle->setEnabled(TypeInt != 0); + + m_aircraft->ccpmServoWChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmServoXChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmServoYChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmServoZChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmSingleServo->setEnabled(TypeInt > 1); + + m_aircraft->ccpmEngineChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmTailChannel->setEnabled(TypeInt > 0); + m_aircraft->ccpmCollectiveSlider->setEnabled(TypeInt > 0); + m_aircraft->ccpmCollectivespinBox->setEnabled(TypeInt > 0); + m_aircraft->ccpmRevoSlider->setEnabled(TypeInt > 0); + m_aircraft->ccpmREVOspinBox->setEnabled(TypeInt > 0); } /** @@ -942,6 +963,14 @@ void ConfigCcpmWidget::setMixer() { int i, j; + int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + + // Don't check config if Custom, exit if currently updatingToHardware + // Avoid mixer changes if something wrong in config + if ((throwConfigError(TypeInt) && TypeInt != 0) || updatingToHardware) { + return; + } + if (SwashLvlConfigurationInProgress) { return; } @@ -986,10 +1015,11 @@ void ConfigCcpmWidget::setMixer() &mixerSettingsData.Mixer12Type }; - // reset all to Disabled - for (i = 0; i < 8; i++) { + // reset all outputs to Disabled + for (i = 0; i < (int)ConfigCcpmWidget::CHANNEL_NUMELEM; i++) { *mixerTypes[i] = 0; } + // go through the user data and update the mixer matrix for (i = 0; i < 6; i++) { if ((MixerChannelData[i] > 0) && (MixerChannelData[i] < (int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1)) { @@ -1560,52 +1590,44 @@ void ConfigCcpmWidget::SwashLvlSpinBoxChanged(int value) /** This function displays text and color formatting in order to help the user understand what channels have not yet been configured. */ -bool ConfigCcpmWidget::throwConfigError(QString airframeType) +bool ConfigCcpmWidget::throwConfigError(int TypeInt) { - Q_UNUSED(airframeType); - bool error = false; - if ((m_aircraft->ccpmServoWChannel->currentIndex() == 0) && (m_aircraft->ccpmServoWChannel->isVisible())) { - m_aircraft->ccpmServoWLabel->setText("" + m_aircraft->ccpmServoWLabel->text() + ""); - error = true; - } else { - m_aircraft->ccpmServoWLabel->setText(QTextEdit(m_aircraft->ccpmServoWLabel->text()).toPlainText()); + // Custom no need check + if (TypeInt == 0) { + return error; } - if ((m_aircraft->ccpmServoXChannel->currentIndex() == 0) && (m_aircraft->ccpmServoXChannel->isVisible())) { - m_aircraft->ccpmServoXLabel->setText("" + m_aircraft->ccpmServoXLabel->text() + ""); - error = true; - } else { - m_aircraft->ccpmServoXLabel->setText(QTextEdit(m_aircraft->ccpmServoXLabel->text()).toPlainText()); - } + QList comboChannelsName; + comboChannelsName << m_aircraft->ccpmEngineChannel << m_aircraft->ccpmTailChannel << m_aircraft->ccpmServoWChannel + << m_aircraft->ccpmServoXChannel << m_aircraft->ccpmServoYChannel << m_aircraft->ccpmServoZChannel; + QString channelNames = ""; - if ((m_aircraft->ccpmServoYChannel->currentIndex() == 0) && (m_aircraft->ccpmServoYChannel->isVisible())) { - m_aircraft->ccpmServoYLabel->setText("" + m_aircraft->ccpmServoYLabel->text() + ""); - error = true; - } else { - m_aircraft->ccpmServoYLabel->setText(QTextEdit(m_aircraft->ccpmServoYLabel->text()).toPlainText()); + for (int i = 0; i < 6; i++) { + QComboBox *combobox = comboChannelsName[i]; + if (combobox && (combobox->isVisible())) { + if (combobox->currentText() == "None") { + int size = combobox->style()->pixelMetric(QStyle::PM_SmallIconSize); + QPixmap pixmap(size, size); + pixmap.fill(QColor("red")); + combobox->setItemData(0, pixmap, Qt::DecorationRole); // Set color palettes + error = true; + } else if (channelNames.contains(combobox->currentText(), Qt::CaseInsensitive)) { + int size = combobox->style()->pixelMetric(QStyle::PM_SmallIconSize); + QPixmap pixmap(size, size); + pixmap.fill(QColor("orange")); + combobox->setItemData(combobox->currentIndex(), pixmap, Qt::DecorationRole); // Set color palettes + combobox->setToolTip(tr("Channel already used")); + error = true; + } else { + for (int index = 0; index < (int)ConfigCcpmWidget::CHANNEL_NUMELEM; index++) { + combobox->setItemData(index, 0, Qt::DecorationRole); // Reset all color palettes + combobox->setToolTip(""); + } + } + channelNames += (combobox->currentText() == "None") ? "" : combobox->currentText(); + } } - - if ((m_aircraft->ccpmServoZChannel->currentIndex() == 0) && (m_aircraft->ccpmServoZChannel->isVisible())) { - m_aircraft->ccpmServoZLabel->setText("" + m_aircraft->ccpmServoZLabel->text() + ""); - error = true; - } else { - m_aircraft->ccpmServoZLabel->setText(QTextEdit(m_aircraft->ccpmServoZLabel->text()).toPlainText()); - } - - if ((m_aircraft->ccpmEngineChannel->currentIndex() == 0) && (m_aircraft->ccpmEngineChannel->isEnabled())) { - m_aircraft->ccpmEngineLabel->setText("" + m_aircraft->ccpmEngineLabel->text() + ""); - } else { - m_aircraft->ccpmEngineLabel->setText(QTextEdit(m_aircraft->ccpmEngineLabel->text()).toPlainText()); - } - - if ((m_aircraft->ccpmTailChannel->currentIndex() == 0) && (m_aircraft->ccpmTailChannel->isEnabled())) { - m_aircraft->ccpmTailLabel->setText("" + m_aircraft->ccpmTailLabel->text() + ""); - error = true; - } else { - m_aircraft->ccpmTailLabel->setText(QTextEdit(m_aircraft->ccpmTailLabel->text()).toPlainText()); - } - return error; } diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h index 92cbc86fd..be6787ce3 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h @@ -112,7 +112,7 @@ private: private slots: virtual void setupUI(QString airframeType); - virtual bool throwConfigError(QString airframeType); + virtual bool throwConfigError(int TypeInt); void ccpmSwashplateUpdate(); void ccpmSwashplateRedraw(); diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h index 0a27e8390..0cf3366f6 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h @@ -60,7 +60,7 @@ typedef struct { } __attribute__((packed)) multiGUISettingsStruct; typedef struct { - uint SwashplateType : 3; + uint SwashplateType : 4; uint FirstServoIndex : 2; uint CorrectionAngle : 9; uint ccpmCollectivePassthroughState : 1; @@ -75,7 +75,7 @@ typedef struct { uint ServoIndexZ : 4; // 57 bits uint Throttle : 4; uint Tail : 4; // 65bits - quint32 padding : 31; // 96 bits + quint32 padding : 30; // 96 bits quint32 padding1; // 128 bits } __attribute__((packed)) heliGUISettingsStruct; From b0c8cc4385d51a0c7ff6725be3bb3988762fe619 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Thu, 30 Jul 2015 10:13:32 +0200 Subject: [PATCH 2/3] LP-65 Update copyright headers --- .../src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp | 1 + .../src/plugins/config/cfg_vehicletypes/configccpmwidget.h | 1 + .../src/plugins/config/cfg_vehicletypes/vehicleconfig.h | 1 + 3 files changed, 3 insertions(+) diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp index 1995a6469..4cd829392 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp @@ -3,6 +3,7 @@ * * @file configccpmwidget.cpp * @author E. Lafargue & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015. * @addtogroup GCSPlugins GCS Plugins * @{ * @addtogroup ConfigPlugin Config Plugin diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h index be6787ce3..2bd8a9387 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h @@ -3,6 +3,7 @@ * * @file configccpmtwidget.h * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015. * @addtogroup GCSPlugins GCS Plugins * @{ * @addtogroup ConfigPlugin Config Plugin diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h index 0cf3366f6..0620ed056 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/vehicleconfig.h @@ -3,6 +3,7 @@ * * @file vehicleconfig.h * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015. * @addtogroup GCSPlugins GCS Plugins * @{ * @addtogroup ConfigPlugin Config Plugin From 1d11f7c014601e66a306446ee6f5b7aa79d859da Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Thu, 30 Jul 2015 17:31:12 +0200 Subject: [PATCH 3/3] LP-65 Changes from review --- .../cfg_vehicletypes/configccpmwidget.cpp | 87 ++++++++++--------- .../cfg_vehicletypes/configccpmwidget.h | 4 +- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp index 4cd829392..d42a174be 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp @@ -390,7 +390,7 @@ void ConfigCcpmWidget::UpdateType() SetUIComponentVisibilities(); - TypeText = m_aircraft->ccpmType->currentText(); + typeText = m_aircraft->ccpmType->currentText(); SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex(); AdjustmentAngle = SingleServoIndex * 90; @@ -399,7 +399,7 @@ void ConfigCcpmWidget::UpdateType() NumServosDefined = 4; // set values for pre defined heli types - if (TypeText.compare(QString::fromUtf8("CCPM 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + if (typeText.compare(QString::fromUtf8("CCPM 2 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90, 360)); m_aircraft->ccpmAngleY->setValue(0); @@ -411,7 +411,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmServoYChannel->setEnabled(0); m_aircraft->ccpmServoZChannel->setEnabled(0); NumServosDefined = 2; - } else if (TypeText.compare(QString::fromUtf8("CCPM 3 Servo 90º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("CCPM 3 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90, 360)); m_aircraft->ccpmAngleY->setValue(fmod(AdjustmentAngle + 180, 360)); @@ -420,7 +420,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmServoZChannel->setCurrentIndex(0); m_aircraft->ccpmServoZChannel->setEnabled(0); NumServosDefined = 3; - } else if (TypeText.compare(QString::fromUtf8("CCPM 4 Servo 90º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("CCPM 4 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90, 360)); m_aircraft->ccpmAngleY->setValue(fmod(AdjustmentAngle + 180, 360)); @@ -428,7 +428,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmSingleServo->setEnabled(0); m_aircraft->ccpmSingleServo->setCurrentIndex(0); NumServosDefined = 4; - } else if (TypeText.compare(QString::fromUtf8("CCPM 3 Servo 120º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("CCPM 3 Servo 120º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 120, 360)); m_aircraft->ccpmAngleY->setValue(fmod(AdjustmentAngle + 240, 360)); @@ -437,7 +437,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmServoZChannel->setCurrentIndex(0); m_aircraft->ccpmServoZChannel->setEnabled(0); NumServosDefined = 3; - } else if (TypeText.compare(QString::fromUtf8("CCPM 3 Servo 140º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("CCPM 3 Servo 140º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 140, 360)); m_aircraft->ccpmAngleY->setValue(fmod(AdjustmentAngle + 220, 360)); @@ -446,7 +446,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmServoZChannel->setCurrentIndex(0); m_aircraft->ccpmServoZChannel->setEnabled(0); NumServosDefined = 3; - } else if (TypeText.compare(QString::fromUtf8("FP 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("FP 2 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90, 360)); m_aircraft->ccpmAngleY->setValue(0); @@ -464,7 +464,7 @@ void ConfigCcpmWidget::UpdateType() m_aircraft->ccpmCollectiveSlider->setValue(0); m_aircraft->PitchCurve->setVisible(0); NumServosDefined = 2; - } else if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + } else if (typeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmAngleW->setValue(AdjustmentAngle + 0); m_aircraft->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90, 360)); m_aircraft->ccpmAngleY->setValue(0); @@ -485,7 +485,7 @@ void ConfigCcpmWidget::UpdateType() } // Set the text of the motor boxes - if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + if (typeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { m_aircraft->ccpmEngineLabel->setText("CW motor"); m_aircraft->ccpmTailLabel->setText("CCW motor"); } else { @@ -644,13 +644,14 @@ void ConfigCcpmWidget::UpdateMixer() float ThisAngle[6]; QString Channel; - int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + int typeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; - // Don't check config if Custom, exit if currently updatingToHardware - // Avoid updating custom table if saving data to board - if ((throwConfigError(TypeInt) && TypeInt != 0) || updatingToHardware) { + // Exit if currently updatingToHardware or ConfigError + // Avoid mixer changes if something wrong in config + if (throwConfigError(typeInt) || updatingToHardware) { return; } + GUIConfigDataUnion config = getConfigData(); useCCPM = !(config.heli.ccpmCollectivePassthroughState || !config.heli.ccpmLinkCyclicState); @@ -682,7 +683,7 @@ void ConfigCcpmWidget::UpdateMixer() QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; - if (TypeInt != 0) { // not advanced settings + if (typeInt != 0) { // not advanced settings // get the angle data from the ui ThisAngle[2] = m_aircraft->ccpmAngleW->value(); ThisAngle[3] = m_aircraft->ccpmAngleX->value(); @@ -711,7 +712,7 @@ void ConfigCcpmWidget::UpdateMixer() table->item(i, 3)->setText(QString("%1").arg(0)); // Roll table->item(i, 4)->setText(QString("%1").arg(0)); // Pitch - if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + if (typeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { // Yaw table->item(i, 5)->setText(QString("%1").arg(-127)); } else { @@ -721,7 +722,7 @@ void ConfigCcpmWidget::UpdateMixer() } if (i == 1) { // tailrotor --or-- counter-clockwise motor - if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + if (typeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { // ThrottleCurve1 table->item(i, 1)->setText(QString("%1").arg(127)); // Yaw @@ -891,30 +892,30 @@ void ConfigCcpmWidget::SetUIComponentVisibilities() m_aircraft->SwashLvlStepList->item(2)->setBackground(Qt::transparent); m_aircraft->SwashLvlStepList->item(3)->setBackground(Qt::transparent); - // Enable / disable by TypeInt : 0 is custom - int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + // Enable / disable by typeInt : 0 is custom + int typeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; // set visibility of user settings (When Custom) - m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0); + m_aircraft->ccpmAdvancedSettingsTable->setEnabled(typeInt == 0); - m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleY->setEnabled(TypeInt == 1); - m_aircraft->ccpmAngleZ->setEnabled(TypeInt == 1); - m_aircraft->ccpmCorrectionAngle->setEnabled(TypeInt != 0); + m_aircraft->ccpmAngleW->setEnabled(typeInt == 1); + m_aircraft->ccpmAngleX->setEnabled(typeInt == 1); + m_aircraft->ccpmAngleY->setEnabled(typeInt == 1); + m_aircraft->ccpmAngleZ->setEnabled(typeInt == 1); + m_aircraft->ccpmCorrectionAngle->setEnabled(typeInt != 0); - m_aircraft->ccpmServoWChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoXChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoYChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmServoZChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmSingleServo->setEnabled(TypeInt > 1); + m_aircraft->ccpmServoWChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmServoXChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmServoYChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmServoZChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmSingleServo->setEnabled(typeInt > 1); - m_aircraft->ccpmEngineChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmTailChannel->setEnabled(TypeInt > 0); - m_aircraft->ccpmCollectiveSlider->setEnabled(TypeInt > 0); - m_aircraft->ccpmCollectivespinBox->setEnabled(TypeInt > 0); - m_aircraft->ccpmRevoSlider->setEnabled(TypeInt > 0); - m_aircraft->ccpmREVOspinBox->setEnabled(TypeInt > 0); + m_aircraft->ccpmEngineChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmTailChannel->setEnabled(typeInt > 0); + m_aircraft->ccpmCollectiveSlider->setEnabled(typeInt > 0); + m_aircraft->ccpmCollectivespinBox->setEnabled(typeInt > 0); + m_aircraft->ccpmRevoSlider->setEnabled(typeInt > 0); + m_aircraft->ccpmREVOspinBox->setEnabled(typeInt > 0); } /** @@ -964,11 +965,11 @@ void ConfigCcpmWidget::setMixer() { int i, j; - int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; + int typeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1; - // Don't check config if Custom, exit if currently updatingToHardware + // Exit if currently updatingToHardware or ConfigError // Avoid mixer changes if something wrong in config - if ((throwConfigError(TypeInt) && TypeInt != 0) || updatingToHardware) { + if (throwConfigError(typeInt) || updatingToHardware) { return; } @@ -1025,7 +1026,7 @@ void ConfigCcpmWidget::setMixer() for (i = 0; i < 6; i++) { if ((MixerChannelData[i] > 0) && (MixerChannelData[i] < (int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1)) { // Set the mixer type. If Coax, then first two are motors. Otherwise, only first is motor - if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { + if (typeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { *(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ? MixerSettings::MIXER1TYPE_SERVO : MixerSettings::MIXER1TYPE_MOTOR; @@ -1591,13 +1592,13 @@ void ConfigCcpmWidget::SwashLvlSpinBoxChanged(int value) /** This function displays text and color formatting in order to help the user understand what channels have not yet been configured. */ -bool ConfigCcpmWidget::throwConfigError(int TypeInt) +bool ConfigCcpmWidget::throwConfigError(int typeInt) { bool error = false; - // Custom no need check - if (TypeInt == 0) { - return error; + // Custom no need check, always return no error + if (typeInt == 0) { + return false; } QList comboChannelsName; diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h index 2bd8a9387..88bea55d0 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.h @@ -85,7 +85,7 @@ private: QGraphicsEllipseItem *ServosTextCircles[CCPM_MAX_SWASH_SERVOS]; QSpinBox *SwashLvlSpinBoxes[CCPM_MAX_SWASH_SERVOS]; - QString TypeText; + QString typeText; bool SwashLvlConfigurationInProgress; UAVObject::Metadata SwashLvlaccInitialData; @@ -113,7 +113,7 @@ private: private slots: virtual void setupUI(QString airframeType); - virtual bool throwConfigError(int TypeInt); + virtual bool throwConfigError(int typeInt); void ccpmSwashplateUpdate(); void ccpmSwashplateRedraw();