From a053c015cf748fdb842ac1b846d7ba6491ebaefe Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Mon, 15 Jan 2018 23:42:56 +0100 Subject: [PATCH] LP-551 Changes from review, change names and fix typos. --- .../src/plugins/config/configgadgetwidget.cpp | 15 ++-- .../src/plugins/config/configinputwidget.cpp | 30 ++++---- .../src/plugins/config/configinputwidget.h | 6 +- .../src/plugins/config/configoutputwidget.cpp | 73 ++++++++++--------- .../src/plugins/config/configoutputwidget.h | 6 +- .../src/plugins/config/outputchannelform.cpp | 34 ++++----- .../src/plugins/config/outputchannelform.h | 12 +-- 7 files changed, 90 insertions(+), 86 deletions(-) diff --git a/ground/gcs/src/plugins/config/configgadgetwidget.cpp b/ground/gcs/src/plugins/config/configgadgetwidget.cpp index 8f3776205..b5b263f0c 100644 --- a/ground/gcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/gcs/src/plugins/config/configgadgetwidget.cpp @@ -77,8 +77,6 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); QWidget *widget; - QWidget *inputWidget; - QWidget *outputWidget; QIcon *icon; icon = new QIcon(); @@ -100,7 +98,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) widget = new ConfigInputWidget(this); static_cast(widget)->bind(); stackWidget->insertTab(ConfigGadgetWidget::Input, widget, *icon, QString("Input")); - inputWidget = widget; + QWidget *inputWidget = widget; icon = new QIcon(); icon->addFile(":/configgadget/images/output_normal.png", QSize(), QIcon::Normal, QIcon::Off); @@ -108,7 +106,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) widget = new ConfigOutputWidget(this); static_cast(widget)->bind(); stackWidget->insertTab(ConfigGadgetWidget::Output, widget, *icon, QString("Output")); - outputWidget = widget; + QWidget *outputWidget = widget; icon = new QIcon(); icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); @@ -169,10 +167,11 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) onOPLinkConnect(); } - // Connect output tab and input tab for safe - // output config and input calibration - connect(outputWidget, SIGNAL(outputConfigSafe(bool)), inputWidget, SLOT(outputConfigSafe(bool))); - connect(inputWidget, SIGNAL(inputCalibrationStatus(bool)), outputWidget, SLOT(inputCalibrationStatus(bool))); + // Connect output tab and input tab + // Input tab do not start calibration if Output tab is not safe + // Output tab uses the signal from Input tab and freeze all output UI while calibrating inputs + connect(outputWidget, SIGNAL(outputConfigSafeChanged(bool)), inputWidget, SLOT(setOutputConfigSafe(bool))); + connect(inputWidget, SIGNAL(inputCalibrationStateChanged(bool)), outputWidget, SLOT(setInputCalibrationState(bool))); help = 0; connect(stackWidget, SIGNAL(currentAboutToShow(int, bool *)), this, SLOT(tabAboutToChange(int, bool *))); diff --git a/ground/gcs/src/plugins/config/configinputwidget.cpp b/ground/gcs/src/plugins/config/configinputwidget.cpp index 1f29a6cde..3afd3761f 100644 --- a/ground/gcs/src/plugins/config/configinputwidget.cpp +++ b/ground/gcs/src/plugins/config/configinputwidget.cpp @@ -505,7 +505,7 @@ void ConfigInputWidget::enableControls(bool enable) // Close manual calibration ui->runCalibration->setChecked(false); ui->runCalibration->setText(tr("Start Manual Calibration")); - emit inputCalibrationStatus(false); + emit inputCalibrationStateChanged(false); } } } @@ -519,9 +519,9 @@ void ConfigInputWidget::resizeEvent(QResizeEvent *event) void ConfigInputWidget::goToWizard() { - if (!safeOutputConfig) { - QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in Output tab." - "

Please fix the issue before starting the Transmitter wizard

"), QMessageBox::Ok); + if (!outputConfigIsSafe) { + QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in Output tab." + "

Please fix the issue before starting the Transmitter wizard.

"), QMessageBox::Ok); return; } @@ -536,7 +536,7 @@ void ConfigInputWidget::goToWizard() msgBox.exec(); // Tell Output tab we freeze actuators soon - emit inputCalibrationStatus(true); + emit inputCalibrationStateChanged(true); // Set correct tab visible before starting wizard. if (ui->tabWidget->currentIndex() != 0) { @@ -608,7 +608,7 @@ void ConfigInputWidget::wzCancel() systemSettingsObj->setData(memento.systemSettingsData); // Tell Output tab the calibration is ended - emit inputCalibrationStatus(false); + emit inputCalibrationStateChanged(false); } void ConfigInputWidget::registerControlActivity() @@ -706,7 +706,7 @@ void ConfigInputWidget::wzNext() ui->tabWidget->setCurrentIndex(3); // Tell Output tab the calibration is ended - emit inputCalibrationStatus(false); + emit inputCalibrationStateChanged(false); break; default: Q_ASSERT(0); @@ -1897,7 +1897,7 @@ void ConfigInputWidget::updateConfigAlarmStatus() switch (systemAlarms.ExtendedAlarmStatus[SystemAlarms::EXTENDEDALARMSTATUS_SYSTEMCONFIGURATION]) { case SystemAlarms::EXTENDEDALARMSTATUS_FLIGHTMODE: message = tr("Config error"); - tooltipMessage = tr("There is something wrong with your config,\nusually a Thrust mode or Assisted mode not supported.\n\n" + tooltipMessage = tr("There is something wrong in the current config,\nusually a Thrust mode or Assisted mode not supported.\n\n" "Tip: Reduce the Flight Mode Count to find the culprit."); bgColor = "red"; } @@ -1945,10 +1945,10 @@ void ConfigInputWidget::simpleCalibration(bool enable) return; } - if (!safeOutputConfig) { + if (!outputConfigIsSafe) { if (enable) { - QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in Output tab." - "

Please fix the issue before starting the Manual Calibration

"), QMessageBox::Ok); + QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in Output tab." + "

Please fix the issue before starting the Manual Calibration.

"), QMessageBox::Ok); ui->runCalibration->setChecked(false); } return; @@ -1971,7 +1971,7 @@ void ConfigInputWidget::simpleCalibration(bool enable) msgBox.exec(); // Tell Output tab we freeze actuators soon - emit inputCalibrationStatus(true); + emit inputCalibrationStateChanged(true); manualCommandData = manualCommandObj->getData(); @@ -2041,7 +2041,7 @@ void ConfigInputWidget::simpleCalibration(bool enable) ui->runCalibration->setText(tr("Start Manual Calibration")); // Tell Output tab the calibration is ended - emit inputCalibrationStatus(false); + emit inputCalibrationStateChanged(false); disconnect(manualCommandObj, SIGNAL(objectUnpacked(UAVObject *)), this, SLOT(updateCalibration())); } @@ -2234,7 +2234,7 @@ void ConfigInputWidget::enableControlsChanged(bool enabled) ui->failsafeBatteryCriticalFlightModeCb->setEnabled(enabled && batteryModuleEnabled); } -void ConfigInputWidget::outputConfigSafe(bool status) +void ConfigInputWidget::setOutputConfigSafe(bool status) { - safeOutputConfig = status; + outputConfigIsSafe = status; } diff --git a/ground/gcs/src/plugins/config/configinputwidget.h b/ground/gcs/src/plugins/config/configinputwidget.h index f2289a211..3df60305d 100644 --- a/ground/gcs/src/plugins/config/configinputwidget.h +++ b/ground/gcs/src/plugins/config/configinputwidget.h @@ -73,16 +73,16 @@ public: bool shouldObjectBeSaved(UAVObject *object); public slots: - void outputConfigSafe(bool status); + void setOutputConfigSafe(bool status); signals: - void inputCalibrationStatus(bool started); + void inputCalibrationStateChanged(bool newState); private: bool throttleError; bool growing; bool reverse[ManualControlSettings::CHANNELNEUTRAL_NUMELEM]; - bool safeOutputConfig; + bool outputConfigIsSafe; txMovements currentMovement; int movePos; void setTxMovement(txMovements movement); diff --git a/ground/gcs/src/plugins/config/configoutputwidget.cpp b/ground/gcs/src/plugins/config/configoutputwidget.cpp index d7a44ed5f..a30688121 100644 --- a/ground/gcs/src/plugins/config/configoutputwidget.cpp +++ b/ground/gcs/src/plugins/config/configoutputwidget.cpp @@ -193,7 +193,7 @@ void ConfigOutputWidget::runChannelTests(bool state) { if (!checkOutputConfig()) { m_ui->channelOutTest->setChecked(false); - QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in current config." + QMessageBox::warning(this, tr("Warning"), tr("There is something wrong in the current config." "

Please fix the issue before starting testing outputs.

"), QMessageBox::Ok); return; } @@ -233,13 +233,13 @@ void ConfigOutputWidget::runChannelTests(bool state) channelTestsStarted = state; // Emit signal to be received by Input tab - emit outputConfigSafe(!state); + emit outputConfigSafeChanged(!state); m_ui->spinningArmed->setEnabled(!state); m_ui->alwaysStabilizedSwitch->setEnabled((m_ui->spinningArmed->isChecked()) && !state); m_ui->alwayStabilizedLabel1->setEnabled((m_ui->spinningArmed->isChecked()) && !state); m_ui->alwayStabilizedLabel2->setEnabled((m_ui->spinningArmed->isChecked()) && !state); - enableBanks(!state); + setBanksEnabled(!state); ActuatorCommand *obj = ActuatorCommand::GetInstance(getObjectManager()); UAVObject::Metadata mdata = obj->getMetadata(); @@ -526,9 +526,9 @@ void ConfigOutputWidget::updateObjectsFromWidgetsImpl() void ConfigOutputWidget::updateSpinStabilizeCheckComboBoxes() { - m_ui->alwayStabilizedLabel1->setEnabled(m_ui->spinningArmed->isChecked()); - m_ui->alwayStabilizedLabel2->setEnabled(m_ui->spinningArmed->isChecked()); - m_ui->alwaysStabilizedSwitch->setEnabled(m_ui->spinningArmed->isChecked()); + m_ui->alwayStabilizedLabel1->setEnabled((m_ui->spinningArmed->isChecked()) && (m_ui->spinningArmed->isEnabled())); + m_ui->alwayStabilizedLabel2->setEnabled((m_ui->spinningArmed->isChecked()) && (m_ui->spinningArmed->isEnabled())); + m_ui->alwaysStabilizedSwitch->setEnabled((m_ui->spinningArmed->isChecked()) && (m_ui->spinningArmed->isEnabled())); if (!m_ui->spinningArmed->isChecked()) { m_ui->alwaysStabilizedSwitch->setCurrentIndex(FlightModeSettings::ALWAYSSTABILIZEWHENARMEDSWITCH_DISABLED); @@ -608,7 +608,7 @@ ConfigOutputWidget::ChannelConfigWarning ConfigOutputWidget::checkChannelConfig( int currentNeutralValue = channelForm->neutralValue(); // Check if RevMotor has neutral value around center - if (channelForm->isReversableMotor()) { + if (channelForm->isReversibleMotorOutput()) { warning = IsReversibleMotorCheckNeutral; int neutralDiff = qAbs(REVMOTOR_NEUTRAL_TARGET_VALUE - currentNeutralValue); if (neutralDiff < REVMOTOR_NEUTRAL_DIFF_VALUE) { @@ -618,7 +618,7 @@ ConfigOutputWidget::ChannelConfigWarning ConfigOutputWidget::checkChannelConfig( } // Check if NormalMotor neutral is not too high - if (channelForm->isNormalMotor()) { + if (channelForm->isNormalMotorOutput()) { warning = IsNormalMotorCheckNeutral; int neutralDiff = currentNeutralValue - DEFAULT_MINOUTPUT_VALUE; if (neutralDiff < MOTOR_NEUTRAL_DIFF_VALUE) { @@ -632,7 +632,7 @@ ConfigOutputWidget::ChannelConfigWarning ConfigOutputWidget::checkChannelConfig( if (channelForm->isServoOutput()) { // Driving a servo using DShot doest not make sense warning = CannotDriveServo; - } else if (channelForm->isReversableMotor()) { + } else if (channelForm->isReversibleMotorOutput()) { // Bi-directional DShot not yet supported warning = BiDirectionalDShotNotSupported; } @@ -659,8 +659,7 @@ void ConfigOutputWidget::onBankTypeChange() { QComboBox *bankModeCombo = qobject_cast(sender()); - ChannelConfigWarning current_warning = None; - ChannelConfigWarning warning_found = None; + ChannelConfigWarning new_warning = None; if (bankModeCombo != NULL) { int bankNumber = 1; @@ -673,9 +672,9 @@ void ConfigOutputWidget::onBankTypeChange() foreach(OutputChannelForm * outputChannelForm, outputChannelForms) { if (outputChannelForm->bank().toInt() == bankNumber) { setChannelLimits(outputChannelForm, &controls); - current_warning = checkChannelConfig(outputChannelForm, &controls); - if (current_warning > None) { - warning_found = current_warning; + ChannelConfigWarning warning = checkChannelConfig(outputChannelForm, &controls); + if (warning > None) { + new_warning = warning; } } } @@ -686,13 +685,12 @@ void ConfigOutputWidget::onBankTypeChange() } } - updateChannelConfigWarning(warning_found); + updateChannelConfigWarning(new_warning); } bool ConfigOutputWidget::checkOutputConfig() { - ChannelConfigWarning current_warning = None; - ChannelConfigWarning warning_found = None; + ChannelConfigWarning new_warning = None; int bankNumber = 1; @@ -701,9 +699,9 @@ bool ConfigOutputWidget::checkOutputConfig() foreach(OutputBankControls controls, m_banks) { foreach(OutputChannelForm * outputChannelForm, outputChannelForms) { if (!outputChannelForm->isDisabledOutput() && (outputChannelForm->bank().toInt() == bankNumber)) { - current_warning = checkChannelConfig(outputChannelForm, &controls); - if (current_warning > None) { - warning_found = current_warning; + ChannelConfigWarning warning = checkChannelConfig(outputChannelForm, &controls); + if (warning > None) { + new_warning = warning; } } } @@ -711,12 +709,12 @@ bool ConfigOutputWidget::checkOutputConfig() bankNumber++; } - updateChannelConfigWarning(warning_found); + updateChannelConfigWarning(new_warning); // Emit signal to be received by Input tab - emit outputConfigSafe(warning_found == None); + emit outputConfigSafeChanged(new_warning == None); - return warning_found == None; + return new_warning == None; } void ConfigOutputWidget::stopTests() @@ -749,29 +747,29 @@ void ConfigOutputWidget::updateChannelConfigWarning(ChannelConfigWarning warning if (warning == BiDirectionalDShotNotSupported) { // TODO: Implement bi-directional DShot - warning_str = "There is at least one reversable motor using DShot in your configuration.
" - "Bi-directional DShot is not currently supported, you should use PWM, OneShotXXX or MultiShot."; + warning_str = "There is one reversible motor using DShot is configured.
" + "Bi-directional DShot is currently not supported. Please use PWM, OneShotXXX or MultiShot."; } if (warning == IsNormalMotorCheckNeutral) { - warning_str = "Seems there is at least one pretty high neutral value set in your configuration.
" - "Be sure all Esc are calibrated and no mechanical stress in all motors."; + warning_str = "There is at least one pretty high neutral value set in your configuration.
" + "Make sure all ESCs are calibrated and no mechanical stress in all motors."; } if (warning == IsReversibleMotorCheckNeutral) { - warning_str = "There is at least one reversable motor in your configuration.
" - "Be sure you set a appropriate neutral value before saving and applying power to the vehicule."; + warning_str = "A least one reversible motor is configured.
" + "Make sure a appropriate neutral value is set before saving and applying power to the vehicule."; } if (warning == CannotDriveServo) { - warning_str = "One Bank cannot drive a servo output!
" + warning_str = "One bank cannot drive a servo output!
" "You must use PWM for this bank or move the servo output to another compatible bank."; } setConfigWarning(warning_str); } -void ConfigOutputWidget::enableBanks(bool state) +void ConfigOutputWidget::setBanksEnabled(bool state) { // Disable/Enable banks for (int i = 0; i < m_banks.count(); i++) { @@ -800,22 +798,27 @@ void ConfigOutputWidget::setConfigWarning(QString message) m_ui->configWarningTxt->setText(message); } -void ConfigOutputWidget::inputCalibrationStatus(bool started) +void ConfigOutputWidget::setInputCalibrationState(bool started) { inputCalibrationStarted = started; // Disable UI when a input calibration is started // so user cannot manipulate settings. enableControls(!started); - enableBanks(!started); + setBanksEnabled(!started); + // Disable ASWA + m_ui->spinningArmed->setEnabled(!started); + m_ui->alwaysStabilizedSwitch->setEnabled((m_ui->spinningArmed->isChecked()) && !started); + m_ui->alwayStabilizedLabel1->setEnabled((m_ui->spinningArmed->isChecked()) && !started); + m_ui->alwayStabilizedLabel2->setEnabled((m_ui->spinningArmed->isChecked()) && !started); // Disable every channel form when needed for (unsigned int i = 0; i < ActuatorCommand::CHANNEL_NUMELEM; i++) { OutputChannelForm *form = getOutputChannelForm(i); form->ui->actuatorRev->setChecked(false); form->ui->actuatorLink->setChecked(false); - form->inputCalibrationStatus(started); - form->enableControls(!started); + form->setChannelRangeEnabled(!started); + form->setControlsEnabled(!started); } } diff --git a/ground/gcs/src/plugins/config/configoutputwidget.h b/ground/gcs/src/plugins/config/configoutputwidget.h index 4c44233f7..deacd78ab 100644 --- a/ground/gcs/src/plugins/config/configoutputwidget.h +++ b/ground/gcs/src/plugins/config/configoutputwidget.h @@ -86,10 +86,10 @@ public: ~ConfigOutputWidget(); public slots: - void inputCalibrationStatus(bool started); + void setInputCalibrationState(bool state); signals: - void outputConfigSafe(bool status); + void outputConfigSafeChanged(bool newStatus); protected: void enableControls(bool enable); @@ -106,7 +106,7 @@ private: UAVObject::Metadata m_accInitialData; QList m_banks; int activeBanksCount; - void enableBanks(bool state); + void setBanksEnabled(bool state); bool inputCalibrationStarted; bool channelTestsStarted; diff --git a/ground/gcs/src/plugins/config/outputchannelform.cpp b/ground/gcs/src/plugins/config/outputchannelform.cpp index 683469632..421be8615 100644 --- a/ground/gcs/src/plugins/config/outputchannelform.cpp +++ b/ground/gcs/src/plugins/config/outputchannelform.cpp @@ -31,7 +31,7 @@ #include OutputChannelForm::OutputChannelForm(const int index, QWidget *parent) : - ChannelForm(index, parent), ui(new Ui::outputChannelForm), m_inChannelTest(false), m_isCalibratingInput(false) + ChannelForm(index, parent), ui(new Ui::outputChannelForm), m_inChannelTest(false), m_updateChannelRangeEnabled(true) { ui->setupUi(this); @@ -114,21 +114,21 @@ void OutputChannelForm::enableChannelTest(bool state) } else if (!isDisabledOutput()) { ui->actuatorMin->setEnabled(true); ui->actuatorMax->setEnabled(true); - if (!isNormalMotor()) { + if (!isNormalMotorOutput()) { ui->actuatorRev->setEnabled(true); } } } /** - * Update the input calibration status + * Enable/Disable setChannelRange */ -void OutputChannelForm::inputCalibrationStatus(bool state) +void OutputChannelForm::setChannelRangeEnabled(bool state) { - if (m_isCalibratingInput == state) { + if (m_updateChannelRangeEnabled == state) { return; } - m_isCalibratingInput = state; + m_updateChannelRangeEnabled = state; } /** @@ -255,16 +255,16 @@ void OutputChannelForm::setChannelRange() ui->actuatorMax->setValue(1000); ui->actuatorRev->setChecked(false); ui->actuatorLink->setChecked(false); - enableControls(false); + setControlsEnabled(false); return; } - if (m_isCalibratingInput) { + if (!m_updateChannelRangeEnabled) { // Nothing to do here return; } - enableControls(true); + setControlsEnabled(true); int minValue = ui->actuatorMin->value(); int maxValue = ui->actuatorMax->value(); @@ -273,7 +273,7 @@ void OutputChannelForm::setChannelRange() int oldMaxi = ui->actuatorNeutral->maximum(); // Red handle for Motors - if (isNormalMotor() || isReversableMotor()) { + if (isNormalMotorOutput() || isReversibleMotorOutput()) { ui->actuatorNeutral->setStyleSheet("QSlider::handle:horizontal { background: rgb(255, 100, 100); width: 18px; height: 28px;" "margin: -3px 0; border-radius: 3px; border: 1px solid #777; }"); } else { @@ -282,7 +282,7 @@ void OutputChannelForm::setChannelRange() } // Normal motor will be *** never *** reversed : without arming a "Min" value (like 1900) can be applied ! - if (isNormalMotor()) { + if (isNormalMotorOutput()) { if (minValue > maxValue) { // Keep old values ui->actuatorMin->setValue(oldMini); @@ -334,7 +334,7 @@ void OutputChannelForm::reverseChannel(bool state) /** * Enable/Disable UI controls */ -void OutputChannelForm::enableControls(bool state) +void OutputChannelForm::setControlsEnabled(bool state) { if (isDisabledOutput()) { state = false; @@ -345,7 +345,7 @@ void OutputChannelForm::enableControls(bool state) ui->actuatorLink->setEnabled(state); // Reverse checkbox will be never checked // or enabled for normal motor - if (isNormalMotor()) { + if (isNormalMotorOutput()) { ui->actuatorRev->setChecked(false); ui->actuatorRev->setEnabled(false); } else { @@ -439,23 +439,23 @@ QString OutputChannelForm::outputMixerType() */ bool OutputChannelForm::isServoOutput() { - return !isNormalMotor() && !isReversableMotor() && !isDisabledOutput(); + return !isNormalMotorOutput() && !isReversibleMotorOutput() && !isDisabledOutput(); } /** * * Returns true if output is a normal Motor */ -bool OutputChannelForm::isNormalMotor() +bool OutputChannelForm::isNormalMotorOutput() { return outputMixerType() == "Motor"; } /** * - * Returns true if output is a reversable Motor + * Returns true if output is a reversible Motor */ -bool OutputChannelForm::isReversableMotor() +bool OutputChannelForm::isReversibleMotorOutput() { return outputMixerType() == "ReversableMotor"; } diff --git a/ground/gcs/src/plugins/config/outputchannelform.h b/ground/gcs/src/plugins/config/outputchannelform.h index c0b0b6b79..90516f1ae 100644 --- a/ground/gcs/src/plugins/config/outputchannelform.h +++ b/ground/gcs/src/plugins/config/outputchannelform.h @@ -61,14 +61,16 @@ public slots: void setNeutral(int value); void setRange(int minimum, int maximum); void enableChannelTest(bool state); - void inputCalibrationStatus(bool state); - void enableControls(bool state); + void setChannelRangeEnabled(bool state); + void setControlsEnabled(bool state); QString outputMixerType(); void setLimits(int actuatorMinMinimum, int actuatorMinMaximum, int actuatorMaxMinimum, int actuatorMaxMaximum); int neutralValue(); + + // output type helper methods bool isServoOutput(); - bool isNormalMotor(); - bool isReversableMotor(); + bool isNormalMotorOutput(); + bool isReversibleMotorOutput(); bool isDisabledOutput(); signals: @@ -77,7 +79,7 @@ signals: private: Ui::outputChannelForm *ui; bool m_inChannelTest; - bool m_isCalibratingInput; + bool m_updateChannelRangeEnabled; QString m_mixerType; private slots: