From b4894c3431d8a07a353234eb19916f4633779b0e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 6 Nov 2018 19:29:34 +0100 Subject: [PATCH] unix: add raspi target --- Makefile | 3 +++ SConscript.unix | 2 ++ embed/extmod/modtrezorui/display-unix.h | 24 +++++++++++++++++++++++- embed/unix/background_raspi.jpg | Bin 0 -> 27282 bytes 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 embed/unix/background_raspi.jpg diff --git a/Makefile b/Makefile index 6f150830f..9956d44c0 100644 --- a/Makefile +++ b/Makefile @@ -124,6 +124,9 @@ build_unix: res ## build unix port build_unix_noui: res ## build unix port without UI support $(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/micropython $(UNIX_PORT_OPTS) TREZOR_EMULATOR_NOUI=1 +build_unix_raspi: res ## build unix port for Raspberry Pi + $(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/micropython $(UNIX_PORT_OPTS) TREZOR_EMULATOR_RASPI=1 + build_cross: ## build mpy-cross port $(MAKE) -C vendor/micropython/mpy-cross $(CROSS_PORT_OPTS) diff --git a/SConscript.unix b/SConscript.unix index 1b7199749..9503aa2e4 100644 --- a/SConscript.unix +++ b/SConscript.unix @@ -104,6 +104,8 @@ SOURCE_MOD += [ ] if ARGUMENTS.get('TREZOR_EMULATOR_NOUI', 0): CPPDEFINES_MOD += ['TREZOR_EMULATOR_NOUI'] +if ARGUMENTS.get('TREZOR_EMULATOR_RASPI', 0): + CPPDEFINES_MOD += ['TREZOR_EMULATOR_RASPI'] # modtrezorutils SOURCE_MOD += [ diff --git a/embed/extmod/modtrezorui/display-unix.h b/embed/extmod/modtrezorui/display-unix.h index d3f135331..5d5983199 100644 --- a/embed/extmod/modtrezorui/display-unix.h +++ b/embed/extmod/modtrezorui/display-unix.h @@ -26,10 +26,17 @@ #if TREZOR_MODEL == T +#ifdef TREZOR_EMULATOR_RASPI +#define WINDOW_WIDTH 480 +#define WINDOW_HEIGHT 320 +#define TOUCH_OFFSET_X 110 +#define TOUCH_OFFSET_Y 40 +#else #define WINDOW_WIDTH 400 #define WINDOW_HEIGHT 600 #define TOUCH_OFFSET_X 80 #define TOUCH_OFFSET_Y 110 +#endif #elif TREZOR_MODEL == 1 @@ -92,7 +99,13 @@ void display_init(void) ensure(secfalse, "SDL_Init error"); } atexit(SDL_Quit); - SDL_Window *win = SDL_CreateWindow("TREZOR Emulator", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN); + SDL_Window *win = SDL_CreateWindow("TREZOR Emulator", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, +#ifdef TREZOR_EMULATOR_RASPI + SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN +#else + SDL_WINDOW_SHOWN +#endif + ); if (!win) { printf("%s\n", SDL_GetError()); ensure(secfalse, "SDL_CreateWindow error"); @@ -109,7 +122,11 @@ void display_init(void) TEXTURE = SDL_CreateTexture(RENDERER, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STREAMING, DISPLAY_RESX, DISPLAY_RESY); SDL_SetTextureBlendMode(TEXTURE, SDL_BLENDMODE_BLEND); // TODO: find better way how to embed/distribute background image +#ifdef TREZOR_EMULATOR_RASPI + BACKGROUND = IMG_LoadTexture(RENDERER, "../embed/unix/background_raspi.jpg"); +#else BACKGROUND = IMG_LoadTexture(RENDERER, "../embed/unix/background_" XSTR(TREZOR_MODEL) ".jpg"); +#endif if (BACKGROUND) { SDL_SetTextureBlendMode(BACKGROUND, SDL_BLENDMODE_NONE); sdl_touch_offset_x = TOUCH_OFFSET_X; @@ -120,8 +137,13 @@ void display_init(void) sdl_touch_offset_y = EMULATOR_BORDER; } DISPLAY_BACKLIGHT = 0; +#ifdef TREZOR_EMULATOR_RASPI + DISPLAY_ORIENTATION = 270; + SDL_ShowCursor(SDL_DISABLE); +#else DISPLAY_ORIENTATION = 0; #endif +#endif } static void display_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) diff --git a/embed/unix/background_raspi.jpg b/embed/unix/background_raspi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19491ed930618998b0f4f78e73a7eb52a9c0b1d0 GIT binary patch literal 27282 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 literal 0 HcmV?d00001