From fff89e506c5e0819630b18f6119d2006fedea0f4 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Sat, 23 Feb 2019 22:04:39 +0100 Subject: [PATCH] Archie: reset keyboard/mouse when stuck --- archie.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/archie.c b/archie.c index c7011bb..520c42c 100644 --- a/archie.c +++ b/archie.c @@ -447,18 +447,20 @@ void archie_handle_kbd(void) { // arm acks first byte case BACK: - if(kbd_state != STATE_WAIT4ACK1) - archie_debugf("KBD unexpected BACK"); - + if(kbd_state != STATE_WAIT4ACK1) { + archie_debugf("KBD unexpected BACK, resetting KBD"); + kbd_state = STATE_HRST; + } else { #ifdef HOLD_OFF_TIME - // wait some time before sending next byte - archie_debugf("KBD starting hold off"); - kbd_state = STATE_HOLD_OFF; - hold_off_timer = GetTimer(10); + // wait some time before sending next byte + archie_debugf("KBD starting hold off"); + kbd_state = STATE_HOLD_OFF; + hold_off_timer = GetTimer(10); #else - kbd_state = STATE_IDLE; - archie_check_queue(); + kbd_state = STATE_IDLE; + archie_check_queue(); #endif + } break; // arm acks second byte