Some fixes and proper defaults

This commit is contained in:
Raphael Coeffic
2022-03-21 11:52:20 +01:00
parent 17986843e3
commit cb739fc11e
4 changed files with 38 additions and 10 deletions
+14
View File
@@ -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;
}
+1
View File
@@ -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);
};
+10 -1
View File
@@ -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;
+13 -9
View File
@@ -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; i<moduleBaudratesList.size(); i++) {
ui->telemetryBaudrate->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();
}