USB-VCP no OFF if internal RF module is set to CRSF (#1957)

* Do not list OFF on VCP menu if internal RF module is set to CRSF to allow pass-through flashing.
Set USB-VCP automatically to CLI when CRSF mode is selected for internal module and it was previously OFF. Activate CLI when iCRSF is selected.

* Companion part

Co-authored-by: elecpower <neilh713@tpg.com.au>
This commit is contained in:
Risto
2022-05-30 22:14:08 +02:00
committed by GitHub
co-authored by elecpower
parent cff819ea0e
commit 6b557e49ea
6 changed files with 54 additions and 9 deletions
+34 -8
View File
@@ -82,7 +82,8 @@ public:
HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings, Firmware * firmware, CompoundItemModelFactory * sharedItemModels):
GeneralPanel(parent, generalSettings, firmware),
board(firmware->getBoard()),
editorItemModels(sharedItemModels)
editorItemModels(sharedItemModels),
serialPortUSBVCP(nullptr)
{
editorItemModels->registerItemModel(Boards::potTypeItemModel());
editorItemModels->registerItemModel(Boards::sliderTypeItemModel());
@@ -226,7 +227,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
addLabel(tr("%1").arg(lbl), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(auxmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX1]);
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX1], this);
exclGroup->addCombo(serialPortMode);
AutoCheckBox *serialPortPower = new AutoCheckBox(this);
@@ -244,7 +245,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
addLabel(tr("%1").arg(lbl), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(auxmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX2]);
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX2], this);
exclGroup->addCombo(serialPortMode);
AutoCheckBox *serialPortPower = new AutoCheckBox(this);
@@ -259,11 +260,13 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
if (firmware->getCapability(HasVCPSerialMode)) {
addLabel(tr("USB-VCP"), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(vcpmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_VCP]);
exclGroup->addCombo(serialPortMode);
addParams(row, serialPortMode);
serialPortUSBVCP = new AutoComboBox(this);
serialPortUSBVCP->setModel(editorItemModels->getItemModel(vcpmodelid));
serialPortUSBVCP->setField(generalSettings.serialPort[GeneralSettings::SP_VCP], this);
exclGroup->addCombo(serialPortUSBVCP);
addParams(row, serialPortUSBVCP);
connect(this, &HardwarePanel::internalModuleChanged, this, &HardwarePanel::updateSerialPortUSBVCP);
updateSerialPortUSBVCP();
}
if (firmware->getCapability(HasADCJitterFilter)) {
@@ -326,6 +329,7 @@ void HardwarePanel::on_internalModuleChanged()
generalSettings.internalModuleBaudrate = 0;
internalModuleBaudRate->setVisible(false);
}
emit internalModuleChanged();
}
}
@@ -422,3 +426,25 @@ void HardwarePanel::addSection(QString text, int & row)
addLabel(QString("<b>%1</b>").arg(text), row, 0);
row++;
}
void HardwarePanel::updateSerialPortUSBVCP()
{
if (!serialPortUSBVCP)
return;
if (m_internalModule == MODULE_TYPE_CROSSFIRE &&
generalSettings.serialPort[GeneralSettings::SP_VCP] == GeneralSettings::AUX_SERIAL_OFF) {
generalSettings.serialPort[GeneralSettings::SP_VCP] = GeneralSettings::AUX_SERIAL_CLI;
serialPortUSBVCP->updateValue();
}
auto view = dynamic_cast<QListView*>(serialPortUSBVCP->view());
Q_ASSERT(view);
for (int i = 0; i < serialPortUSBVCP->count(); i++) {
if (m_internalModule == MODULE_TYPE_CROSSFIRE && i == GeneralSettings::AUX_SERIAL_OFF)
view->setRowHidden(i, true);
else
view->setRowHidden(i, false);
}
}