Fixes 5602 Special Functions Inc/Dec Gvar (#6442)

Fixes #5602 (2.3)
This commit is contained in:
Neil Horne
2019-06-01 15:30:07 +02:00
committed by Bertrand Songis
parent 96e3bf0d70
commit 882e9638cc
6 changed files with 32 additions and 4 deletions
+11 -2
View File
@@ -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 "";
+10 -2
View File
@@ -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 {
@@ -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;
@@ -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;
@@ -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;
+8
View File
@@ -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 {