chore: cleanup GVAR code (#6332)
This commit is contained in:
@@ -90,7 +90,7 @@ int32_t gvValDisplay(int32_t val)
|
||||
int32_t gvValEdit(const char* title, int32_t val, int32_t offset, int min, int max, coord_t y, uint8_t attr, event_t event, bool active, LcdFlags flags)
|
||||
{
|
||||
lcdDrawText(0, y, title, flags);
|
||||
if (GV_IS_GV_VALUE(val, -GV_RANGELARGE, GV_RANGELARGE) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (GV_IS_GV_VALUE(val) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER))
|
||||
killEvents(event);
|
||||
return GVAR_MENU_ITEM(LIMITS_ONE_2ND_COLUMN, y, val, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, attr|PREC1|flags, 0, event);
|
||||
@@ -275,7 +275,7 @@ void menuModelLimits(event_t event)
|
||||
switch (j) {
|
||||
case ITEM_OUTPUTS_OFFSET:
|
||||
#if defined(GVARS)
|
||||
if (GV_IS_GV_VALUE(ld->offset, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
if (GV_IS_GV_VALUE(ld->offset)) {
|
||||
drawGVarName(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
@@ -285,7 +285,7 @@ void menuModelLimits(event_t event)
|
||||
|
||||
case ITEM_OUTPUTS_MIN:
|
||||
#if defined(GVARS)
|
||||
if (GV_IS_GV_VALUE(ld->min, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
if (GV_IS_GV_VALUE(ld->min)) {
|
||||
drawGVarName(limitsMinPos, y, ld->min, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
@@ -300,7 +300,7 @@ void menuModelLimits(event_t event)
|
||||
|
||||
case ITEM_OUTPUTS_MAX:
|
||||
#if defined(GVARS)
|
||||
if (GV_IS_GV_VALUE(ld->max, -GV_RANGELARGE, GV_RANGELARGE)) {
|
||||
if (GV_IS_GV_VALUE(ld->max)) {
|
||||
drawGVarName(LIMITS_MAX_POS, y, ld->max, attr|PREC1|RIGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -199,7 +199,6 @@ void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags fl
|
||||
|
||||
int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event)
|
||||
{
|
||||
uint16_t delta = GV_GET_GV1_VALUE(min, max);
|
||||
bool invers = (attr & INVERS);
|
||||
|
||||
// TRACE("editGVarFieldValue(val=%d min=%d max=%d)", value, min, max);
|
||||
@@ -208,24 +207,19 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
|
||||
killEvents(event);
|
||||
s_editMode = !s_editMode;
|
||||
if (attr & PREC1)
|
||||
value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, mixerCurrentFlightMode)*10 : delta);
|
||||
value = (GV_IS_GV_VALUE(value) ? GET_GVAR(value, min, max, mixerCurrentFlightMode)*10 : GV_VALUE_FROM_INDEX(0));
|
||||
else
|
||||
value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, mixerCurrentFlightMode) : delta);
|
||||
value = (GV_IS_GV_VALUE(value) ? GET_GVAR(value, min, max, mixerCurrentFlightMode) : GV_VALUE_FROM_INDEX(0));
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
|
||||
if (GV_IS_GV_VALUE(value, min, max)) {
|
||||
if (GV_IS_GV_VALUE(value)) {
|
||||
attr &= ~PREC1;
|
||||
int8_t idx = (int16_t)GV_INDEX_CALC_DELTA(value, delta);
|
||||
int8_t idx = (int16_t)GV_INDEX_FROM_VALUE(value);
|
||||
if (invers) {
|
||||
CHECK_INCDEC_MODELVAR(event, idx, -MAX_GVARS, MAX_GVARS-1);
|
||||
}
|
||||
if (idx < 0) {
|
||||
value = (int16_t)GV_CALC_VALUE_IDX_NEG(idx, delta);
|
||||
}
|
||||
else {
|
||||
value = (int16_t)GV_CALC_VALUE_IDX_POS(idx, delta);
|
||||
}
|
||||
value = (int16_t)GV_VALUE_FROM_INDEX(idx);
|
||||
drawGVarName(x, y, idx, attr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -161,7 +161,7 @@ void menuModelLimits(event_t event)
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_OFFSET:
|
||||
if (GV_IS_GV_VALUE(ld->offset, -1000, 1000) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (GV_IS_GV_VALUE(ld->offset) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER))
|
||||
killEvents(event);
|
||||
ld->offset = GVAR_MENU_ITEM(LIMITS_OFFSET_POS, y, ld->offset, -1000, 1000, RIGHT|attr|PREC1, 0, event);
|
||||
@@ -184,7 +184,7 @@ void menuModelLimits(event_t event)
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_MIN:
|
||||
if (GV_IS_GV_VALUE(ld->min, -GV_RANGELARGE, GV_RANGELARGE) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (GV_IS_GV_VALUE(ld->min) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER))
|
||||
killEvents(event);
|
||||
ld->min = GVAR_MENU_ITEM(LIMITS_MIN_POS, y, ld->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, attr|PREC1|RIGHT, 0, event);
|
||||
@@ -195,7 +195,7 @@ void menuModelLimits(event_t event)
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_MAX:
|
||||
if (GV_IS_GV_VALUE(ld->max, -GV_RANGELARGE, GV_RANGELARGE) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (GV_IS_GV_VALUE(ld->max) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER))
|
||||
killEvents(event);
|
||||
ld->max = GVAR_MENU_ITEM(LIMITS_MAX_POS, y, ld->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, attr|PREC1|RIGHT, 0, event);
|
||||
|
||||
@@ -157,7 +157,6 @@ void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags fl
|
||||
|
||||
int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event)
|
||||
{
|
||||
uint16_t delta = GV_GET_GV1_VALUE(min, max);
|
||||
bool invers = (attr & INVERS);
|
||||
|
||||
// TRACE("editGVarFieldValue(val=%d min=%d max=%d)", value, min, max);
|
||||
@@ -166,26 +165,21 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
|
||||
killEvents(event);
|
||||
s_editMode = !s_editMode;
|
||||
if (attr & PREC1) {
|
||||
value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, mixerCurrentFlightMode)*10 : delta);
|
||||
value = (GV_IS_GV_VALUE(value) ? GET_GVAR(value, min, max, mixerCurrentFlightMode)*10 : GV_VALUE_FROM_INDEX(0));
|
||||
}
|
||||
else {
|
||||
value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, mixerCurrentFlightMode) : delta);
|
||||
value = (GV_IS_GV_VALUE(value) ? GET_GVAR(value, min, max, mixerCurrentFlightMode) : GV_VALUE_FROM_INDEX(0));
|
||||
}
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
|
||||
if (GV_IS_GV_VALUE(value, min, max)) {
|
||||
if (GV_IS_GV_VALUE(value)) {
|
||||
attr &= ~PREC1;
|
||||
int8_t idx = (int16_t)GV_INDEX_CALC_DELTA(value, delta);
|
||||
int8_t idx = (int16_t)GV_INDEX_FROM_VALUE(value);
|
||||
if (invers) {
|
||||
CHECK_INCDEC_MODELVAR(event, idx, -MAX_GVARS, MAX_GVARS-1);
|
||||
}
|
||||
if (idx < 0) {
|
||||
value = (int16_t)GV_CALC_VALUE_IDX_NEG(idx, delta);
|
||||
}
|
||||
else {
|
||||
value = (int16_t)GV_CALC_VALUE_IDX_POS(idx, delta);
|
||||
}
|
||||
value = (int16_t)GV_VALUE_FROM_INDEX(idx);
|
||||
drawGVarName(x, y, idx, attr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -158,7 +158,7 @@ void OutputChannelBar::drawLimitLines(bool forced)
|
||||
int32_t ldMin;
|
||||
int32_t ldMax;
|
||||
|
||||
if (GV_IS_GV_VALUE(ld->min, -CHANNELS_LIMIT, 0)) {
|
||||
if (GV_IS_GV_VALUE(ld->min)) {
|
||||
ldMin =
|
||||
GET_GVAR_PREC1(ld->min, -CHANNELS_LIMIT, 0, mixerCurrentFlightMode) +
|
||||
LIMIT_STD_MAX;
|
||||
@@ -170,7 +170,7 @@ void OutputChannelBar::drawLimitLines(bool forced)
|
||||
limMin = ldMin;
|
||||
}
|
||||
|
||||
if (GV_IS_GV_VALUE(ld->max, 0, CHANNELS_LIMIT)) {
|
||||
if (GV_IS_GV_VALUE(ld->max)) {
|
||||
ldMax =
|
||||
GET_GVAR_PREC1(ld->max, 0, CHANNELS_LIMIT, mixerCurrentFlightMode) -
|
||||
LIMIT_STD_MAX;
|
||||
|
||||
@@ -40,15 +40,10 @@ GVarNumberEdit::GVarNumberEdit(Window* parent, int32_t vmin,
|
||||
gvar_field = new Choice(
|
||||
this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, -MAX_GVARS, MAX_GVARS - 1,
|
||||
[=]() {
|
||||
uint16_t gvar1 = GV_GET_GV1_VALUE(vmin, vmax);
|
||||
return GV_INDEX_CALC_DELTA(getValue(), gvar1);
|
||||
return GV_INDEX_FROM_VALUE(getValue());
|
||||
},
|
||||
[=](int idx) {
|
||||
uint16_t gvar1 = GV_GET_GV1_VALUE(vmin, vmax);
|
||||
if (idx < 0)
|
||||
setValue(GV_CALC_VALUE_IDX_NEG(idx, gvar1));
|
||||
else
|
||||
setValue(GV_CALC_VALUE_IDX_POS(idx, gvar1));
|
||||
setValue(GV_VALUE_FROM_INDEX(idx));
|
||||
});
|
||||
gvar_field->setTextHandler(
|
||||
[=](int32_t value) { return getGVarString(value); });
|
||||
@@ -63,9 +58,9 @@ GVarNumberEdit::GVarNumberEdit(Window* parent, int32_t vmin,
|
||||
if (modelGVEnabled()) {
|
||||
m_gvBtn = new TextButton(this, {EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + PAD_TINY, 0, GV_BTN_W, 0}, STR_GV, [=]() {
|
||||
switchGVarMode();
|
||||
return GV_IS_GV_VALUE(getValue(), vmin, vmax);
|
||||
return GV_IS_GV_VALUE(getValue());
|
||||
});
|
||||
m_gvBtn->check(GV_IS_GV_VALUE(getValue(), vmin, vmax));
|
||||
m_gvBtn->check(GV_IS_GV_VALUE(getValue()));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -79,13 +74,13 @@ void GVarNumberEdit::switchGVarMode()
|
||||
if (modelGVEnabled()) {
|
||||
int32_t value = getValue();
|
||||
setValue(
|
||||
GV_IS_GV_VALUE(value, vmin, vmax)
|
||||
GV_IS_GV_VALUE(value)
|
||||
? ((textFlags & PREC1)
|
||||
? GET_GVAR_PREC1(value, vmin, vmax, mixerCurrentFlightMode)
|
||||
: GET_GVAR(value, vmin, vmax, mixerCurrentFlightMode))
|
||||
: GV_GET_GV1_VALUE(vmin, vmax));
|
||||
: GV_VALUE_FROM_INDEX(0));
|
||||
|
||||
m_gvBtn->check(GV_IS_GV_VALUE(value, vmin, vmax));
|
||||
m_gvBtn->check(GV_IS_GV_VALUE(value));
|
||||
|
||||
// update field type based on value
|
||||
update();
|
||||
@@ -115,7 +110,7 @@ void GVarNumberEdit::update()
|
||||
num_field->hide();
|
||||
|
||||
int32_t value = getValue();
|
||||
if (GV_IS_GV_VALUE(value, vmin, vmax)) {
|
||||
if (GV_IS_GV_VALUE(value)) {
|
||||
// GVAR mode
|
||||
act_field = gvar_field;
|
||||
num_field->setSetValueHandler(nullptr);
|
||||
|
||||
@@ -84,7 +84,7 @@ void InputMixButtonBase::setWeight(gvar_t value, gvar_t min, gvar_t max)
|
||||
}
|
||||
|
||||
char s[32];
|
||||
getValueOrSrcVarString(s, sizeof(s), value, min, max, 0, "%");
|
||||
getValueOrSrcVarString(s, sizeof(s), value, 0, "%");
|
||||
if (getTextWidth(s, 0, FONT(STD)) > WGT_W)
|
||||
lv_obj_add_state(weight, LV_STATE_USER_1);
|
||||
else
|
||||
|
||||
@@ -148,16 +148,15 @@ class OutputLineButton : public ListLineButton
|
||||
}
|
||||
|
||||
char s[32];
|
||||
getValueOrGVarString(s, sizeof(s), output->min, -GV_RANGELARGE, 0, PREC1,
|
||||
getValueOrGVarString(s, sizeof(s), output->min, PREC1,
|
||||
nullptr, -LIMITS_MIN_MAX_OFFSET, true);
|
||||
lv_label_set_text(min, s);
|
||||
|
||||
getValueOrGVarString(s, sizeof(s), output->max, 0, GV_RANGELARGE, PREC1,
|
||||
getValueOrGVarString(s, sizeof(s), output->max, PREC1,
|
||||
nullptr, +LIMITS_MIN_MAX_OFFSET, true);
|
||||
lv_label_set_text(max, s);
|
||||
|
||||
getValueOrGVarString(s, sizeof(s), output->offset, -LIMIT_STD_MAX,
|
||||
+LIMIT_STD_MAX, PREC1, nullptr, 0, true);
|
||||
getValueOrGVarString(s, sizeof(s), output->offset, PREC1, nullptr, 0, true);
|
||||
lv_label_set_text(offset, s);
|
||||
|
||||
lv_label_set_text_fmt(center, "%d%s", PPM_CENTER + output->ppmCenter,
|
||||
|
||||
Reference in New Issue
Block a user