Use a list of supported internal modules rather than a module by module test

This commit is contained in:
Raphael Coeffic
2022-01-02 13:05:09 +01:00
committed by Raphael Coeffic
parent a719b2429f
commit 1c823120e4
3 changed files with 84 additions and 6 deletions
+62
View File
@@ -21,6 +21,7 @@
#include "boards.h"
#include "macros.h"
#include "compounditemmodels.h"
#include "moduledata.h"
// TODO remove all those constants
// Update: These are now all only used within this class.
@@ -808,3 +809,64 @@ StringTagMappingTable Boards::getTrimSourcesLookupTable(Board::Type board)
return tbl;
}
QList<ModuleType> Boards::getSupportedInternalModules(Board::Type board)
{
QList<ModuleType> modules;
if (IS_TARANIS_X9DP_2019(board) || IS_TARANIS_X7_ACCESS(board)) {
modules = {MODULE_TYPE_ISRM_PXX2};
} else if (IS_FLYSKY_NV14(board)) {
modules = {MODULE_TYPE_FLYSKY};
} else if (IS_FAMILY_HORUS_OR_T16(board) || IS_FAMILY_T12(board)
|| (IS_TARANIS_SMALL(board) && IS_ACCESS_RADIO(board))) {
modules.append({
MODULE_TYPE_XJT_PXX1,
MODULE_TYPE_ISRM_PXX2,
MODULE_TYPE_CROSSFIRE,
MODULE_TYPE_MULTIMODULE,
});
} else if (IS_TARANIS(board)) {
modules = {MODULE_TYPE_XJT_PXX1};
}
return modules;
}
ModuleType Boards::getDefaultInternalModules(Board::Type board)
{
switch(board) {
case BOARD_TARANIS_X7:
case BOARD_TARANIS_X9D:
case BOARD_TARANIS_X9DP:
case BOARD_TARANIS_X9E:
case BOARD_HORUS_X12S:
case BOARD_X10:
case BOARD_TARANIS_XLITE:
return MODULE_TYPE_XJT_PXX1;
case BOARD_TARANIS_X7_ACCESS:
case BOARD_TARANIS_X9DP_2019:
case BOARD_X10_EXPRESS:
case BOARD_TARANIS_XLITES:
case BOARD_TARANIS_X9LITE:
case BOARD_TARANIS_X9LITES:
return MODULE_TYPE_ISRM_PXX2;
case BOARD_JUMPER_T12:
case BOARD_JUMPER_T16:
case BOARD_RADIOMASTER_TX16S:
case BOARD_JUMPER_T18:
case BOARD_RADIOMASTER_TX12:
case BOARD_RADIOMASTER_T8:
case BOARD_JUMPER_TLITE:
case BOARD_RADIOMASTER_ZORRO:
case BOARD_JUMPER_TPRO:
return MODULE_TYPE_MULTIMODULE;
case BOARD_FLYSKY_NV14:
return MODULE_TYPE_FLYSKY;
default:
return MODULE_TYPE_NONE;
}
}
+19 -4
View File
@@ -20,6 +20,7 @@
#pragma once
#include "datahelpers.h"
#include "moduledata.h"
#include <QtCore>
#include <QObject>
@@ -219,7 +220,9 @@ class Boards
static AbstractStaticItemModel * intModuleTypeItemModel();
static StringTagMappingTable getTrimSwitchesLookupTable(Board::Type board);
static StringTagMappingTable getTrimSourcesLookupTable(Board::Type board);
static QList<ModuleType> getSupportedInternalModules(Board::Type board);
static ModuleType getDefaultInternalModules(Board::Type board);
protected:
Board::Type m_boardType;
@@ -291,7 +294,12 @@ inline bool IS_FAMILY_T16(Board::Type board)
inline bool IS_FAMILY_T12(Board::Type board)
{
return board == Board::BOARD_JUMPER_T12 || board == Board::BOARD_RADIOMASTER_TX12 || board == Board::BOARD_RADIOMASTER_ZORRO || board == Board::BOARD_RADIOMASTER_T8 || board == Board::BOARD_JUMPER_TLITE;
return board == Board::BOARD_JUMPER_T12 ||
board == Board::BOARD_RADIOMASTER_TX12 ||
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_T8 ||
board == Board::BOARD_JUMPER_TLITE ||
board == Board::BOARD_JUMPER_TPRO;
}
inline bool IS_FLYSKY_NV14(Board::Type board)
@@ -409,10 +417,17 @@ inline bool IS_TARANIS_X9DP_2019(Board::Type board)
return (board == Board::BOARD_TARANIS_X9DP_2019);
}
inline bool IS_ACCESS_RADIO(Board::Type board)
{
return IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) ||
board == Board::BOARD_TARANIS_X9DP_2019 ||
board == Board::BOARD_X10_EXPRESS || IS_TARANIS_X7_ACCESS(board);
}
inline bool IS_ACCESS_RADIO(Board::Type board, const QString & id)
{
return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) || board == Board::BOARD_TARANIS_X9DP_2019 || board == Board::BOARD_X10_EXPRESS || IS_TARANIS_X7_ACCESS(board) ||
(IS_FAMILY_HORUS_OR_T16(board) && id.contains("internalaccess")));
return IS_ACCESS_RADIO(board) ||
(IS_FAMILY_HORUS_OR_T16(board) && id.contains("internalaccess"));
}
inline bool HAS_EEPROM_YAML(Board::Type board)
+3 -2
View File
@@ -407,8 +407,9 @@ AbstractStaticItemModel * ModuleData::internalModuleItemModel()
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
mdl->setName("moduledata.internalmodule");
for (int i = 0; i < MODULE_TYPE_COUNT; i++) {
mdl->appendToItemList(typeToString(i), i, isInternalModuleAvailable(i));
auto modules = Boards::getSupportedInternalModules(getCurrentBoard());
for(auto mod : modules) {
mdl->appendToItemList(typeToString(mod), mod);
}
mdl->loadItemList();