fix(cpn): Improve module and protocol conversion (#2237)

This commit is contained in:
elecpower
2022-09-01 20:56:59 +10:00
committed by Peter Feerick
parent c6b7aca5fa
commit 8aa2b55c50
5 changed files with 29 additions and 7 deletions
+1 -2
View File
@@ -294,7 +294,6 @@ inline bool IS_RADIOMASTER_ZORRO(Board::Type board)
return board == Board::BOARD_RADIOMASTER_ZORRO;
}
inline bool IS_RADIOMASTER_T8(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_T8;
@@ -313,7 +312,7 @@ inline bool IS_FAMILY_T12(Board::Type board)
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_T8 ||
board == Board::BOARD_JUMPER_TLITE ||
board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_JUMPER_TPRO;
}
+5 -1
View File
@@ -169,7 +169,11 @@ enum Capability {
HasModelsList,
HasFlySkyGimbals,
RotaryEncoderNavigation,
HasSoftwareSerialPower
HasSoftwareSerialPower,
HasIntModuleMulti,
HasIntModuleCRSF,
HasIntModuleELRS,
HasIntModuleFlySky,
};
class EEPROMInterface
@@ -346,6 +346,15 @@ void GeneralSettings::convert(RadioDataConversionState & cstate)
setDefaultControlTypes(cstate.toType); // start with default switches/pots/sliders
cstate.setComponent("Hardware");
cstate.setItemType("Int. Module");
RadioDataConversionState::LogField oldData(internalModule, ModuleData::typeToString(internalModule));
if (internalModule != MODULE_TYPE_NONE && (int)internalModule != g.currentProfile().defaultInternalModule()) {
internalModule = MODULE_TYPE_NONE;
cstate.setInvalid(oldData);
}
// Try to intelligently copy any custom control names
// SE and SG are skipped on X7 board
+1 -1
View File
@@ -441,7 +441,7 @@ void ModelData::convert(RadioDataConversionState & cstate)
origin = QString::number(cstate.modelIdx+1);
cstate.setOrigin(tr("Model: ") % origin);
cstate.setComponent("SET", 0);
cstate.setComponent("Settings", 0);
if (thrTraceSrc && (int)thrTraceSrc < cstate.fromBoard.getCapability(Board::Pots) + cstate.fromBoard.getCapability(Board::Sliders)) {
cstate.setSubComp(tr("Throttle Source"));
thrTraceSrc = RawSource(SOURCE_TYPE_STICK, (int)thrTraceSrc + 3).convert(cstate).index - 3;
@@ -786,6 +786,16 @@ int OpenTxFirmware::getCapability(::Capability capability)
IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board));
case HasSoftwareSerialPower:
return IS_RADIOMASTER_TX16S(board);
case HasIntModuleMulti:
return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) ||
IS_RADIOMASTER_TX12(board) || IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board) ||
(IS_RADIOMASTER_ZORRO(board) && !id.contains("internalelrs"));
case HasIntModuleCRSF:
return id.contains("internalcrsf");
case HasIntModuleELRS:
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board);
case HasIntModuleFlySky:
return id.contains("afhds3") || IS_FLYSKY_NV14(board);
default:
return 0;
}
@@ -831,11 +841,11 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
case PULSES_ACCST_ISRM_D16:
return IS_ACCESS_RADIO(board, id);
case PULSES_MULTIMODULE:
return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) || IS_RADIOMASTER_TX12(board) || IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board);
return getCapability(HasIntModuleMulti);
case PULSES_CROSSFIRE:
return IS_RADIOMASTER_TX12_MK2(board);
return getCapability(HasIntModuleCRSF) || getCapability(HasIntModuleELRS);
case PULSES_AFHDS3:
return IS_FLYSKY_NV14(board);
return getCapability(HasIntModuleFlySky);
default:
return false;
}