Skip to content

Commit 42332c6

Browse files
committed
LP-551 Add enableBanks function - Refine bank freeze/unfreeze - Remove unused bankModeName()
1 parent b5bce33 commit 42332c6

2 files changed

Lines changed: 25 additions & 27 deletions

File tree

ground/gcs/src/plugins/config/configoutputwidget.cpp

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -224,14 +224,7 @@ void ConfigOutputWidget::runChannelTests(bool state)
224224

225225
channelTestsStarted = state;
226226

227-
// Disable/Enable banks
228-
for (int i = 0; i < m_banks.count(); i++) {
229-
OutputBankControls controls = m_banks.at(i);
230-
bool isUsed = !(controls.rateCombo()->currentText() == "-" && controls.modeCombo()->currentText() == "PWM");
231-
if (isUsed) {
232-
controls.modeCombo()->setEnabled(!state);
233-
}
234-
}
227+
enableBanks(!state);
235228

236229
ActuatorCommand *obj = ActuatorCommand::GetInstance(getObjectManager());
237230
UAVObject::Metadata mdata = obj->getMetadata();
@@ -420,6 +413,9 @@ void ConfigOutputWidget::refreshWidgetsValuesImpl(UAVObject *obj)
420413
}
421414
}
422415

416+
// Store how many banks are active according to the board
417+
activeBanksCount = bankLabels.count();
418+
423419
int i = 0;
424420
foreach(QString banklabel, bankLabels) {
425421
OutputBankControls controls = m_banks.at(i);
@@ -429,11 +425,12 @@ void ConfigOutputWidget::refreshWidgetsValuesImpl(UAVObject *obj)
429425
if (index == -1) {
430426
controls.rateCombo()->addItem(tr("%1 Hz").arg(actuatorSettingsData.BankUpdateFreq[i]), actuatorSettingsData.BankUpdateFreq[i]);
431427
}
428+
bool isPWM = (controls.modeCombo()->currentIndex() == ActuatorSettings::BANKMODE_PWM);
432429
controls.rateCombo()->setCurrentIndex(index);
433-
controls.rateCombo()->setEnabled(controls.modeCombo()->currentIndex() == ActuatorSettings::BANKMODE_PWM);
430+
controls.rateCombo()->setEnabled(!inputCalibrationStarted && !channelTestsStarted && isPWM);
434431
setColor(controls.rateCombo(), controls.color());
432+
controls.modeCombo()->setEnabled(!inputCalibrationStarted && !channelTestsStarted);
435433
setColor(controls.modeCombo(), controls.color());
436-
controls.modeCombo()->setEnabled((inputCalibrationStarted || channelTestsStarted) ? false : true);
437434
i++;
438435
}
439436

@@ -761,6 +758,21 @@ void ConfigOutputWidget::updateChannelConfigWarning(ChannelConfigWarning warning
761758
setConfigWarning(warning_str);
762759
}
763760

761+
void ConfigOutputWidget::enableBanks(bool state)
762+
{
763+
// Disable/Enable banks
764+
for (int i = 0; i < m_banks.count(); i++) {
765+
OutputBankControls controls = m_banks.at(i);
766+
if (i < activeBanksCount) {
767+
controls.modeCombo()->setEnabled(state);
768+
controls.rateCombo()->setEnabled(state);
769+
} else {
770+
controls.modeCombo()->setEnabled(false);
771+
controls.rateCombo()->setEnabled(false);
772+
}
773+
}
774+
}
775+
764776
void ConfigOutputWidget::setBoardWarning(QString message)
765777
{
766778
m_ui->boardWarningFrame->setVisible(!message.isNull());
@@ -775,29 +787,14 @@ void ConfigOutputWidget::setConfigWarning(QString message)
775787
m_ui->configWarningTxt->setText(message);
776788
}
777789

778-
QString ConfigOutputWidget::bankModeName(int index)
779-
{
780-
UAVDataObject *actuator = dynamic_cast<UAVDataObject *>(getObjectManager()->getObject(QString("ActuatorSettings")));
781-
782-
Q_ASSERT(actuator);
783-
UAVObjectField *field = actuator->getField("BankMode");
784-
Q_ASSERT(field);
785-
QStringList bankModeOptions;
786-
787-
if (field) {
788-
bankModeOptions = field->getOptions();
789-
}
790-
791-
return bankModeOptions.at(index);
792-
}
793-
794790
void ConfigOutputWidget::inputCalibrationStatus(bool started)
795791
{
796792
inputCalibrationStarted = started;
797793

798794
// Disable UI when a input calibration is started
799795
// so user cannot manipulate settings.
800796
enableControls(!started);
797+
enableBanks(!started);
801798

802799
// Disable every channel form when needed
803800
for (unsigned int i = 0; i < ActuatorCommand::CHANNEL_NUMELEM; i++) {

ground/gcs/src/plugins/config/configoutputwidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ public slots:
105105
int m_mccDataRate;
106106
UAVObject::Metadata m_accInitialData;
107107
QList<OutputBankControls> m_banks;
108+
int activeBanksCount;
109+
void enableBanks(bool state);
108110

109111
bool inputCalibrationStarted;
110112
bool channelTestsStarted;
@@ -119,7 +121,6 @@ public slots:
119121
ChannelConfigWarning checkChannelConfig(OutputChannelForm *channelForm, OutputBankControls *bankControls);
120122
void checkOutputConfig();
121123
void updateChannelConfigWarning(ChannelConfigWarning warning);
122-
QString bankModeName(int index);
123124

124125
private slots:
125126
void updateBoardWarnings(UAVObject *);

0 commit comments

Comments
 (0)