@@ -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+
764776void 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-
794790void 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++) {
0 commit comments