legacy/bootloader: soft reset after firmware upload

originally submitted by @kedoubitcoin
pull/847/head
Pavol Rusnak 5 years ago
parent 3d91a0643d
commit 23ffc87236
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

@ -19,6 +19,7 @@
#include <libopencm3/stm32/flash.h>
#include <libopencm3/usb/usbd.h>
#include <vendor/libopencm3/include/libopencmsis/core_cm3.h>
#include <string.h>
@ -415,9 +416,18 @@ static void rx_callback(usbd_device *dev, uint8_t ep) {
flash_state = STATE_END;
if (hash_check_ok) {
show_unplug("New firmware", "successfully installed.");
send_msg_success(dev);
shutdown();
__disable_irq();
// wait 3 seconds
char line[] = "will be restarted in _ s.";
for (int i = 3; i > 0; i--) {
line[21] = '0' + i;
layoutDialog(&bmp_icon_ok, NULL, NULL, NULL, "New firmware",
"successfully installed.", NULL, "Your Trezor", line,
NULL);
delay(30000 * 1000);
}
scb_reset_system();
} else {
layoutDialog(&bmp_icon_warning, NULL, NULL, NULL, "Firmware installation",
"aborted.", NULL, "You need to repeat", "the procedure with",

@ -432,7 +432,7 @@ void usbPoll(void) {
void usbReconnect(void) {
if (usbd_dev != NULL) {
usbd_disconnect(usbd_dev, 1);
delay(1000);
delay(120000);
usbd_disconnect(usbd_dev, 0);
}
}

Loading…
Cancel
Save