diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 130f0cb72..9f7c2e8f4 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -1727,64 +1727,24 @@ FlightModesType editFlightModes(uint8_t x, uint8_t y, uint8_t event, FlightModes enum FlightModesItems { ITEM_PHASES_NAME, ITEM_PHASES_SWITCH, - ITEM_PHASES_TRIMS, + ITEM_PHASES_TRIM_RUD, + ITEM_PHASES_TRIM_ELE, + ITEM_PHASES_TRIM_THR, + ITEM_PHASES_TRIM_AIL, ITEM_PHASES_FADE_IN, ITEM_PHASES_FADE_OUT, ITEM_PHASES_COUNT, ITEM_PHASES_LAST = ITEM_PHASES_COUNT-1 }; -void editPhaseTrims(uint8_t x, uint8_t y, uint8_t phase, uint8_t event, uint8_t active) -{ - static uint8_t cursorPos = 0; - - for (uint8_t t=0; t 0) { - if (p1valdiff || IS_ROTARY_RIGHT(event) || IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) - || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { - PhaseData *p = phaseAddress(phase); - trim_t & v = p->trim[cur]; - v.mode = checkIncDec(event, v.mode, -1, 2*MAX_PHASES-1, EE_MODEL); - } - - switch (event) { - case EVT_KEY_BREAK(KEY_ENTER): - if (s_editMode == EDIT_MODIFY_FIELD) { - s_editMode = EDIT_MODIFY_STRING; - cur = 0; - } - else if (cur 0) { posHorz += 2; } + if (sub==0 && posHorz > 0) { posHorz += 5; } if (sub=0) { displayColumnHeader(STR_PHASES_HEADERS, posHorz); @@ -1819,20 +1779,27 @@ void menuModelFlightModesAll(uint8_t event) case ITEM_PHASES_SWITCH: if (k == 0) { - lcd_puts((5+LEN_FP_NAME)*FW-FW/2, y, STR_DEFAULT); + lcd_puts((5+LEN_FP_NAME)*FW, y, STR_DEFAULT); } else { - putsSwitches((5+LEN_FP_NAME)*FW-FW/2, y, p->swtch, attr); + putsSwitches((5+LEN_FP_NAME)*FW, y, p->swtch, attr); if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, -MAX_SWITCH, MAX_SWITCH); } break; - case ITEM_PHASES_TRIMS: + case ITEM_PHASES_TRIM_RUD: + case ITEM_PHASES_TRIM_ELE: + case ITEM_PHASES_TRIM_THR: + case ITEM_PHASES_TRIM_AIL: if (k != 0) { - editPhaseTrims((10+LEN_FP_NAME)*FW-2*FW, y, k, event, attr); + uint8_t t = j-ITEM_PHASES_TRIM_RUD; + putsTrimMode((4+LEN_FP_NAME)*FW+j*(5*FW/2), y, k, t, attr); + if (active) { + trim_t & v = p->trim[t]; + v.mode = checkIncDec(event, v.mode, -1, 2*MAX_PHASES-1, EE_MODEL); + } } break; - case ITEM_PHASES_FADE_IN: lcd_outdezAtt(32*FW-2, y, (10/DELAY_STEP)*p->fadeIn, attr|PREC1); if (active) p->fadeIn = checkIncDec(event, p->fadeIn, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index cdcf18323..631715ec6 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1167,20 +1167,16 @@ void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags at { trim_t v = getRawTrimValue(phase, idx); - putsChnLetter(x, y, idx+1, att); - if (v.mode < 0) { - lcd_putsAtt(x+FWNUM, y, "--", att); + lcd_putsAtt(x, y, "--", att); } else { uint8_t p = v.mode >> 1; - if (v.mode % 2 == 0) { - lcd_putcAtt(x+FWNUM, y, '+', att); - } - else { - lcd_putcAtt(x+FWNUM, y, ':', att); - } - lcd_putcAtt(x+2*FWNUM, y, '0'+p, att); + if (v.mode % 2 == 0) + lcd_putcAtt(x+2, y, ':', att); + else + lcd_putcAtt(x, y, '+', att); + lcd_putcAtt(x+FW, y, '0'+p, att); } } #else diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 50609e63d..5ada1d63e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1667,9 +1667,9 @@ int getTrimValue(uint8_t phase, uint8_t idx) else { phase = p; if (v.mode % 2 == 0) - result += v.value; - else result = 0; + else + result += v.value; } } } @@ -1692,11 +1692,11 @@ void setTrimValue(uint8_t phase, uint8_t idx, int trim) break;; } else if (v.mode % 2 == 0) { - v.value = limit(-500, trim - getTrimValue(p, idx), 500); - break; + phase = p; } else { - phase = p; + v.value = limit(-500, trim - getTrimValue(p, idx), 500); + break; } } #elif defined(PCBSTD) diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 9339ce7df..35d8f2f65 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -707,7 +707,7 @@ #endif // Taranis column headers -#define TR_PHASES_HEADERS { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " } +#define TR_PHASES_HEADERS { " Name ", " Switch ", " Rudder Trim ", " Elevator Trim ", " Throttle Trim ", " Aileron Trim ", " Fade In ", " Fade Out " } #define TR_LIMITS_HEADERS { " Name ", " Subtrim ", " Min ", " Max ", " Direction ", " Curve ", " PPM Center ", " Subtrim mode " } #define TR_CSW_HEADERS { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " }