Merge pull request #726 from EdgeTX/fix-722
Call GV_IS_GV_VALUE() without offset applied
This commit is contained in:
@@ -66,7 +66,6 @@ enum MenuModelOutputsItems {
|
||||
#endif
|
||||
|
||||
#define LIMITS_CURVE_POS 17*FW+1
|
||||
#define LIMITS_MIN_MAX_OFFSET 1000
|
||||
#define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25)
|
||||
#define MIN_MAX_ATTR attr
|
||||
|
||||
@@ -116,7 +115,7 @@ void menuModelLimitsOne(event_t event)
|
||||
uint8_t i = k + menuVerticalOffset;
|
||||
uint8_t attr = (sub==i ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0);
|
||||
uint8_t active = (attr && s_editMode > 0) ;
|
||||
int limit = (g_model.extendedLimits ? LIMIT_EXT_MAX : 1000);
|
||||
int limit = (g_model.extendedLimits ? LIMIT_EXT_MAX : LIMIT_STD_MAX);
|
||||
|
||||
switch (i) {
|
||||
case ITEM_OUTPUTONE_CH_NAME:
|
||||
|
||||
@@ -53,7 +53,6 @@ enum LimitsItems {
|
||||
#define LIMITS_CURVE_POS 32*FW-3
|
||||
#endif
|
||||
|
||||
#define LIMITS_MIN_MAX_OFFSET 1000
|
||||
#define CONVERT_US_MIN_MAX(x) (((x)*1280)/250)
|
||||
|
||||
#if defined(PPM_UNIT_US)
|
||||
|
||||
@@ -152,13 +152,13 @@ class OutputChannelBar : public ChannelBar
|
||||
int32_t ldMax;
|
||||
int32_t ldMin;
|
||||
|
||||
if (GV_IS_GV_VALUE(ld->min - LIMIT_STD_MAX, -limit, 0)) {
|
||||
if (GV_IS_GV_VALUE(ld->min, -limit, 0)) {
|
||||
ldMin = limMin;
|
||||
} else {
|
||||
ldMin = ld->min;
|
||||
}
|
||||
|
||||
if (GV_IS_GV_VALUE(ld->max + LIMIT_STD_MAX, 0, limit)) {
|
||||
if (GV_IS_GV_VALUE(ld->max, 0, limit)) {
|
||||
ldMax = limMax;
|
||||
} else {
|
||||
ldMax = ld->max;
|
||||
@@ -200,16 +200,16 @@ class OutputChannelBar : public ChannelBar
|
||||
int limit = CHANNELS_LIMIT;
|
||||
LimitData* lim = limitAddress(channel);
|
||||
|
||||
if (GV_IS_GV_VALUE(lim->min - LIMIT_STD_MAX, -limit, 0)) {
|
||||
if (GV_IS_GV_VALUE(lim->min, -limit, 0)) {
|
||||
int ldMin =
|
||||
GET_GVAR_PREC1(lim->min - LIMIT_STD_MAX, -limit, 0, mixerCurrentFlightMode)
|
||||
GET_GVAR_PREC1(lim->min, -limit, 0, mixerCurrentFlightMode)
|
||||
+ LIMIT_STD_MAX;
|
||||
if (limMin != ldMin) invalidate();
|
||||
limMin = ldMin;
|
||||
}
|
||||
if (GV_IS_GV_VALUE(lim->max + LIMIT_STD_MAX, 0, limit)) {
|
||||
if (GV_IS_GV_VALUE(lim->max, 0, limit)) {
|
||||
int ldMax =
|
||||
GET_GVAR_PREC1(lim->max + LIMIT_STD_MAX, 0, limit, mixerCurrentFlightMode)
|
||||
GET_GVAR_PREC1(lim->max, 0, limit, mixerCurrentFlightMode)
|
||||
- LIMIT_STD_MAX;
|
||||
if (limMax != ldMax) invalidate();
|
||||
limMax = ldMax;
|
||||
|
||||
@@ -65,13 +65,13 @@ void drawGVarValue(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t gvar, gvar_t
|
||||
|
||||
void drawValueOrGVar(BitmapBuffer* dc, coord_t x, coord_t y, gvar_t value,
|
||||
gvar_t vmin, gvar_t vmax, LcdFlags flags,
|
||||
const char* suffix)
|
||||
const char* suffix, gvar_t offset)
|
||||
{
|
||||
if (GV_IS_GV_VALUE(value, vmin, vmax)) {
|
||||
int index = GV_INDEX_CALC_DELTA(value, GV_GET_GV1_VALUE(vmin, vmax));
|
||||
dc->drawText(x, y, getGVarString(index), flags);
|
||||
} else {
|
||||
dc->drawNumber(x, y, value, flags, 0, nullptr, suffix);
|
||||
dc->drawNumber(x, y, value + offset, flags, 0, nullptr, suffix);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -551,4 +551,4 @@ void drawTextLines(BitmapBuffer * dc, coord_t left, coord_t top, coord_t width,
|
||||
}
|
||||
str = nxt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ void drawVerticalTrimPosition(BitmapBuffer * dc, coord_t x, coord_t y, int16_t d
|
||||
void drawVerticalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
|
||||
void drawHorizontalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
|
||||
void drawSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
|
||||
void drawValueOrGVar(BitmapBuffer * dc, coord_t x, coord_t y, gvar_t value, gvar_t vmin, gvar_t vmax, LcdFlags flags = 0, const char* suffix = "%");
|
||||
void drawValueOrGVar(BitmapBuffer * dc, coord_t x, coord_t y, gvar_t value, gvar_t vmin, gvar_t vmax, LcdFlags flags = 0, const char* suffix = "%", gvar_t offset = 0);
|
||||
void drawGVarValue(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags = 0);
|
||||
void drawTimer(BitmapBuffer * dc, coord_t x, coord_t y, int32_t tme, LcdFlags flags = 0);
|
||||
void drawSourceValue(BitmapBuffer * dc, coord_t x, coord_t y, source_t source, LcdFlags flags = 0);
|
||||
|
||||
@@ -30,97 +30,113 @@ constexpr coord_t GVAR_BUTTON_WIDTH = 30;
|
||||
#if !defined(GVARS)
|
||||
typedef NumberEdit GVarNumberEdit;
|
||||
#else
|
||||
class GVarNumberEdit: public FormGroup
|
||||
class GVarNumberEdit : public FormGroup
|
||||
{
|
||||
public:
|
||||
GVarNumberEdit(FormGroup * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function<int32_t()> getValue, std::function<void(int32_t)> setValue, WindowFlags windowFlags = 0, LcdFlags textFlags = 0) :
|
||||
public:
|
||||
GVarNumberEdit(FormGroup* parent, const rect_t& rect, int32_t vmin,
|
||||
int32_t vmax, std::function<int32_t()> getValue,
|
||||
std::function<void(int32_t)> setValue,
|
||||
WindowFlags windowFlags = 0, LcdFlags textFlags = 0,
|
||||
int32_t voffset = 0) :
|
||||
FormGroup(parent, rect, FORWARD_SCROLL | FORM_FORWARD_FOCUS),
|
||||
vmin(vmin),
|
||||
vmax(vmax),
|
||||
voffset(voffset),
|
||||
getValue(getValue),
|
||||
setValue(setValue),
|
||||
windowFlags(windowFlags),
|
||||
windowFlags(windowFlags),
|
||||
textFlags(textFlags)
|
||||
{
|
||||
update();
|
||||
}
|
||||
{
|
||||
update();
|
||||
}
|
||||
|
||||
void switchGVarMode()
|
||||
{
|
||||
int32_t value = getValue();
|
||||
setValue(GV_IS_GV_VALUE(value, vmin, vmax) ?
|
||||
( (textFlags & PREC1) ? GET_GVAR_PREC1(value, vmin, vmax, mixerCurrentFlightMode) : GET_GVAR(value, vmin, vmax, mixerCurrentFlightMode) ) :
|
||||
GV_GET_GV1_VALUE(vmin, vmax) );
|
||||
void switchGVarMode()
|
||||
{
|
||||
int32_t value = getValue();
|
||||
setValue(
|
||||
GV_IS_GV_VALUE(value, vmin, vmax)
|
||||
? ((textFlags & PREC1)
|
||||
? GET_GVAR_PREC1(value, vmin, vmax, mixerCurrentFlightMode)
|
||||
: GET_GVAR(value, vmin, vmax, mixerCurrentFlightMode))
|
||||
: GV_GET_GV1_VALUE(vmin, vmax));
|
||||
|
||||
update();
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
void setSuffix(std::string value)
|
||||
{
|
||||
suffix = std::move(value);
|
||||
update();
|
||||
}
|
||||
void setSuffix(std::string value)
|
||||
{
|
||||
suffix = std::move(value);
|
||||
update();
|
||||
}
|
||||
|
||||
#if defined(HARDWARE_KEYS)
|
||||
void onEvent(event_t event) override
|
||||
{
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
killEvents(event);
|
||||
switchGVarMode();
|
||||
field->setFocus(SET_FOCUS_DEFAULT);
|
||||
}
|
||||
else {
|
||||
FormGroup::onEvent(event);
|
||||
}
|
||||
void onEvent(event_t event) override
|
||||
{
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
killEvents(event);
|
||||
switchGVarMode();
|
||||
field->setFocus(SET_FOCUS_DEFAULT);
|
||||
} else {
|
||||
FormGroup::onEvent(event);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
protected:
|
||||
FormField * field = nullptr;
|
||||
int32_t vmin;
|
||||
int32_t vmax;
|
||||
std::function<int32_t()> getValue;
|
||||
std::function<void(int32_t)> setValue;
|
||||
WindowFlags windowFlags;
|
||||
LcdFlags textFlags;
|
||||
std::string suffix;
|
||||
protected:
|
||||
FormField* field = nullptr;
|
||||
int32_t vmin;
|
||||
int32_t vmax;
|
||||
int32_t voffset;
|
||||
std::function<int32_t()> getValue;
|
||||
std::function<void(int32_t)> setValue;
|
||||
WindowFlags windowFlags;
|
||||
LcdFlags textFlags;
|
||||
std::string suffix;
|
||||
|
||||
void update()
|
||||
{
|
||||
clear();
|
||||
void update()
|
||||
{
|
||||
clear();
|
||||
|
||||
// The main field
|
||||
int32_t value = getValue();
|
||||
if (GV_IS_GV_VALUE(value, vmin, vmax)) {
|
||||
auto result = new Choice(this, {0, 0, width() - GVAR_BUTTON_WIDTH, height()}, -MAX_GVARS, MAX_GVARS - 1,
|
||||
[=]() {
|
||||
uint16_t gvar1 = GV_GET_GV1_VALUE(vmin, vmax);
|
||||
return GV_INDEX_CALC_DELTA(getValue(), gvar1);
|
||||
},
|
||||
[=](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));
|
||||
});
|
||||
result->setTextHandler([=](int32_t value) {
|
||||
return getGVarString(value);
|
||||
});
|
||||
field = result;
|
||||
}
|
||||
else {
|
||||
auto result = new NumberEdit(this, {0, 0, width() - GVAR_BUTTON_WIDTH, height()}, vmin, vmax, getValue, setValue, windowFlags, textFlags);
|
||||
result->setSuffix(suffix);
|
||||
field = result;
|
||||
}
|
||||
// The main field
|
||||
int32_t value = getValue();
|
||||
if (GV_IS_GV_VALUE(value, vmin, vmax)) {
|
||||
auto result = new Choice(
|
||||
this, {0, 0, width() - GVAR_BUTTON_WIDTH, height()}, -MAX_GVARS,
|
||||
MAX_GVARS - 1,
|
||||
[=]() {
|
||||
uint16_t gvar1 = GV_GET_GV1_VALUE(vmin, vmax);
|
||||
return GV_INDEX_CALC_DELTA(getValue(), gvar1);
|
||||
},
|
||||
[=](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));
|
||||
});
|
||||
result->setTextHandler(
|
||||
[=](int32_t value) { return getGVarString(value); });
|
||||
field = result;
|
||||
} else {
|
||||
auto result = new NumberEdit(
|
||||
this, {0, 0, width() - GVAR_BUTTON_WIDTH, height()}, vmin, vmax,
|
||||
[=]() { return getValue() + voffset; },
|
||||
[=](int32_t newValue) { return setValue(newValue - voffset); },
|
||||
windowFlags, textFlags);
|
||||
result->setSuffix(suffix);
|
||||
field = result;
|
||||
}
|
||||
|
||||
// The GVAR button
|
||||
new TextButton(this, {width() - GVAR_BUTTON_WIDTH, 0, GVAR_BUTTON_WIDTH, height()}, STR_GV, [=]() {
|
||||
// The GVAR button
|
||||
new TextButton(
|
||||
this, {width() - GVAR_BUTTON_WIDTH, 0, GVAR_BUTTON_WIDTH, height()},
|
||||
STR_GV,
|
||||
[=]() {
|
||||
switchGVarMode();
|
||||
return 0;
|
||||
}, BUTTON_BACKGROUND | OPAQUE | FORM_DETACHED);
|
||||
}
|
||||
},
|
||||
BUTTON_BACKGROUND | OPAQUE | FORM_DETACHED);
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -59,30 +59,34 @@ class OutputEditWindow : public Page {
|
||||
LimitData * output = limitAddress(channel);
|
||||
|
||||
// Name
|
||||
new StaticText(window, grid.getLabelSlot(), STR_NAME, 0, COLOR_THEME_PRIMARY1);
|
||||
new ModelTextEdit(window, grid.getFieldSlot(), output->name, sizeof(output->name));
|
||||
new StaticText(window, grid.getLabelSlot(), STR_NAME, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
new ModelTextEdit(window, grid.getFieldSlot(), output->name,
|
||||
sizeof(output->name));
|
||||
grid.nextLine();
|
||||
|
||||
// Offset
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_SUBTRIM, 0, COLOR_THEME_PRIMARY1);
|
||||
new GVarNumberEdit(window, grid.getFieldSlot(), -LIMIT_STD_MAX, +LIMIT_STD_MAX,
|
||||
GET_SET_DEFAULT(output->offset), 0, PREC1);
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_SUBTRIM, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
new GVarNumberEdit(window, grid.getFieldSlot(), -LIMIT_STD_MAX,
|
||||
+LIMIT_STD_MAX, GET_SET_DEFAULT(output->offset), 0,
|
||||
PREC1);
|
||||
grid.nextLine();
|
||||
|
||||
// Min
|
||||
new StaticText(window, grid.getLabelSlot(), TR_MIN, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
new GVarNumberEdit(window, grid.getFieldSlot(), -limit, 0,
|
||||
GET_VALUE(output->min - LIMIT_STD_MAX),
|
||||
SET_VALUE(output->min, newValue + LIMIT_STD_MAX), 0, PREC1);
|
||||
GET_SET_DEFAULT(output->min), 0, PREC1,
|
||||
-LIMIT_STD_MAX);
|
||||
grid.nextLine();
|
||||
|
||||
// Max
|
||||
new StaticText(window, grid.getLabelSlot(), TR_MAX, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
new GVarNumberEdit(window, grid.getFieldSlot(), 0, +limit,
|
||||
GET_VALUE(output->max + LIMIT_STD_MAX),
|
||||
SET_VALUE(output->max, newValue - LIMIT_STD_MAX), 0, PREC1);
|
||||
GET_SET_DEFAULT(output->max), 0, PREC1,
|
||||
+LIMIT_STD_MAX);
|
||||
grid.nextLine();
|
||||
|
||||
// Direction
|
||||
@@ -91,23 +95,30 @@ class OutputEditWindow : public Page {
|
||||
grid.nextLine();
|
||||
|
||||
// Curve
|
||||
new StaticText(window, grid.getLabelSlot(), TR_CURVE, 0, COLOR_THEME_PRIMARY1);
|
||||
auto edit = new NumberEdit(window, grid.getFieldSlot(), -MAX_CURVES, +MAX_CURVES, GET_SET_DEFAULT(output->curve));
|
||||
edit->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawText(2, 2, getCurveString(value));
|
||||
});
|
||||
new StaticText(window, grid.getLabelSlot(), TR_CURVE, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
auto edit = new NumberEdit(window, grid.getFieldSlot(), -MAX_CURVES,
|
||||
+MAX_CURVES, GET_SET_DEFAULT(output->curve));
|
||||
edit->setDisplayHandler(
|
||||
[](BitmapBuffer *dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawText(2, 2, getCurveString(value));
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
// PPM center
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_PPMCENTER, 0, COLOR_THEME_PRIMARY1);
|
||||
new NumberEdit(window, grid.getFieldSlot(), PPM_CENTER - PPM_CENTER_MAX, PPM_CENTER + PPM_CENTER_MAX,
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_PPMCENTER,
|
||||
0, COLOR_THEME_PRIMARY1);
|
||||
new NumberEdit(window, grid.getFieldSlot(), PPM_CENTER - PPM_CENTER_MAX,
|
||||
PPM_CENTER + PPM_CENTER_MAX,
|
||||
GET_VALUE(output->ppmCenter + PPM_CENTER),
|
||||
SET_VALUE(output->ppmCenter, newValue - PPM_CENTER));
|
||||
grid.nextLine();
|
||||
|
||||
// Subtrims mode
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_SUBTRIMMODE, 0, COLOR_THEME_PRIMARY1);
|
||||
new Choice(window, grid.getFieldSlot(), STR_SUBTRIMMODES, 0, 1, GET_SET_DEFAULT(output->symetrical));
|
||||
new StaticText(window, grid.getLabelSlot(), TR_LIMITS_HEADERS_SUBTRIMMODE,
|
||||
0, COLOR_THEME_PRIMARY1);
|
||||
new Choice(window, grid.getFieldSlot(), STR_SUBTRIMMODES, 0, 1,
|
||||
GET_SET_DEFAULT(output->symetrical));
|
||||
grid.nextLine();
|
||||
|
||||
window->setInnerHeight(grid.getWindowHeight());
|
||||
@@ -129,17 +140,28 @@ class OutputLineButton : public Button {
|
||||
{
|
||||
LcdFlags textColor = COLOR_THEME_SECONDARY1;
|
||||
LcdFlags bgColor = COLOR_THEME_PRIMARY2;
|
||||
int limit = (g_model.extendedLimits ? LIMIT_EXT_MAX : 1000);
|
||||
|
||||
dc->drawSolidFilledRect(0, 0, width(), height(), bgColor);
|
||||
|
||||
// first line
|
||||
drawValueOrGVar(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, output->min - 1000,
|
||||
-limit, 0, PREC1 | textColor, nullptr);
|
||||
drawValueOrGVar(dc, 68, FIELD_PADDING_TOP, output->max + 1000,
|
||||
0, limit, PREC1 | textColor, nullptr);
|
||||
drawValueOrGVar(dc, 132, FIELD_PADDING_TOP, output->offset,
|
||||
-limit, +limit, PREC1 | textColor, nullptr);
|
||||
|
||||
// Min
|
||||
drawValueOrGVar(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP,
|
||||
output->min, -GV_RANGELARGE,
|
||||
0, PREC1 | textColor, nullptr,
|
||||
-LIMITS_MIN_MAX_OFFSET);
|
||||
|
||||
// Max
|
||||
drawValueOrGVar(dc, 68, FIELD_PADDING_TOP,
|
||||
output->max, 0,
|
||||
GV_RANGELARGE, PREC1 | textColor, nullptr,
|
||||
+LIMITS_MIN_MAX_OFFSET);
|
||||
|
||||
// Offset
|
||||
drawValueOrGVar(dc, 132, FIELD_PADDING_TOP, output->offset, -LIMIT_STD_MAX,
|
||||
+LIMIT_STD_MAX, PREC1 | textColor, nullptr);
|
||||
|
||||
// PPM center
|
||||
dc->drawNumber(226, FIELD_PADDING_TOP, PPM_CENTER + output->ppmCenter,
|
||||
RIGHT | textColor);
|
||||
dc->drawText(228, FIELD_PADDING_TOP, output->symetrical ? "=" : "\210",
|
||||
|
||||
+2
-13
@@ -117,18 +117,6 @@ enum CurveRefType {
|
||||
#define LIMIT_EXT_MAX (LIMIT_EXT_PERCENT*10)
|
||||
#define LIMIT_STD_MAX (LIMIT_STD_PERCENT*10)
|
||||
#define PPM_CENTER_MAX 500
|
||||
#if (defined(COLORLCD))
|
||||
#define LIMIT_MAX(lim) \
|
||||
(GV_IS_GV_VALUE(lim->max + LIMIT_STD_MAX, 0, +GV_RANGELARGE) \
|
||||
? GET_GVAR_PREC1(lim->max + LIMIT_STD_MAX, 0, +LIMIT_EXT_MAX, \
|
||||
mixerCurrentFlightMode) \
|
||||
: lim->max + LIMIT_STD_MAX)
|
||||
#define LIMIT_MIN(lim) \
|
||||
(GV_IS_GV_VALUE(lim->min - LIMIT_STD_MAX, -GV_RANGELARGE, 0) \
|
||||
? GET_GVAR_PREC1(lim->min - LIMIT_STD_MAX, -LIMIT_EXT_MAX, 0, \
|
||||
mixerCurrentFlightMode) \
|
||||
: lim->min - LIMIT_STD_MAX)
|
||||
#else
|
||||
#define LIMIT_MAX(lim) \
|
||||
(GV_IS_GV_VALUE(lim->max, -GV_RANGELARGE, GV_RANGELARGE) \
|
||||
? GET_GVAR_PREC1(lim->max, -LIMIT_EXT_MAX, +LIMIT_EXT_MAX, \
|
||||
@@ -139,7 +127,6 @@ enum CurveRefType {
|
||||
? GET_GVAR_PREC1(lim->min, -LIMIT_EXT_MAX, +LIMIT_EXT_MAX, \
|
||||
mixerCurrentFlightMode) \
|
||||
: lim->min - LIMIT_STD_MAX)
|
||||
#endif
|
||||
#define LIMIT_OFS(lim) \
|
||||
(GV_IS_GV_VALUE(lim->offset, -LIMIT_STD_MAX, LIMIT_STD_MAX) \
|
||||
? GET_GVAR_PREC1(lim->offset, -LIMIT_STD_MAX, +LIMIT_STD_MAX, \
|
||||
@@ -149,6 +136,8 @@ enum CurveRefType {
|
||||
#define LIMIT_MIN_RESX(lim) calc1000toRESX(LIMIT_MIN(lim))
|
||||
#define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim))
|
||||
|
||||
#define LIMITS_MIN_MAX_OFFSET LIMIT_STD_MAX
|
||||
|
||||
#define TRIM_OFF (1)
|
||||
#define TRIM_ON (0)
|
||||
#define TRIM_RUD (-1)
|
||||
|
||||
Reference in New Issue
Block a user