From d4b2bd2142e927f4f43c5d424ad1c8f761e89a45 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 16 Feb 2015 00:37:45 +0100 Subject: [PATCH] Trims bug fixed --- radio/src/mixer.cpp | 13 ++++++------- radio/src/opentx.cpp | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index f9919f2fb..d74682ad2 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -551,14 +551,13 @@ void evalInputs(uint8_t mode) } #if defined(VIRTUALINPUTS) -int getStickTrimValue(int stick) +int getStickTrimValue(int stick, int value) { int trim = trims[stick]; if (stick == THR_STICK) { if (g_model.thrTrim) { int trimMin = g_model.extendedTrims ? 2*TRIM_EXTENDED_MIN : 2*TRIM_MIN; - int v = calibratedStick[THR_STICK]; - trim = (((g_model.throttleReversed)?(trim+trimMin):(trim-v)) * (RESX-v)) >> (RESX_SHIFT+1); + trim = ((g_model.throttleReversed ? (trim+trimMin) : (trim-trimMin)) * (RESX-value)) >> (RESX_SHIFT+1); } if (g_model.throttleReversed) { trim = -trim; @@ -567,12 +566,12 @@ int getStickTrimValue(int stick) return trim; } -int getSourceTrimValue(int source) +int getSourceTrimValue(int source, int value=0) { if (source >= MIXSRC_Rud && source <= MIXSRC_Ail) - return getStickTrimValue(source - MIXSRC_Rud); + return getStickTrimValue(source - MIXSRC_Rud, value); else if (source >= MIXSRC_FIRST_INPUT && source <= MIXSRC_LAST_INPUT) - return getStickTrimValue(virtualInputsTrims[source - MIXSRC_FIRST_INPUT]); + return getStickTrimValue(virtualInputsTrims[source - MIXSRC_FIRST_INPUT], value); else return 0; } @@ -812,7 +811,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (!(mode & e_perout_mode_notrims)) { #if defined(VIRTUALINPUTS) if (md->carryTrim == 0) { - v += getSourceTrimValue(md->srcRaw); + v += getSourceTrimValue(md->srcRaw, v); } #else int8_t mix_trim = md->carryTrim; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 84344e5e5..628433752 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1565,7 +1565,7 @@ FORCEINLINE void evalTrims() for (uint8_t i=0; i throttle trim if applicable int16_t trim = getTrimValue(phase, i); -#if !defined(PCBTARANIS) +#if !defined(VIRTUALINPUTS) if (i==THR_STICK && g_model.thrTrim) { int16_t trimMin = g_model.extendedTrims ? TRIM_EXTENDED_MIN : TRIM_MIN; trim = (((g_model.throttleReversed)?(int32_t)(trim+trimMin):(int32_t)(trim-trimMin)) * (RESX-anas[i])) >> (RESX_SHIFT+1);