mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
Add a new parameter "Use Global Functions" for model where they are not
needed
This commit is contained in:
parent
13772429f9
commit
aa28af6235
5 changed files with 23 additions and 7 deletions
|
@ -887,6 +887,7 @@ class ModelData {
|
||||||
bool used;
|
bool used;
|
||||||
char name[12+1];
|
char name[12+1];
|
||||||
TimerData timers[C9X_MAX_TIMERS];
|
TimerData timers[C9X_MAX_TIMERS];
|
||||||
|
bool noGlobalFunctions;
|
||||||
bool thrTrim; // Enable Throttle Trim
|
bool thrTrim; // Enable Throttle Trim
|
||||||
int trimInc; // Trim Increments
|
int trimInc; // Trim Increments
|
||||||
bool disableThrottleWarning;
|
bool disableThrottleWarning;
|
||||||
|
|
|
@ -2630,10 +2630,13 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
|
|
||||||
internalField.Append(new BoolField<1>(modelData.thrTrim));
|
internalField.Append(new BoolField<1>(modelData.thrTrim));
|
||||||
|
|
||||||
if (IS_TARANIS(board) || (IS_ARM(board) && version >= 216))
|
if (IS_TARANIS(board) || (IS_ARM(board) && version >= 216)) {
|
||||||
|
internalField.Append(new BoolField<1>(modelData.noGlobalFunctions));
|
||||||
internalField.Append(new SpareBitsField<4>());
|
internalField.Append(new SpareBitsField<4>());
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
internalField.Append(new ConversionField< SignedField<4> >(modelData.moduleData[0].channelsCount, &channelsConversionTable, "Channels number", ::QObject::tr("OpenTX doesn't allow this number of channels")));
|
internalField.Append(new ConversionField< SignedField<4> >(modelData.moduleData[0].channelsCount, &channelsConversionTable, "Channels number", ::QObject::tr("OpenTX doesn't allow this number of channels")));
|
||||||
|
}
|
||||||
|
|
||||||
if (version >= 216)
|
if (version >= 216)
|
||||||
internalField.Append(new SignedField<3>(modelData.trimInc));
|
internalField.Append(new SignedField<3>(modelData.trimInc));
|
||||||
|
|
|
@ -903,6 +903,7 @@ enum menuModelSetupItems {
|
||||||
ITEM_MODEL_SWITCHES_WARNING,
|
ITEM_MODEL_SWITCHES_WARNING,
|
||||||
CASE_PCBTARANIS(ITEM_MODEL_POT_WARNING)
|
CASE_PCBTARANIS(ITEM_MODEL_POT_WARNING)
|
||||||
ITEM_MODEL_BEEP_CENTER,
|
ITEM_MODEL_BEEP_CENTER,
|
||||||
|
CASE_CPUARM(ITEM_MODEL_USE_GLOBAL_FUNCTIONS)
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS)
|
||||||
ITEM_MODEL_INTERNAL_MODULE_LABEL,
|
ITEM_MODEL_INTERNAL_MODULE_LABEL,
|
||||||
ITEM_MODEL_INTERNAL_MODULE_MODE,
|
ITEM_MODEL_INTERNAL_MODULE_MODE,
|
||||||
|
@ -1006,7 +1007,7 @@ void menuModelSetup(uint8_t event)
|
||||||
#define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0)
|
#define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0)
|
||||||
#define TIMER_ROWS 2, 0, CASE_PERSISTENT_TIMERS(0) 0, 0
|
#define TIMER_ROWS 2, 0, CASE_PERSISTENT_TIMERS(0) 0, 0
|
||||||
bool CURSOR_ON_CELL = (m_posHorz >= 0);
|
bool CURSOR_ON_CELL = (m_posHorz >= 0);
|
||||||
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 7, POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
|
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 7, POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), 0, LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
|
||||||
#elif defined(CPUARM)
|
#elif defined(CPUARM)
|
||||||
#define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW)
|
#define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW)
|
||||||
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
|
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
|
||||||
|
@ -1025,7 +1026,7 @@ void menuModelSetup(uint8_t event)
|
||||||
#define EXTRA_MODULE_ROWS
|
#define EXTRA_MODULE_ROWS
|
||||||
#endif
|
#endif
|
||||||
#define TRAINER_MODULE_ROWS
|
#define TRAINER_MODULE_ROWS
|
||||||
MENU_TAB({ 0, 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS });
|
MENU_TAB({ 0, 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, 0, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS });
|
||||||
#elif defined(CPUM64)
|
#elif defined(CPUM64)
|
||||||
#define CURSOR_ON_CELL (true)
|
#define CURSOR_ON_CELL (true)
|
||||||
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX)
|
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX)
|
||||||
|
@ -1443,6 +1444,14 @@ void menuModelSetup(uint8_t event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(CPUARM)
|
||||||
|
case ITEM_MODEL_USE_GLOBAL_FUNCTIONS:
|
||||||
|
lcd_putsLeft(y, "Use Global Funcs");
|
||||||
|
menu_lcd_onoff(MODEL_SETUP_2ND_COLUMN, y, !g_model.noGlobalFunctions, attr);
|
||||||
|
if (attr) g_model.noGlobalFunctions = !checkIncDecModel(event, !g_model.noGlobalFunctions, 0, 1);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(PCBSKY9X) && !defined(REVX)
|
#if defined(PCBSKY9X) && !defined(REVX)
|
||||||
case ITEM_MODEL_EXTRA_MODULE_LABEL:
|
case ITEM_MODEL_EXTRA_MODULE_LABEL:
|
||||||
lcd_putsLeft(y, "RF Port 2 (PPM)");
|
lcd_putsLeft(y, "RF Port 2 (PPM)");
|
||||||
|
|
|
@ -1041,7 +1041,9 @@ void evalMixes(uint8_t tick10ms)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
|
if (!g_model.noGlobalFunctions) {
|
||||||
evalFunctions(g_eeGeneral.customFn, globalFunctionsContext);
|
evalFunctions(g_eeGeneral.customFn, globalFunctionsContext);
|
||||||
|
}
|
||||||
evalFunctions(g_model.customFn, modelFunctionsContext);
|
evalFunctions(g_model.customFn, modelFunctionsContext);
|
||||||
#else
|
#else
|
||||||
evalFunctions();
|
evalFunctions();
|
||||||
|
|
|
@ -331,7 +331,7 @@ enum uartModes {
|
||||||
#define EXTRA_GENERAL_FIELDS
|
#define EXTRA_GENERAL_FIELDS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PACK(typedef struct t_ModuleData {
|
PACK(typedef struct {
|
||||||
int8_t rfProtocol;
|
int8_t rfProtocol;
|
||||||
uint8_t channelsStart;
|
uint8_t channelsStart;
|
||||||
int8_t channelsCount; // 0=8 channels
|
int8_t channelsCount; // 0=8 channels
|
||||||
|
@ -1830,7 +1830,8 @@ PACK(typedef struct {
|
||||||
ARM_FIELD(uint8_t telemetryProtocol:3)
|
ARM_FIELD(uint8_t telemetryProtocol:3)
|
||||||
uint8_t thrTrim:1; // Enable Throttle Trim
|
uint8_t thrTrim:1; // Enable Throttle Trim
|
||||||
AVR_FIELD(int8_t ppmNCH:4)
|
AVR_FIELD(int8_t ppmNCH:4)
|
||||||
ARM_FIELD(int8_t spare2:4)
|
ARM_FIELD(uint8_t noGlobalFunctions:1)
|
||||||
|
ARM_FIELD(int8_t spare2:3)
|
||||||
int8_t trimInc:3; // Trim Increments
|
int8_t trimInc:3; // Trim Increments
|
||||||
uint8_t disableThrottleWarning:1;
|
uint8_t disableThrottleWarning:1;
|
||||||
ARM_FIELD(uint8_t displayChecklist:1)
|
ARM_FIELD(uint8_t displayChecklist:1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue