diff --git a/options.txt b/options.txt index 10f7de6..551eaf2 100644 --- a/options.txt +++ b/options.txt @@ -132,9 +132,13 @@ GraphIEC = 1 // // Please see dmRotary.h for full implementation details. // +// Updated to address issue #185 and allow for inversion of rotary operation +// for certain encoders. - 08/13/2020 by Geo... +// //RotaryEncoderEnable = 1 +//RotaryEncoderInvert = 1 // This option will display the temperature of the Pi's CPU. -// It should be about 52°C anything above 65°C is bad and there is something wrong with your hardware +// It should be about 52�C anything above 65�C is bad and there is something wrong with your hardware //DisplayTemperature = 1 diff --git a/src/iec_bus.cpp b/src/iec_bus.cpp index c9caca9..1640d91 100644 --- a/src/iec_bus.cpp +++ b/src/iec_bus.cpp @@ -74,7 +74,8 @@ unsigned IEC_Bus::gplev0; //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... RotaryEncoder IEC_Bus::rotaryEncoder; bool IEC_Bus::rotaryEncoderEnable; - +//ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... +bool IEC_Bus::rotaryEncoderInvert; void IEC_Bus::ReadGPIOUserInput( int buttonCount) { diff --git a/src/iec_bus.h b/src/iec_bus.h index 278d649..5449d72 100644 --- a/src/iec_bus.h +++ b/src/iec_bus.h @@ -375,7 +375,15 @@ public: //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... if (IEC_Bus::rotaryEncoderEnable == true) { - IEC_Bus::rotaryEncoder.Initialize(RPI_GPIO22, RPI_GPIO23, RPI_GPIO27); + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + if (IEC_Bus::rotaryEncoderInvert == true) + { + IEC_Bus::rotaryEncoder.Initialize(RPI_GPIO23, RPI_GPIO22, RPI_GPIO27); + } + else + { + IEC_Bus::rotaryEncoder.Initialize(RPI_GPIO22, RPI_GPIO23, RPI_GPIO27); + } } } @@ -670,6 +678,12 @@ public: rotaryEncoderEnable = value; } + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + static inline void SetRotaryEncoderInvert(bool value) + { + rotaryEncoderInvert = value; + } + // CA1 input ATN // If CA1 is ever set to output // - CA1 will start to drive pb7 @@ -737,6 +751,8 @@ private: //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... static RotaryEncoder rotaryEncoder; static bool rotaryEncoderEnable; + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + static bool rotaryEncoderInvert; }; #endif diff --git a/src/main.cpp b/src/main.cpp index 77dcfac..c8e32f4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1940,6 +1940,8 @@ extern "C" IEC_Bus::SetIgnoreReset(options.IgnoreReset()); //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... IEC_Bus::SetRotaryEncoderEnable(options.RotaryEncoderEnable()); + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + IEC_Bus::SetRotaryEncoderInvert(options.RotaryEncoderInvert()); #if not defined(EXPERIMENTALZERO) if (!options.SoundOnGPIO()) { diff --git a/src/options.cpp b/src/options.cpp index 4d409d9..2774263 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -159,7 +159,7 @@ Options::Options(void) , buttonBack(4) , buttonInsert(5) , rotaryEncoderEnable(0) //ROTARY: - + , rotaryEncoderInvert(0) //ROTARY: { autoMountImageName[0] = 0; strcpy(ROMFontName, "chargen"); @@ -251,6 +251,7 @@ void Options::Process(char* buffer) ELSE_CHECK_DECIMAL_OPTION(buttonBack) ELSE_CHECK_DECIMAL_OPTION(buttonInsert) ELSE_CHECK_DECIMAL_OPTION(rotaryEncoderEnable) //ROTARY: + ELSE_CHECK_DECIMAL_OPTION(rotaryEncoderInvert) //ROTARY: else if ((strcasecmp(pOption, "AutoBaseName") == 0)) { strncpy(autoBaseName, pValue, 255); diff --git a/src/options.h b/src/options.h index 374dda0..889e4b9 100644 --- a/src/options.h +++ b/src/options.h @@ -109,6 +109,8 @@ public: //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... inline unsigned int RotaryEncoderEnable() const { return rotaryEncoderEnable; } + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + inline unsigned int RotaryEncoderInvert() const { return rotaryEncoderInvert; } // Page up and down will jump a different amount based on the maximum number rows displayed. // Perhaps we should use some keyboard modifier to the the other screen? @@ -191,6 +193,8 @@ private: //ROTARY: Added for rotary encoder support - 09/05/2019 by Geo... unsigned int rotaryEncoderEnable; + //ROTARY: Added for rotary encoder inversion (Issue#185) - 08/13/2020 by Geo... + unsigned int rotaryEncoderInvert; }; #endif