Fixed #154 Rotary encoder usage jumpy in emulation mode

This commit is contained in:
Stephen White 2019-12-29 17:08:55 +11:00
parent bdcf49f758
commit 610af8efae

View file

@ -20,8 +20,6 @@
//#define REAL_XOR 1 //#define REAL_XOR 1
static int buttonCount = sizeof(ButtonPinFlags) / sizeof(unsigned);
u32 IEC_Bus::oldClears = 0; u32 IEC_Bus::oldClears = 0;
u32 IEC_Bus::oldSets = 0; u32 IEC_Bus::oldSets = 0;
u32 IEC_Bus::PIGPIO_MASK_IN_ATN = 1 << PIGPIO_ATN; u32 IEC_Bus::PIGPIO_MASK_IN_ATN = 1 << PIGPIO_ATN;
@ -77,14 +75,12 @@ unsigned IEC_Bus::gplev0;
RotaryEncoder IEC_Bus::rotaryEncoder; RotaryEncoder IEC_Bus::rotaryEncoder;
bool IEC_Bus::rotaryEncoderEnable; bool IEC_Bus::rotaryEncoderEnable;
//ROTARY: Modified for rotary encoder support - 09/05/2019 by Geo...
void IEC_Bus::ReadBrowseMode(void)
{
gplev0 = read32(ARM_GPIO_GPLEV0);
void IEC_Bus::ReadGPIOUserInput( int buttonCount)
{
//ROTARY: Added for rotary encoder support - 09/05/2019 by Geo...
if (IEC_Bus::rotaryEncoderEnable == true) if (IEC_Bus::rotaryEncoderEnable == true)
{ {
int indexEnter = 0; int indexEnter = 0;
int indexUp = 1; int indexUp = 1;
int indexDown = 2; int indexDown = 2;
@ -124,7 +120,6 @@ void IEC_Bus::ReadBrowseMode(void)
UpdateButton(indexBack, gplev0); UpdateButton(indexBack, gplev0);
UpdateButton(indexInsert, gplev0); UpdateButton(indexInsert, gplev0);
} }
else // Unmolested original logic else // Unmolested original logic
{ {
@ -136,6 +131,14 @@ void IEC_Bus::ReadBrowseMode(void)
} }
} }
}
//ROTARY: Modified for rotary encoder support - 09/05/2019 by Geo...
void IEC_Bus::ReadBrowseMode(void)
{
gplev0 = read32(ARM_GPIO_GPLEV0);
ReadGPIOUserInput(buttonCount);
bool ATNIn = (gplev0 & PIGPIO_MASK_IN_ATN) == (invertIECInputs ? PIGPIO_MASK_IN_ATN : 0); bool ATNIn = (gplev0 & PIGPIO_MASK_IN_ATN) == (invertIECInputs ? PIGPIO_MASK_IN_ATN : 0);
if (PI_Atn != ATNIn) if (PI_Atn != ATNIn)
@ -172,15 +175,6 @@ void IEC_Bus::ReadBrowseMode(void)
Resetting = !ignoreReset && ((gplev0 & PIGPIO_MASK_IN_RESET) == (invertIECInputs ? PIGPIO_MASK_IN_RESET : 0)); Resetting = !ignoreReset && ((gplev0 & PIGPIO_MASK_IN_RESET) == (invertIECInputs ? PIGPIO_MASK_IN_RESET : 0));
} }
void IEC_Bus::ReadButtonsEmulationMode(void)
{
int buttonIndex;
for (buttonIndex = 0; buttonIndex < 3; ++buttonIndex)
{
UpdateButton(buttonIndex, gplev0);
}
}
void IEC_Bus::ReadEmulationMode1541(void) void IEC_Bus::ReadEmulationMode1541(void)
{ {
bool AtnaDataSetToOutOld = AtnaDataSetToOut; bool AtnaDataSetToOutOld = AtnaDataSetToOut;
@ -282,7 +276,7 @@ void IEC_Bus::ReadEmulationMode1581(void)
IOPort* portB = 0; IOPort* portB = 0;
gplev0 = read32(ARM_GPIO_GPLEV0); gplev0 = read32(ARM_GPIO_GPLEV0);
ReadButtonsEmulationMode(); ReadGPIOUserInput(3);//check less button states, save time
portB = port; portB = port;