mirror of
https://github.com/opentx/opentx.git
synced 2025-07-18 22:05:10 +03:00
PPM=US is now fixed on Taranis. Still remaining the problem with GVARS
as described in Issue #893 (a model configured with a GVAR in Limits won't work the same way on a PPMUS firmware or on a !PPMUS firmware)
This commit is contained in:
parent
9356a3bd41
commit
6c5150de8c
2 changed files with 27 additions and 22 deletions
|
@ -3783,7 +3783,7 @@ enum LimitsItems {
|
|||
|
||||
#if defined(PCBTARANIS)
|
||||
#define LIMITS_MIN_MAX_OFFSET 1000
|
||||
#define CONVERT_US_MIN_MAX(x) (((x)*128)/250)
|
||||
#define CONVERT_US_MIN_MAX(x) (((x)*1280)/250)
|
||||
#define MIN_MAX_LIMIT (10*limit)
|
||||
#define MIN_MAX_ATTR attr|PREC1
|
||||
#else
|
||||
|
@ -3794,11 +3794,11 @@ enum LimitsItems {
|
|||
#endif
|
||||
|
||||
#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)
|
||||
#undef MIN_MAX_ATTR
|
||||
#define MIN_MAX_ATTR attr
|
||||
#elif defined(CPUARM)
|
||||
#define MIN_MAX_DISPLAY(x) (x)
|
||||
#define SET_MIN_MAX(x, val) x = (val)
|
||||
#else
|
||||
#define MIN_MAX_DISPLAY(x) ((int8_t)(x))
|
||||
#endif
|
||||
|
@ -3877,7 +3877,7 @@ void menuModelLimits(uint8_t event)
|
|||
LimitData *ld = limitAddress(k);
|
||||
|
||||
#if LCD_W >= 212 || !defined(PPM_CENTER_ADJUSTABLE)
|
||||
int16_t v = (ld->revert) ? -ld->offset : ld->offset;
|
||||
int16_t v = (ld->revert) ? -LIMIT_OFS(ld) : LIMIT_OFS(ld);
|
||||
char swVal = '-'; // '-', '<', '>'
|
||||
if((channelOutputs[k] - v) > 50) swVal = (ld->revert ? 127 : 126); // Switch to raw inputs? - remove trim!
|
||||
if((channelOutputs[k] - v) < -50) swVal = (ld->revert ? 126 : 127);
|
||||
|
@ -3886,13 +3886,11 @@ void menuModelLimits(uint8_t event)
|
|||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
int limit;
|
||||
int limit = (g_model.extendedLimits ? 125 : 100);
|
||||
#else
|
||||
int8_t limit;
|
||||
int8_t limit = (g_model.extendedLimits ? 125 : 100);
|
||||
#endif
|
||||
|
||||
limit = (g_model.extendedLimits ? 125 : 100);
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
putsChn(0, y, k+1, (sub==k && m_posHorz < 0) ? INVERS : 0);
|
||||
if (sub==k && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) {
|
||||
|
@ -3919,13 +3917,17 @@ void menuModelLimits(uint8_t event)
|
|||
|
||||
case ITEM_LIMITS_OFFSET:
|
||||
#if defined(PCBTARANIS)
|
||||
ld->offset = GVAR_MENU_ITEM(LIMITS_OFFSET_POS, y, MIN_MAX_DISPLAY(ld->offset), -1000, 1000, attr|PREC1, 0, event);
|
||||
#else
|
||||
#if defined(PPM_UNIT_US)
|
||||
if (GV_IS_GV_VALUE(ld->offset, -1000, 1000) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
ld->offset = GVAR_MENU_ITEM(LIMITS_OFFSET_POS, y, ld->offset, -1000, 1000, attr|PREC1, 0, event);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(PPM_UNIT_US)
|
||||
lcd_outdezAtt(LIMITS_OFFSET_POS, y, ((int32_t)ld->offset*128) / 25, attr|PREC1);
|
||||
#else
|
||||
#else
|
||||
lcd_outdezAtt(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1);
|
||||
#endif
|
||||
#endif
|
||||
if (active) {
|
||||
ld->offset = checkIncDec(event, ld->offset, -1000, 1000, EE_MODEL|NO_INCDEC_MARKS);
|
||||
}
|
||||
|
@ -3933,25 +3935,28 @@ void menuModelLimits(uint8_t event)
|
|||
copyTrimsToOffset(k);
|
||||
s_editMode = 0;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_MIN:
|
||||
#if defined(PCBTARANIS)
|
||||
ld->min = LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), -MIN_MAX_LIMIT, 0, MIN_MAX_ATTR, DBLKEYS_1000, event);
|
||||
#else
|
||||
if (GV_IS_GV_VALUE(ld->min, -1250, 1250) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
ld->min = GVAR_MENU_ITEM(LIMITS_MIN_POS, y, ld->min, -1250, 1250, MIN_MAX_ATTR, DBLKEYS_1000, event);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
lcd_outdezAtt(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR);
|
||||
if (active) ld->min = LIMITS_MIN_MAX_OFFSET + checkIncDecModel(event, ld->min-LIMITS_MIN_MAX_OFFSET, -MIN_MAX_LIMIT, 0);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_MAX:
|
||||
#if defined(PCBTARANIS)
|
||||
ld->max = -LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), 0, MIN_MAX_LIMIT, MIN_MAX_ATTR, DBLKEYS_1000, event);
|
||||
#else
|
||||
if (GV_IS_GV_VALUE(ld->max, -1250, 1250) || (attr && event == EVT_KEY_LONG(KEY_ENTER))) {
|
||||
ld->max = GVAR_MENU_ITEM(LIMITS_MAX_POS, y, ld->max, -1250, 1250, MIN_MAX_ATTR, DBLKEYS_1000, event);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
lcd_outdezAtt(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR);
|
||||
if (active) ld->max = -LIMITS_MIN_MAX_OFFSET + checkIncDecModelZero(event, ld->max+LIMITS_MIN_MAX_OFFSET, +MIN_MAX_LIMIT);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ITEM_LIMITS_DIRECTION:
|
||||
|
|
|
@ -501,8 +501,8 @@ PACK(typedef struct t_ExpoData {
|
|||
|
||||
#if defined(PCBTARANIS)
|
||||
#define limit_min_max_t int16_t
|
||||
#define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max+1000, 0, 1250) ? GET_GVAR(lim->max+1000, 0, 1250, s_perout_flight_phase)*10 : lim->max+1000)
|
||||
#define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min-1000, -1250, 0) ? GET_GVAR(lim->min-1000, -1250, 0, s_perout_flight_phase)*10 : lim->min-1000)
|
||||
#define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max, 0, 1250) ? GET_GVAR(lim->max, 0, 1250, s_perout_flight_phase)*10 : lim->max+1000)
|
||||
#define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min, -1250, 0) ? GET_GVAR(lim->min, -1250, 0, s_perout_flight_phase)*10 : lim->min-1000)
|
||||
#define LIMIT_OFS(lim) (GV_IS_GV_VALUE(lim->offset, -1000, 1000) ? GET_GVAR(lim->offset, -1000, 1000, s_perout_flight_phase)*10 : lim->offset)
|
||||
#define LIMIT_MAX_RESX(lim) calc1000toRESX(LIMIT_MAX(lim))
|
||||
#define LIMIT_MIN_RESX(lim) calc1000toRESX(LIMIT_MIN(lim))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue