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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user