diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 18379d773..88c6f803d 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -615,6 +615,8 @@ QString FuncSwData::funcToString() return QObject::tr("Play Haptic"); else if (func == FuncReset) return QObject::tr("Reset"); + else if (func == FuncSetTimer) + return QObject::tr("Set Timer"); else if (func == FuncVario) return QObject::tr("Vario"); else if (func == FuncPlayPrompt) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 8f78c2d71..d84f018f0 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -642,6 +642,7 @@ enum AssignFunc { FuncPlaySound, FuncPlayHaptic, FuncReset, + FuncSetTimer, FuncVario, FuncPlayPrompt, FuncPlayBoth, diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index e0365487b..bb56d1d15 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -1307,6 +1307,8 @@ class CustomFunctionsConversionTable: public ConversionTable { addConversion(FuncInstantTrim, val++); if (version >= 216) { addConversion(FuncReset, val++); + if (IS_ARM(board)) + addConversion(FuncSetTimer, val++); for (int i=0; i0 || p1valdiff) && attr) { switch (horz) { case LS_FIELD_FUNCTION: @@ -4679,9 +4678,9 @@ void menuModelLogicalSwitches(uint8_t event) #endif #if LCD_W >= 212 - #define MODEL_CUSTOM_FUNC_1ST_COLUMN (5+4*FW) - #define MODEL_CUSTOM_FUNC_2ND_COLUMN (9*FW) - #define MODEL_CUSTOM_FUNC_3RD_COLUMN (21*FW) + #define MODEL_CUSTOM_FUNC_1ST_COLUMN (5+3*FW) + #define MODEL_CUSTOM_FUNC_2ND_COLUMN (8*FW) + #define MODEL_CUSTOM_FUNC_3RD_COLUMN (20*FW) #define MODEL_CUSTOM_FUNC_4TH_COLUMN (33*FW-3) #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (34*FW-3) #else @@ -4798,7 +4797,11 @@ void menuModelCustomFunctions(uint8_t event) if (CFN_SWITCH(sd)) { lcd_putsiAtt(MODEL_CUSTOM_FUNC_2ND_COLUMN, y, STR_VFSWFUNC, func, attr); if (active) { +#if defined(CPUARM) + CFN_FUNC(sd) = checkIncDec(event, CFN_FUNC(sd), 0, FUNC_MAX-1, EE_MODEL, isAssignableFunctionAvailable); +#else CHECK_INCDEC_MODELVAR_ZERO(event, CFN_FUNC(sd), FUNC_MAX-1); +#endif if (checkIncDec_Ret) CFN_RESET(sd); } } @@ -4844,17 +4847,26 @@ void menuModelCustomFunctions(uint8_t event) INCDEC_DECLARE_VARS(); int16_t val_displayed = CFN_PARAM(sd); int8_t val_min = 0; +#if defined(CPUARM) + int16_t val_max = 255; +#else uint8_t val_max = 255; +#endif if (func == FUNC_SAFETY_CHANNEL) { val_displayed = (int8_t)CFN_PARAM(sd); val_min = -125; val_max = 125; lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); } +#if defined(CPUARM) + else if (func == FUNC_SET_TIMER) { + val_max = 59*60+59; + putsTime(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT, attr); + } +#endif #if defined(AUDIO) else if (func == FUNC_PLAY_SOUND) { val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); - break; } #endif #if defined(HAPTIC) diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 3296994d4..5bdbeb484 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1306,6 +1306,11 @@ bool isAssignableFunctionAvailable(int16_t function) return false; #endif +#if !defined(GVARS) + case FUNC_ADJUST_GVAR: + return false; +#endif + default: return true; } diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index cbcfd1389..2ec811d6c 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -726,6 +726,9 @@ enum Functions { FUNC_TRAINER, FUNC_INSTANT_TRIM, FUNC_RESET, +#if defined(CPUARM) + FUNC_SET_TIMER, +#endif FUNC_ADJUST_GVAR, #if defined(CPUARM) FUNC_VOLUME, diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 6f2777606..1e0260733 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -225,7 +225,7 @@ #endif #if defined(CPUARM) - #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR "Volume\0 " TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST + #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set Timer\0" TR_ADJUST_GVAR "Volume\0 " TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST #elif defined(PCBGRUVIN9X) #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST #else