From b0eb2332fc352ff8be1d8df40f538708566b158d Mon Sep 17 00:00:00 2001 From: philmoz Date: Sun, 13 Sep 2026 13:37:36 +1000 Subject: [PATCH] fix(fw): trim not applied when mix source is inverted (#7779) Co-authored-by: philmoz --- radio/src/mixer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 4f5ad28f1..38173392f 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -716,13 +716,13 @@ int getSourceTrimOrigin(int source) int getSourceTrimValue(int source, int stickValue=0) { - auto origin = getSourceTrimOrigin(source); + int rv = 0; + auto origin = getSourceTrimOrigin(abs(source)); if (origin >= 0) { - return getStickTrimValue(origin, stickValue); - } - else { - return 0; + rv = getStickTrimValue(origin, stickValue); + if (source < 0) rv = -rv; } + return rv; } constexpr bitfield_channels_t all_channels_dirty = (bitfield_channels_t)-1; @@ -978,7 +978,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (applyOffsetAndCurve) { bool applyTrims = !(mode & e_perout_mode_notrims); if (!applyTrims && g_model.thrTrim) { - auto origin = getSourceTrimOrigin(srcRaw); + auto origin = getSourceTrimOrigin(srcRawAbs); if (origin == g_model.getThrottleStickTrimSource() - MIXSRC_FIRST_TRIM) { applyTrims = true; }