1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-17 01:52:02 +00:00

common: don't expose shutdown() via common.h

This commit is contained in:
Pavol Rusnak 2017-12-07 15:31:23 +01:00
parent f88080b904
commit 38e3088325
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D
8 changed files with 28 additions and 15 deletions

View File

@ -89,7 +89,7 @@ static void pin_fails_check_max(uint32_t ctr)
break; break;
} }
} }
shutdown(); ensure(secfalse, "pin_fails_check_max");
} }
} }

View File

@ -45,17 +45,16 @@ void display_init(void)
printf("%s\n", SDL_GetError()); printf("%s\n", SDL_GetError());
ensure(secfalse, "SDL_Init error"); ensure(secfalse, "SDL_Init error");
} }
atexit(SDL_Quit);
SDL_Window *win = SDL_CreateWindow("TREZOR", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, DISPLAY_RESX + 2 * DISPLAY_BORDER, DISPLAY_RESY + 2 * DISPLAY_BORDER, SDL_WINDOW_SHOWN); SDL_Window *win = SDL_CreateWindow("TREZOR", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, DISPLAY_RESX + 2 * DISPLAY_BORDER, DISPLAY_RESY + 2 * DISPLAY_BORDER, SDL_WINDOW_SHOWN);
if (!win) { if (!win) {
printf("%s\n", SDL_GetError()); printf("%s\n", SDL_GetError());
SDL_Quit();
ensure(secfalse, "SDL_CreateWindow error"); ensure(secfalse, "SDL_CreateWindow error");
} }
RENDERER = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); RENDERER = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
if (!RENDERER) { if (!RENDERER) {
printf("%s\n", SDL_GetError()); printf("%s\n", SDL_GetError());
SDL_DestroyWindow(win); SDL_DestroyWindow(win);
SDL_Quit();
ensure(secfalse, "SDL_CreateRenderer error"); ensure(secfalse, "SDL_CreateRenderer error");
} }
SDL_SetRenderDrawColor(RENDERER, DISPLAY_BACKLIGHT, DISPLAY_BACKLIGHT, DISPLAY_BACKLIGHT, 255); SDL_SetRenderDrawColor(RENDERER, DISPLAY_BACKLIGHT, DISPLAY_BACKLIGHT, DISPLAY_BACKLIGHT, 255);

View File

@ -27,7 +27,7 @@ enum { VCP_IFACE = 0x00 };
static void vcp_intr(void) static void vcp_intr(void)
{ {
display_clear(); display_clear();
shutdown(); ensure(secfalse, "vcp_intr");
} }
static void vcp_puts(const char *s, size_t len) static void vcp_puts(const char *s, size_t len)

View File

@ -4,6 +4,8 @@
#include "display.h" #include "display.h"
#include "rng.h" #include "rng.h"
void shutdown(void);
void __attribute__((noreturn)) __fatal_error(const char *expr, const char *msg, const char *file, int line, const char *func) { void __attribute__((noreturn)) __fatal_error(const char *expr, const char *msg, const char *file, int line, const char *func) {
display_orientation(0); display_orientation(0);
display_backlight(255); display_backlight(255);

View File

@ -18,6 +18,5 @@ extern uint32_t __stack_chk_guard;
void memset_reg(volatile void *start, volatile void *stop, uint32_t val); void memset_reg(volatile void *start, volatile void *stop, uint32_t val);
void jump_to(uint32_t address); void jump_to(uint32_t address);
void shutdown(void);
#endif #endif

View File

@ -3,36 +3,49 @@
#include <unistd.h> #include <unistd.h>
#include "common.h" #include "common.h"
#include "display.h"
void __shutdown(void)
{
printf("SHUTDOWN\n");
exit(3);
}
void __attribute__((noreturn)) __fatal_error(const char *expr, const char *msg, const char *file, int line, const char *func) void __attribute__((noreturn)) __fatal_error(const char *expr, const char *msg, const char *file, int line, const char *func)
{ {
display_orientation(0);
display_backlight(255);
display_print_color(COLOR_WHITE, COLOR_RED128);
display_printf("\nFATAL ERROR:\n");
printf("\nFATAL ERROR:\n"); printf("\nFATAL ERROR:\n");
if (expr) { if (expr) {
display_printf("expr: %s\n", expr);
printf("expr: %s\n", expr); printf("expr: %s\n", expr);
} }
if (msg) { if (msg) {
display_printf("msg : %s\n", msg);
printf("msg : %s\n", msg); printf("msg : %s\n", msg);
} }
if (file) { if (file) {
display_printf("file: %s:%d\n", file, line);
printf("file: %s:%d\n", file, line); printf("file: %s:%d\n", file, line);
} }
if (func) { if (func) {
display_printf("func: %s\n", func);
printf("func: %s\n", func); printf("func: %s\n", func);
} }
#ifdef GITREV #ifdef GITREV
#define XSTR(s) STR(s) #define XSTR(s) STR(s)
#define STR(s) #s #define STR(s) #s
display_printf("rev : %s\n", XSTR(GITREV));
printf("rev : %s\n", XSTR(GITREV)); printf("rev : %s\n", XSTR(GITREV));
#endif #endif
exit(1); hal_delay(3000);
__shutdown();
for (;;);
} }
void hal_delay(uint32_t ms) void hal_delay(uint32_t ms)
{ {
usleep(1000 * ms); usleep(1000 * ms);
} }
void shutdown(void)
{
exit(1);
}

View File

@ -9,6 +9,4 @@ void __attribute__((noreturn)) __fatal_error(const char *expr, const char *msg,
void hal_delay(uint32_t ms); void hal_delay(uint32_t ms);
void shutdown(void);
#endif #endif

View File

@ -13,6 +13,8 @@
#include "options.h" #include "options.h"
#include "embed/trezorhal/touch.h" #include "embed/trezorhal/touch.h"
void __shutdown(void);
uint32_t touch_read(void) uint32_t touch_read(void)
{ {
#ifndef TREZOR_NOUI #ifndef TREZOR_NOUI
@ -43,11 +45,11 @@ uint32_t touch_read(void)
break; break;
case SDL_KEYUP: case SDL_KEYUP:
if (event.key.keysym.sym == SDLK_ESCAPE) { if (event.key.keysym.sym == SDLK_ESCAPE) {
exit(3); __shutdown();
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
exit(3); __shutdown();
break; break;
} }
} }