From 5a090d689d024b6a376f897c8d1cfbd72b0f05ad Mon Sep 17 00:00:00 2001 From: Risto Date: Sat, 1 Jan 2022 12:54:49 +0100 Subject: [PATCH] Easier rotary encoder inversion code (#1326) * Easier inversion code. * Evaluate define INVERTED_ROTARY_ENCODER instead. * Make Zorro roller direction more natural and matching also TX16S navigation style. --- .../common/arm/stm32/rotary_encoder_driver.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp index e0d8e5022..df8f19a72 100644 --- a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp +++ b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp @@ -104,18 +104,14 @@ void rotaryEncoderCheck() #else uint8_t newPosition = ROTARY_ENCODER_POSITION(); if (newPosition != rotencPosition && !(readKeys() & (1 << KEY_ENTER))) { +#if defined(ROTARY_ENCODER_INVERT) + if (!((rotencPosition & 0x01) ^ ((newPosition & 0x02) >> 1))) { +#else if ((rotencPosition & 0x01) ^ ((newPosition & 0x02) >> 1)) { -#if defined(ROTARY_ENCODER_INVERT) - ++rotencValue; -#else - --rotencValue; #endif + --rotencValue; } else { -#if defined(ROTARY_ENCODER_INVERT) - --rotencValue; -#else ++rotencValue; -#endif } rotencPosition = newPosition; #endif