refactor: FLASH size optimisations for B&W (#4827)
This commit is contained in:
@@ -42,3 +42,94 @@ bool isExternalAntennaEnabled()
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int8_t maxModuleChannels_M8(uint8_t moduleIdx)
|
||||
{
|
||||
if (isExtraModule(moduleIdx)) {
|
||||
return MAX_EXTRA_MODULE_CHANNELS_M8;
|
||||
} else if (isModuleXJT(moduleIdx)) {
|
||||
return maxChannelsXJT_M8[1 + g_model.moduleData[moduleIdx].subType];
|
||||
} else if (isModuleISRMD16(moduleIdx)) {
|
||||
return maxChannelsXJT_M8[MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16];
|
||||
} else if (isModuleR9M(moduleIdx)) {
|
||||
if (isModuleR9M_LBT(moduleIdx)) {
|
||||
if (isModuleR9MLite(moduleIdx))
|
||||
return g_model.moduleData[moduleIdx].pxx.power ==
|
||||
R9M_LITE_LBT_POWER_25_8CH
|
||||
? 0
|
||||
: 8;
|
||||
else
|
||||
return g_model.moduleData[moduleIdx].pxx.power == R9M_LBT_POWER_25_8CH
|
||||
? 0
|
||||
: 8;
|
||||
} else {
|
||||
return 8; // always 16 channels in FCC / FLEX
|
||||
}
|
||||
} else if (isModuleMultimoduleDSM2(moduleIdx)) {
|
||||
return 4; // 12 channels
|
||||
} else if (isModuleDSMP(moduleIdx) &&
|
||||
(g_model.moduleData[moduleIdx].dsmp.flags != 0)) {
|
||||
return g_model.moduleData[moduleIdx].channelsCount;
|
||||
} else {
|
||||
return maxChannelsModules_M8[g_model.moduleData[moduleIdx].type];
|
||||
}
|
||||
}
|
||||
|
||||
int8_t sentModuleChannels(uint8_t idx)
|
||||
{
|
||||
if (isModuleCrossfire(idx))
|
||||
return CROSSFIRE_CHANNELS_COUNT;
|
||||
else if (isModuleGhost(idx))
|
||||
return GHOST_CHANNELS_COUNT;
|
||||
else if (isModuleMultimodule(idx) && !isModuleMultimoduleDSM2(idx))
|
||||
return 16;
|
||||
else if (isModuleSBUS(idx))
|
||||
return 16;
|
||||
else
|
||||
return sentModulePXXChannels(idx);
|
||||
}
|
||||
|
||||
uint8_t getMaxRxNum(uint8_t idx)
|
||||
{
|
||||
if (isModuleDSM2(idx))
|
||||
return 20;
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
if (isModuleMultimodule(idx)) {
|
||||
switch (g_model.moduleData[idx].multi.rfProtocol) {
|
||||
case MODULE_SUBTYPE_MULTI_OLRS:
|
||||
return MODULE_SUBTYPE_MULTI_OLRS_RXNUM;
|
||||
case MODULE_SUBTYPE_MULTI_BUGS:
|
||||
return MODULE_SUBTYPE_MULTI_BUGS_RXNUM;
|
||||
case MODULE_SUBTYPE_MULTI_BUGS_MINI:
|
||||
return MODULE_SUBTYPE_MULTI_BUGS_MINI_RXNUM;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(AFHDS3)
|
||||
if (isModuleAFHDS3(idx)) return AFHDS3_MAX_MODEL_ID;
|
||||
#endif
|
||||
|
||||
return MAX_RXNUM;
|
||||
}
|
||||
|
||||
void setModuleType(uint8_t moduleIdx, uint8_t moduleType)
|
||||
{
|
||||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||
memclear(&moduleData, sizeof(ModuleData));
|
||||
moduleData.type = moduleType;
|
||||
moduleData.channelsCount = defaultModuleChannels_M8(moduleIdx);
|
||||
if (moduleData.type == MODULE_TYPE_SBUS)
|
||||
moduleData.sbus.refreshRate = -31;
|
||||
else if (moduleData.type == MODULE_TYPE_PPM)
|
||||
setDefaultPpmFrameLength(moduleIdx);
|
||||
else if (moduleData.type == MODULE_TYPE_FLYSKY_AFHDS2A) {
|
||||
resetAfhds2AOptions(moduleIdx);
|
||||
}
|
||||
else if (moduleData.type == MODULE_TYPE_FLYSKY_AFHDS3) {
|
||||
resetAfhds3Options(moduleIdx);
|
||||
}
|
||||
else
|
||||
resetAccessAuthenticationCount();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user