diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 4db9ede31..b94351391 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -725,7 +725,7 @@ void ConvertModel_215_to_216(ModelData &model) g_model.thrTraceSrc = oldModel.thrTraceSrc; #if defined(PCBTARANIS) // S3 added - if (g_model.thrTraceSrc >= 3) + if (g_model.thrTraceSrc >= THROTTLE_SOURCE_S3) g_model.thrTraceSrc += 1; #endif g_model.switchWarningStates = oldModel.switchWarningStates >> 1; diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 236395671..9620e11af 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -1134,7 +1134,7 @@ void menuModelSetup(uint8_t event) case ITEM_MODEL_THROTTLE_TRACE: { lcd_putsLeft(y, STR_TTRACE); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.thrTraceSrc, NUM_POTS+NUM_CHNOUT); + if (attr) CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, g_model.thrTraceSrc, NUM_POTS+NUM_CHNOUT, isThrottleSourceAvailable); uint8_t idx = g_model.thrTraceSrc + MIXSRC_Thr; if (idx > MIXSRC_Thr) idx += 1; diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 70ceb4412..ef0f4aa49 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1473,6 +1473,15 @@ bool isSwitchAvailable(int swtch) return true; } +bool isThrottleSourceAvailable(int source) +{ +#if defined(PCBTARANIS) + if (source == THROTTLE_SOURCE_S3 && !IS_POT_AVAILABLE(POT3)) + return false; +#endif + return true; +} + bool isLogicalSwitchFunctionAvailable(int function) { return function != LS_FUNC_RANGE; diff --git a/radio/src/gui/menus.h b/radio/src/gui/menus.h index 3ee37c250..5f665d991 100644 --- a/radio/src/gui/menus.h +++ b/radio/src/gui/menus.h @@ -202,6 +202,7 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); #endif #if defined(CPUARM) + bool isThrottleSourceAvailable(int source); bool isLogicalSwitchFunctionAvailable(int function); bool isAssignableFunctionAvailable(int function); bool isSwitchAvailable(int swtch); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 119c69f87..7908e0d6b 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1605,6 +1605,22 @@ PACK(typedef struct { #define AVR_FIELD(x) x; #endif +enum ThrottleSources { + THROTTLE_SOURCE_THR, +#if defined(PCBTARANIS) + THROTTLE_SOURCE_S1, + THROTTLE_SOURCE_S2, + THROTTLE_SOURCE_S3, + THROTTLE_SOURCE_LS, + THROTTLE_SOURCE_RS, +#else + THROTTLE_SOURCE_P1, + THROTTLE_SOURCE_P2, + THROTTLE_SOURCE_P3, +#endif + THROTTLE_SOURCE_CH1, +}; + PACK(typedef struct t_ModelData { ModelHeader header; TimerData timers[MAX_TIMERS];