From 21ae270c0e949f40de0ed13f38a372b4e202ecbd Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Thu, 31 Jul 2014 15:08:37 +0200 Subject: [PATCH 1/3] Fixes #1569 --- radio/src/mixer.cpp | 6 ++++-- radio/src/opentx.cpp | 6 +----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 1d06d2d25..03afc1790 100755 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -753,9 +753,11 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (mix_trim == THR_STICK) { if (g_model.thrTrim) { if (g_model.throttleReversed) { - trim = -trim; + trim = ((int32_t)(trim+TRIM_MIN) * (RESX-v)) >> (RESX_SHIFT+1); + } + else { + trim = ((int32_t)(trim-TRIM_MIN) * (RESX-v)) >> (RESX_SHIFT+1); } - trim = ((trim-2*TRIM_MIN) * (RESX-v)) >> (RESX_SHIFT+1); } if (g_model.throttleReversed) { trim = -trim; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index c603d3396..33b96d8be 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1661,11 +1661,7 @@ FORCEINLINE void evalTrims() int16_t trim = getTrimValue(phase, i); #if !defined(PCBTARANIS) if (i==THR_STICK && g_model.thrTrim) { - if (g_model.throttleReversed) - trim = -trim; - int16_t v = anas[i]; - int32_t vv = ((int32_t)trim-TRIM_MIN)*(RESX-v)>>(RESX_SHIFT+1); - trim = vv; + trim = (((g_model.throttleReversed)?(int32_t)(trim+TRIM_MIN):(int32_t)(trim-TRIM_MIN)) * (RESX-getValue(MIXSRC_Thr))) >> (RESX_SHIFT+1); } #endif if (trimsCheckTimer > 0) { From 828372ab292e87122d40a6167d8fc132cfe064e3 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Thu, 31 Jul 2014 15:47:32 +0200 Subject: [PATCH 2/3] Fix for the case of extended trims Code cleanup --- radio/src/mixer.cpp | 8 ++------ radio/src/opentx.cpp | 3 ++- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 03afc1790..b805932a2 100755 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -752,12 +752,8 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) int32_t trim = trims[mix_trim]; if (mix_trim == THR_STICK) { if (g_model.thrTrim) { - if (g_model.throttleReversed) { - trim = ((int32_t)(trim+TRIM_MIN) * (RESX-v)) >> (RESX_SHIFT+1); - } - else { - trim = ((int32_t)(trim-TRIM_MIN) * (RESX-v)) >> (RESX_SHIFT+1); - } + int16_t trimMin = g_model.extendedTrims ? 2*TRIM_EXTENDED_MIN : 2*TRIM_MIN; + trim = (((g_model.throttleReversed)?(trim+trimMin):(trim-trimMin)) * (RESX-v)) >> (RESX_SHIFT+1); } if (g_model.throttleReversed) { trim = -trim; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 33b96d8be..f93f1c2a3 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1661,7 +1661,8 @@ FORCEINLINE void evalTrims() int16_t trim = getTrimValue(phase, i); #if !defined(PCBTARANIS) if (i==THR_STICK && g_model.thrTrim) { - trim = (((g_model.throttleReversed)?(int32_t)(trim+TRIM_MIN):(int32_t)(trim-TRIM_MIN)) * (RESX-getValue(MIXSRC_Thr))) >> (RESX_SHIFT+1); + int16_t trimMin = g_model.extendedTrims ? TRIM_EXTENDED_MIN : TRIM_MIN; + trim = (((g_model.throttleReversed)?(int32_t)(trim+trimMin):(int32_t)(trim-trimMin)) * (RESX-getValue(MIXSRC_Thr))) >> (RESX_SHIFT+1); } #endif if (trimsCheckTimer > 0) { From 50997721e2d64d6130ed9e2f990e3dcd0fc56d8d Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Thu, 31 Jul 2014 15:57:50 +0200 Subject: [PATCH 3/3] Using anas instead for getValue --- radio/src/opentx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index f93f1c2a3..cf4f8bdfc 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1662,7 +1662,7 @@ FORCEINLINE void evalTrims() #if !defined(PCBTARANIS) 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-getValue(MIXSRC_Thr))) >> (RESX_SHIFT+1); + trim = (((g_model.throttleReversed)?(int32_t)(trim+trimMin):(int32_t)(trim-trimMin)) * (RESX-anas[i])) >> (RESX_SHIFT+1); } #endif if (trimsCheckTimer > 0) {