From cb739fc11ebf490c15cebb8871dadc773111e16f Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Fri, 18 Mar 2022 11:09:45 +0100 Subject: [PATCH] Some fixes and proper defaults --- companion/src/firmwares/moduledata.cpp | 14 ++++++++++++++ companion/src/firmwares/moduledata.h | 1 + companion/src/generaledit/hardware.cpp | 11 ++++++++++- companion/src/modeledit/setup.cpp | 22 +++++++++++++--------- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index 7556c719b..7a474cbbf 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -496,3 +496,17 @@ AbstractStaticItemModel * ModuleData::protocolItemModel(GeneralSettings & settin mdl->loadItemList(); return mdl; } + +AbstractStaticItemModel * ModuleData::telemetryBaudrateItemModel(unsigned int protocol) +{ + AbstractStaticItemModel * mdl = new AbstractStaticItemModel(); + mdl->setName("moduledata.baudrate"); + + for (int i = 0; i < moduleBaudratesList.size(); i++) { + if (protocol == PULSES_GHOST && i >= 2) break; + mdl->appendToItemList(moduleBaudratesList.at(i), i); + } + + mdl->loadItemList(); + return mdl; +} diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 93c5584b3..dba164ce1 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -261,4 +261,5 @@ class ModuleData { static AbstractStaticItemModel * internalModuleItemModel(int board = -1); static bool isProtocolAvailable(int moduleidx, unsigned int protocol, GeneralSettings & settings); static AbstractStaticItemModel * protocolItemModel(GeneralSettings & settings); + static AbstractStaticItemModel * telemetryBaudrateItemModel(unsigned int protocol); }; diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index 0f64ff369..54728c30f 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -281,7 +281,16 @@ void HardwarePanel::on_internalModuleChanged() else { m_internalModule = generalSettings.internalModule; if (m_internalModule == MODULE_TYPE_GHOST || m_internalModule == MODULE_TYPE_CROSSFIRE) { - // TODO: set proper default baudrate + + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + internalModuleBaudRate->setCurrentIndex(0); + } else { + // default to 400k + internalModuleBaudRate->setCurrentIndex(1); + } + internalModuleBaudRate->setVisible(true); } else { generalSettings.internalModuleBaudrate = 0; diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 79a3695e5..624a0fb8c 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -447,11 +447,13 @@ void ModulePanel::update() case PULSES_CROSSFIRE: mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); ui->telemetryBaudrate->setField(module.crsf.telemetryBaudrate); break; case PULSES_GHOST: mask |= MASK_CHANNELS_RANGE | MASK_GHOST | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); ui->telemetryBaudrate->setField(module.ghost.telemetryBaudrate); break; case PULSES_PPM: @@ -500,16 +502,7 @@ void ModulePanel::update() ui->label_protocol->setVisible(mask & MASK_PROTOCOL); ui->protocol->setVisible(mask & MASK_PROTOCOL); - ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); - ui->telemetryBaudrate->clear(); - if (mask & MASK_BAUDRATE) { - // TODO: limit the number of items based on proto (CRSF/GHOST) - for (int i = 0; itelemetryBaudrate->addItem(moduleBaudratesList.at(i), i); - } - } - ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setMaximum(max_rx_num); @@ -703,6 +696,17 @@ void ModulePanel::onProtocolChanged(int index) if (!lock) { module.channelsCount = module.getMaxChannelCount(); update(); + if (module.protocol == PULSES_GHOST || + module.protocol == PULSES_CROSSFIRE) { + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + ui->telemetryBaudrate->setCurrentIndex(0); + } else { + // default to 400k + ui->telemetryBaudrate->setCurrentIndex(1); + } + } emit updateItemModels(); emit modified(); }