1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-23 06:48:16 +00:00

fix bug when long press of buttons breaks usb communication in bootloader, bump bl version to 1.3.1

This commit is contained in:
Pavol Rusnak 2016-12-06 16:09:09 +01:00
parent 5f203d0a0c
commit ee3a7cbcfa
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D
2 changed files with 20 additions and 5 deletions

View File

@ -22,14 +22,14 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_PATCH 0
#define VERSION_PATCH 1
#define STR(X) #X
#define VERSTR(X) STR(X)
#define VERSION_MAJOR_CHAR "\x01"
#define VERSION_MINOR_CHAR "\x03"
#define VERSION_PATCH_CHAR "\x00"
#define VERSION_PATCH_CHAR "\x01"
#include "memory.h"

View File

@ -485,23 +485,38 @@ void usbInit(void)
void checkButtons(void)
{
static bool btn_left = false, btn_right = false, btn_final = false;
if (btn_final) {
return;
}
uint16_t state = gpio_port_read(BTN_PORT);
if ((state & (BTN_PIN_YES | BTN_PIN_NO)) != (BTN_PIN_YES | BTN_PIN_NO)) {
if ((state & BTN_PIN_NO) != BTN_PIN_NO) {
oledInvert(0, 0, 3, 3);
btn_left = true;
}
if ((state & BTN_PIN_YES) != BTN_PIN_YES) {
oledInvert(OLED_WIDTH - 4, 0, OLED_WIDTH - 1, 3);
btn_right = true;
}
}
if (btn_left) {
oledBox(0, 0, 3, 3, true);
}
if (btn_right) {
oledBox(OLED_WIDTH - 4, 0, OLED_WIDTH - 1, 3, true);
}
if (btn_left || btn_right) {
oledRefresh();
}
if (btn_left && btn_right) {
btn_final = true;
}
}
void usbLoop(void)
{
for (;;) {
usbd_poll(usbd_dev);
if (flash_state == STATE_READY || flash_state == STATE_OPEN) {
if (!firmware_present && (flash_state == STATE_READY || flash_state == STATE_OPEN)) {
checkButtons();
}
}