feat: Convert PPM_UNIT build option to runtime radio setting (#3993)
This commit is contained in:
@@ -34,14 +34,6 @@ enum MenuModelOutputsItems {
|
||||
ITEM_OUTPUTS_MAXROW = ITEM_OUTPUTS_COUNT-1
|
||||
};
|
||||
|
||||
#if defined(PPM_UNIT_US)
|
||||
#define LIMITS_MIN_POS 12*FW+1
|
||||
#define PREC_THRESHOLD 804
|
||||
#else
|
||||
#define LIMITS_MIN_POS 12*FW-2
|
||||
#define PREC_THRESHOLD 0
|
||||
#endif
|
||||
|
||||
#define LIMITS_OFFSET_POS 8*FW-1
|
||||
|
||||
#if defined(PPM_LIMITS_SYMETRICAL)
|
||||
@@ -70,14 +62,6 @@ enum MenuModelOutputsItems {
|
||||
#define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25)
|
||||
#define MIN_MAX_ATTR attr
|
||||
|
||||
#if defined(PPM_UNIT_US)
|
||||
#define SET_MIN_MAX(x, val) x = ((val)*250)/128
|
||||
#define MIN_MAX_DISPLAY(x) CONVERT_US_MIN_MAX(x)
|
||||
#else
|
||||
#define MIN_MAX_DISPLAY(x) (x)
|
||||
#define SET_MIN_MAX(x, val) x = (val)
|
||||
#endif
|
||||
|
||||
enum MenuModelOutputsOneItems {
|
||||
ITEM_OUTPUTONE_CH_NAME,
|
||||
ITEM_OUTPUTONE_OFFSET,
|
||||
@@ -96,6 +80,13 @@ enum MenuModelOutputsOneItems {
|
||||
|
||||
#define LIMITS_ONE_2ND_COLUMN (13*FW)
|
||||
|
||||
int32_t minMaxDisplay(int32_t val)
|
||||
{
|
||||
if (g_eeGeneral.ppmunit == PPM_US)
|
||||
val = CONVERT_US_MIN_MAX(val);
|
||||
return val;
|
||||
}
|
||||
|
||||
void menuModelLimitsOne(event_t event)
|
||||
{
|
||||
title(STR_MENULIMITS);
|
||||
@@ -135,7 +126,7 @@ void menuModelLimitsOne(event_t event)
|
||||
ld->min = GVAR_MENU_ITEM(LIMITS_ONE_2ND_COLUMN, y, ld->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, attr|PREC1, 0, event);
|
||||
break;
|
||||
}
|
||||
lcdDrawNumber(LIMITS_ONE_2ND_COLUMN, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), attr|PREC1);
|
||||
lcdDrawNumber(LIMITS_ONE_2ND_COLUMN, y, minMaxDisplay(ld->min-LIMITS_MIN_MAX_OFFSET), attr|PREC1);
|
||||
if (active) {
|
||||
ld->min = LIMITS_MIN_MAX_OFFSET + checkIncDec(event, ld->min-LIMITS_MIN_MAX_OFFSET, -limit, 0, EE_MODEL, nullptr, stops1000);
|
||||
}
|
||||
@@ -147,7 +138,7 @@ void menuModelLimitsOne(event_t event)
|
||||
ld->max = GVAR_MENU_ITEM(LIMITS_ONE_2ND_COLUMN, y, ld->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, attr|PREC1, 0, event);
|
||||
break;
|
||||
}
|
||||
lcdDrawNumber(LIMITS_ONE_2ND_COLUMN, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), attr|PREC1);
|
||||
lcdDrawNumber(LIMITS_ONE_2ND_COLUMN, y, minMaxDisplay(ld->max+LIMITS_MIN_MAX_OFFSET), attr|PREC1);
|
||||
if (active) {
|
||||
ld->max = -LIMITS_MIN_MAX_OFFSET + checkIncDec(event, ld->max+LIMITS_MIN_MAX_OFFSET, 0, +limit, EE_MODEL, nullptr, stops1000);
|
||||
}
|
||||
@@ -274,39 +265,42 @@ void menuModelLimits(event_t event)
|
||||
lcdDrawSizedText(0, y, ld->name, sizeof(ld->name), ((sub==k) ? INVERS : 0) | LEFT);
|
||||
}
|
||||
|
||||
coord_t limitsMinPos = (g_eeGeneral.ppmunit == PPM_US) ? 12*FW+1 : 12*FW-2;
|
||||
int precThreshold = (g_eeGeneral.ppmunit == PPM_US) ? 804 : 0;
|
||||
|
||||
for (uint8_t j=0; j<ITEM_OUTPUTS_COUNT; j++) {
|
||||
switch (j) {
|
||||
case ITEM_OUTPUTS_OFFSET:
|
||||
#if defined(PPM_UNIT_US)
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ((int32_t)ld->offset*128) / 25, PREC1|RIGHT);
|
||||
#else
|
||||
if (g_eeGeneral.ppmunit == PPM_US) {
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ((int32_t)ld->offset*128) / 25, PREC1|RIGHT);
|
||||
} else {
|
||||
#if defined(GVARS)
|
||||
if (GV_IS_GV_VALUE(ld->offset, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
drawGVarName(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
if (GV_IS_GV_VALUE(ld->offset, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
drawGVarName(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (abs(ld->offset) >= 1000) {
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ld->offset/10, RIGHT);
|
||||
if (abs(ld->offset) >= 1000) {
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ld->offset/10, RIGHT);
|
||||
}
|
||||
else {
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ld->offset, PREC1|RIGHT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
lcdDrawNumber(LIMITS_OFFSET_POS, y, ld->offset, PREC1|RIGHT);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ITEM_OUTPUTS_MIN:
|
||||
#if defined(GVARS)
|
||||
if (GV_IS_GV_VALUE(ld->min, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
drawGVarName(LIMITS_MIN_POS, y, ld->min, attr|PREC1|RIGHT);
|
||||
drawGVarName(limitsMinPos, y, ld->min, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (ld->min <= PREC_THRESHOLD) {
|
||||
lcdDrawNumber(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET)/10, RIGHT);
|
||||
if (ld->min <= precThreshold) {
|
||||
lcdDrawNumber(limitsMinPos, y, minMaxDisplay(ld->min-LIMITS_MIN_MAX_OFFSET)/10, RIGHT);
|
||||
}
|
||||
else {
|
||||
lcdDrawNumber(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), attr|PREC1|RIGHT);
|
||||
lcdDrawNumber(limitsMinPos, y, minMaxDisplay(ld->min-LIMITS_MIN_MAX_OFFSET), attr|PREC1|RIGHT);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -317,11 +311,11 @@ void menuModelLimits(event_t event)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (ld->max >= -PREC_THRESHOLD) {
|
||||
lcdDrawNumber(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET)/10, RIGHT);
|
||||
if (ld->max >= -precThreshold) {
|
||||
lcdDrawNumber(LIMITS_MAX_POS, y, minMaxDisplay(ld->max+LIMITS_MIN_MAX_OFFSET)/10, RIGHT);
|
||||
}
|
||||
else {
|
||||
lcdDrawNumber(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), attr|PREC1|RIGHT);
|
||||
lcdDrawNumber(LIMITS_MAX_POS, y, minMaxDisplay(ld->max+LIMITS_MIN_MAX_OFFSET), attr|PREC1|RIGHT);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user