From 882e9638cc5e532d72eaab62eb7835ae79ed4192 Mon Sep 17 00:00:00 2001 From: Neil Horne Date: Sat, 1 Jun 2019 23:30:07 +1000 Subject: [PATCH] Fixes 5602 Special Functions Inc/Dec Gvar (#6442) Fixes #5602 (2.3) --- companion/src/firmwares/customfunctiondata.cpp | 13 +++++++++++-- companion/src/modeledit/customfunctions.cpp | 12 ++++++++++-- radio/src/gui/128x64/model_special_functions.cpp | 1 + radio/src/gui/212x64/model_special_functions.cpp | 1 + radio/src/gui/480x272/model_special_functions.cpp | 1 + radio/src/opentx.h | 8 ++++++++ 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/companion/src/firmwares/customfunctiondata.cpp b/companion/src/firmwares/customfunctiondata.cpp index fb2ef55b7..c93e0965b 100644 --- a/companion/src/firmwares/customfunctiondata.cpp +++ b/companion/src/firmwares/customfunctiondata.cpp @@ -206,8 +206,17 @@ QString CustomFunctionData::paramToString(const ModelData * model) const case FUNC_ADJUST_GVAR_GVAR: return RawSource(param).toString(); case FUNC_ADJUST_GVAR_INCDEC: - if (param==0) return tr("Decr:") + " -1"; - else return tr("Incr:") + " +1"; + float val; + QString unit; + if (IS_ARM(getCurrentBoard())) { + val = param * model->gvarData[func - FuncAdjustGV1].multiplierGet(); + unit = model->gvarData[func - FuncAdjustGV1].unitToString(); + } + else { + val = param; + unit = ""; + } + return QString("Increment: %1%2").arg(val).arg(unit); } } return ""; diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 440a7a55d..f4f4bb6a0 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -426,8 +426,16 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) fswtchParam[i]->setDecimals(model->gvarData[gvidx].prec); fswtchParam[i]->setSingleStep(model->gvarData[gvidx].multiplierGet()); fswtchParam[i]->setSuffix(model->gvarData[gvidx].unitToString()); - fswtchParam[i]->setMinimum(model->gvarData[gvidx].getMinPrec()); - fswtchParam[i]->setMaximum(model->gvarData[gvidx].getMaxPrec()); + if (cfn.adjustMode==FUNC_ADJUST_GVAR_INCDEC) { + double rng = abs(model->gvarData[gvidx].getMax() - model->gvarData[gvidx].getMin()); + rng *= model->gvarData[gvidx].multiplierGet(); + fswtchParam[i]->setMinimum(-rng); + fswtchParam[i]->setMaximum(rng); + } + else { + fswtchParam[i]->setMinimum(model->gvarData[gvidx].getMinPrec()); + fswtchParam[i]->setMaximum(model->gvarData[gvidx].getMaxPrec()); + } fswtchParam[i]->setValue(cfn.param * model->gvarData[gvidx].multiplierGet()); } else { diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index b2fc7cdff..a6b18ddf3 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -370,6 +370,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF break; default: // FUNC_ADJUST_GVAR_INC getMixSrcRange(CFN_GVAR_INDEX(cfn) + MIXSRC_FIRST_GVAR, val_min, val_max); + getGVarIncDecRange(val_min, val_max); lcdDrawText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, (val_displayed < 0 ? "-= " : "+= "), attr); drawGVarValue(lcdNextPos, y, CFN_GVAR_INDEX(cfn), abs(val_displayed), attr|LEFT); break; diff --git a/radio/src/gui/212x64/model_special_functions.cpp b/radio/src/gui/212x64/model_special_functions.cpp index 3bdbfbc74..2f382e45e 100644 --- a/radio/src/gui/212x64/model_special_functions.cpp +++ b/radio/src/gui/212x64/model_special_functions.cpp @@ -364,6 +364,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF break; default: // FUNC_ADJUST_GVAR_INC getMixSrcRange(CFN_GVAR_INDEX(cfn) + MIXSRC_FIRST_GVAR, val_min, val_max); + getGVarIncDecRange(val_min, val_max); lcdDrawText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, (val_displayed < 0 ? "-= " : "+= "), attr); drawGVarValue(lcdNextPos, y, CFN_GVAR_INDEX(cfn), abs(val_displayed), attr|LEFT); break; diff --git a/radio/src/gui/480x272/model_special_functions.cpp b/radio/src/gui/480x272/model_special_functions.cpp index 7d4d6c46c..6ae8c4d11 100644 --- a/radio/src/gui/480x272/model_special_functions.cpp +++ b/radio/src/gui/480x272/model_special_functions.cpp @@ -359,6 +359,7 @@ bool menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF break; default: // FUNC_ADJUST_GVAR_INC getMixSrcRange(CFN_GVAR_INDEX(cfn) + MIXSRC_FIRST_GVAR, val_min, val_max); + getGVarIncDecRange(val_min, val_max); lcdDrawText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, (val_displayed < 0 ? "-= " : "+= "), attr); drawGVarValue(lcdNextPos, y, CFN_GVAR_INDEX(cfn), abs(val_displayed), attr|LEFT); break; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 45be10f47..0492709ef 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -801,6 +801,14 @@ inline void getMixSrcRange(const int source, int16_t & valMin, int16_t & valMax, valMin = -valMax; } } +#if defined(GVAR_MAX) +inline void getGVarIncDecRange(int16_t & valMin, int16_t & valMax) +{ + int16_t rng = abs(valMax - valMin); + valMin = -rng; + valMax = rng; +} +#endif // Curves enum BaseCurves {