fix(cpn): Improve module and protocol conversion (#2237)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user