diff --git a/legacy/bootloader/bootloader.c b/legacy/bootloader/bootloader.c index 515b53546..582ba85d9 100644 --- a/legacy/bootloader/bootloader.c +++ b/legacy/bootloader/bootloader.c @@ -47,8 +47,8 @@ bool get_button_response(void) { do { delay(100000); buttonUpdate(); - } while (!button.YesUp && !button.NoUp); - return button.YesUp; + } while (!button.YesReleased && !button.NoReleased); + return button.YesReleased; } void show_halt(const char *line1, const char *line2) { diff --git a/legacy/buttons.c b/legacy/buttons.c index 58e2b6d57..ca7459884 100644 --- a/legacy/buttons.c +++ b/legacy/buttons.c @@ -19,7 +19,7 @@ #include "buttons.h" -struct buttonState button; +struct buttonState button = {0}; #if !EMULATOR uint16_t buttonRead(void) { return gpio_port_read(BTN_PORT); } @@ -33,36 +33,34 @@ void buttonUpdate() { if ((state & BTN_PIN_YES) == 0) { // Yes button is down if ((last_state & BTN_PIN_YES) == 0) { // last Yes was down if (button.YesDown < 2000000000) button.YesDown++; - button.YesUp = false; + button.YesReleased = false; } else { // last Yes was up - button.YesDown = 0; - button.YesUp = false; + button.YesDown = 1; + button.YesReleased = false; } } else { // Yes button is up if ((last_state & BTN_PIN_YES) == 0) { // last Yes was down - button.YesDown = 0; - button.YesUp = true; + button.YesReleased = true; } else { // last Yes was up button.YesDown = 0; - button.YesUp = false; + button.YesReleased = false; } } if ((state & BTN_PIN_NO) == 0) { // No button is down if ((last_state & BTN_PIN_NO) == 0) { // last No was down if (button.NoDown < 2000000000) button.NoDown++; - button.NoUp = false; + button.NoReleased = false; } else { // last No was up - button.NoDown = 0; - button.NoUp = false; + button.NoDown = 1; + button.NoReleased = false; } } else { // No button is up if ((last_state & BTN_PIN_NO) == 0) { // last No was down - button.NoDown = 0; - button.NoUp = true; + button.NoReleased = true; } else { // last No was up button.NoDown = 0; - button.NoUp = false; + button.NoReleased = false; } } diff --git a/legacy/buttons.h b/legacy/buttons.h index d5243f14f..b345bea15 100644 --- a/legacy/buttons.h +++ b/legacy/buttons.h @@ -24,9 +24,9 @@ #include struct buttonState { - volatile bool YesUp; + volatile bool YesReleased; volatile int YesDown; - volatile bool NoUp; + volatile bool NoReleased; volatile int NoDown; }; diff --git a/legacy/demo/demo.c b/legacy/demo/demo.c index 59d0aea62..a20da6b52 100644 --- a/legacy/demo/demo.c +++ b/legacy/demo/demo.c @@ -294,9 +294,9 @@ int main(void) { buttonUpdate(); frame += 1; - } while (!button.YesUp && !button.NoUp); + } while (!button.YesReleased && !button.NoReleased); - if (button.YesUp) { + if (button.YesReleased) { state = (state + 1) % states; oledSwipeLeft(); } else { diff --git a/legacy/firmware/protect.c b/legacy/firmware/protect.c index 28dda1fad..e58e8ac38 100644 --- a/legacy/firmware/protect.c +++ b/legacy/firmware/protect.c @@ -66,11 +66,11 @@ bool protectButton(ButtonRequestType type, bool confirm_only) { if (acked) { usbSleep(5); buttonUpdate(); - if (button.YesUp) { + if (button.YesReleased) { result = true; break; } - if (!confirm_only && button.NoUp) { + if (!confirm_only && button.NoReleased) { result = false; break; } diff --git a/legacy/firmware/trezor.c b/legacy/firmware/trezor.c index 89364ea48..46615feb3 100644 --- a/legacy/firmware/trezor.c +++ b/legacy/firmware/trezor.c @@ -45,7 +45,8 @@ void check_lock_screen(void) { buttonUpdate(); // wake from screensaver on any button - if (layoutLast == layoutScreensaver && (button.NoUp || button.YesUp)) { + if (layoutLast == layoutScreensaver && + (button.NoReleased || button.YesReleased)) { layoutHome(); return; } @@ -61,16 +62,16 @@ void check_lock_screen(void) { do { usbSleep(5); buttonUpdate(); - } while (!button.NoUp); + } while (!button.NoReleased); // wait for confirmation/cancellation of the dialog do { usbSleep(5); buttonUpdate(); - } while (!button.YesUp && !button.NoUp); + } while (!button.YesReleased && !button.NoReleased); usbTiny(0); - if (button.YesUp) { + if (button.YesReleased) { // lock the screen config_lockDevice(); layoutScreensaver(); diff --git a/legacy/firmware/u2f.c b/legacy/firmware/u2f.c index 786aee2bb..4d1861190 100644 --- a/legacy/firmware/u2f.c +++ b/legacy/firmware/u2f.c @@ -247,7 +247,8 @@ void u2fhid_read_start(const U2FHID_FRAME *f) { dialog_timeout--; usbPoll(); // may trigger new request buttonUpdate(); - if (button.YesUp && (last_req_state == AUTH || last_req_state == REG)) { + if (button.YesReleased && + (last_req_state == AUTH || last_req_state == REG)) { last_req_state++; // standard requires to remember button press for 10 seconds. dialog_timeout = 10 * U2F_TIMEOUT;