modtrezorui: more cleanup

pull/25/head
Pavol Rusnak 7 years ago
parent a753bb05e2
commit 135294b5e8
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

@ -48,6 +48,8 @@ clean_trezorhal: ## clean trezorhal build
clean_unix: ## clean unix build clean_unix: ## clean unix build
$(MAKE) -f ../../../micropython/unix/Makefile -C vendor/micropython/unix clean $(UNIX_PORT_OPTS) $(MAKE) -f ../../../micropython/unix/Makefile -C vendor/micropython/unix clean $(UNIX_PORT_OPTS)
# workaround for relative paths containing ../.. in unix Makefile
rm -rf vendor/micropython/micropython
clean_cross: ## clean mpy-cross build clean_cross: ## clean mpy-cross build
$(MAKE) -C vendor/micropython/mpy-cross clean $(CROSS_PORT_OPTS) $(MAKE) -C vendor/micropython/mpy-cross clean $(CROSS_PORT_OPTS)

@ -285,3 +285,7 @@ void display_refresh(void) {
while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_12)) { } while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_12)) { }
while (GPIO_PIN_SET == HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_12)) { } while (GPIO_PIN_SET == HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_12)) { }
} }
void display_save(const char *filename)
{
}

@ -1,29 +0,0 @@
/*
* Copyright (c) Pavol Rusnak, SatoshiLabs
*
* Licensed under TREZOR License
* see LICENSE file for details
*/
#define CMD(X) (void)(X);
#define DATA(X) (void)(X);
void display_init(void)
{
}
static void display_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1)
{
}
void display_refresh(void)
{
}
static void display_set_orientation(int degrees)
{
}
static void display_set_backlight(int val)
{
}

@ -6,7 +6,9 @@
*/ */
#include <stdlib.h> #include <stdlib.h>
#ifndef TREZOR_NOUI
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#define DISPLAY_BORDER 16 #define DISPLAY_BORDER 16
@ -16,8 +18,6 @@ static SDL_Texture *TEXTURE = 0;
static int DATAODD = 0; static int DATAODD = 0;
static int POSX, POSY, SX, SY, EX, EY = 0; static int POSX, POSY, SX, SY, EX, EY = 0;
#define CMD(X) (void)(X);
void DATA(uint8_t x) { void DATA(uint8_t x) {
if (POSX <= EX && POSY <= EY) { if (POSX <= EX && POSY <= EY) {
((uint8_t *)BUFFER->pixels)[POSX * 2 + POSY * BUFFER->pitch + (DATAODD ^ 1)] = x; ((uint8_t *)BUFFER->pixels)[POSX * 2 + POSY * BUFFER->pitch + (DATAODD ^ 1)] = x;
@ -31,9 +31,13 @@ void DATA(uint8_t x) {
} }
} }
} }
#else
#define DATA(X) (void)(X);
#endif
void display_init(void) void display_init(void)
{ {
#ifndef TREZOR_NOUI
if (SDL_Init(SDL_INIT_VIDEO) != 0) { if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("SDL_Init Error: %s\n", SDL_GetError()); printf("SDL_Init Error: %s\n", SDL_GetError());
} }
@ -54,23 +58,28 @@ void display_init(void)
TEXTURE = SDL_CreateTexture(RENDERER, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STREAMING, DISPLAY_RESX, DISPLAY_RESY); TEXTURE = SDL_CreateTexture(RENDERER, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STREAMING, DISPLAY_RESX, DISPLAY_RESY);
SDL_SetTextureBlendMode(TEXTURE, SDL_BLENDMODE_NONE); SDL_SetTextureBlendMode(TEXTURE, SDL_BLENDMODE_NONE);
SDL_SetTextureAlphaMod(TEXTURE, 0); SDL_SetTextureAlphaMod(TEXTURE, 0);
#endif
} }
static void display_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) static void display_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1)
{ {
#ifndef TREZOR_NOUI
SX = x0; SY = y0; SX = x0; SY = y0;
EX = x1; EY = y1; EX = x1; EY = y1;
POSX = SX; POSY = SY; POSX = SX; POSY = SY;
DATAODD = 0; DATAODD = 0;
#endif
} }
void display_refresh(void) void display_refresh(void)
{ {
#ifndef TREZOR_NOUI
SDL_RenderClear(RENDERER); SDL_RenderClear(RENDERER);
SDL_UpdateTexture(TEXTURE, NULL, BUFFER->pixels, BUFFER->pitch); SDL_UpdateTexture(TEXTURE, NULL, BUFFER->pixels, BUFFER->pitch);
const SDL_Rect r = {DISPLAY_BORDER, DISPLAY_BORDER, DISPLAY_RESX, DISPLAY_RESY}; const SDL_Rect r = {DISPLAY_BORDER, DISPLAY_BORDER, DISPLAY_RESX, DISPLAY_RESY};
SDL_RenderCopyEx(RENDERER, TEXTURE, NULL, &r, ORIENTATION, NULL, 0); SDL_RenderCopyEx(RENDERER, TEXTURE, NULL, &r, ORIENTATION, NULL, 0);
SDL_RenderPresent(RENDERER); SDL_RenderPresent(RENDERER);
#endif
} }
static void display_set_orientation(int degrees) static void display_set_orientation(int degrees)
@ -79,5 +88,14 @@ static void display_set_orientation(int degrees)
static void display_set_backlight(int val) static void display_set_backlight(int val)
{ {
#ifndef TREZOR_NOUI
SDL_SetRenderDrawColor(RENDERER, val, val, val, 255); SDL_SetRenderDrawColor(RENDERER, val, val, val, 255);
#endif
}
void display_save(const char *filename)
{
#ifndef TREZOR_NOUI
IMG_SavePNG(BUFFER, filename);
#endif
} }

@ -23,11 +23,7 @@ static int OFFSET[2] = {0, 0};
#if defined STM32_HAL_H #if defined STM32_HAL_H
#include "display-stmhal.h" #include "display-stmhal.h"
#else #else
#ifndef TREZOR_NOUI #include "display-unix.h"
#include "display-unix-sdl.h"
#else
#include "display-unix-null.h"
#endif
#endif #endif
// common display functions // common display functions

@ -19,24 +19,34 @@
#define LOADER_ICON_SIZE 64 #define LOADER_ICON_SIZE 64
// provided by port
void display_init(void); void display_init(void);
int display_orientation(int degrees); void display_refresh(void);
int display_backlight(int val); void display_save(const char *filename);
int *display_offset(int xy[2]);
// provided by common
void display_clear(void); void display_clear(void);
void display_refresh(void);
void display_bar(int x, int y, int w, int h, uint16_t c); void display_bar(int x, int y, int w, int h, uint16_t c);
void display_bar_radius(int x, int y, int w, int h, uint16_t c, uint16_t b, uint8_t r); void display_bar_radius(int x, int y, int w, int h, uint16_t c, uint16_t b, uint8_t r);
void display_image(int x, int y, int w, int h, const void *data, int datalen); void display_image(int x, int y, int w, int h, const void *data, int datalen);
void display_icon(int x, int y, int w, int h, const void *data, int datalen, uint16_t fgcolor, uint16_t bgcolor); void display_icon(int x, int y, int w, int h, const void *data, int datalen, uint16_t fgcolor, uint16_t bgcolor);
void display_qrcode(int x, int y, const char *data, int datalen, uint8_t scale);
void display_loader(uint16_t progress, int yoffset, uint16_t fgcolor, uint16_t bgcolor, const uint8_t *icon, uint32_t iconlen, uint16_t iconfgcolor);
void display_print(const char *text, int textlen); void display_print(const char *text, int textlen);
void display_text(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor); void display_text(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor);
void display_text_center(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor); void display_text_center(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor);
void display_text_right(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor); void display_text_right(int x, int y, const char *text, int textlen, uint8_t font, uint16_t fgcolor, uint16_t bgcolor);
int display_text_width(const char *text, int textlen, uint8_t font); int display_text_width(const char *text, int textlen, uint8_t font);
void display_qrcode(int x, int y, const char *data, int datalen, uint8_t scale);
void display_loader(uint16_t progress, int yoffset, uint16_t fgcolor, uint16_t bgcolor, const uint8_t *icon, uint32_t iconlen, uint16_t iconfgcolor);
int *display_offset(int xy[2]);
int display_orientation(int degrees);
int display_backlight(int val);
#endif #endif

@ -352,6 +352,20 @@ STATIC mp_obj_t mod_TrezorUi_Display_offset(size_t n_args, const mp_obj_t *args)
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_offset_obj, 1, 2, mod_TrezorUi_Display_offset); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_offset_obj, 1, 2, mod_TrezorUi_Display_offset);
/// def trezor.ui.display.save(filename: string) -> None:
/// '''
/// Saves current display contents to file filename.
/// '''
STATIC mp_obj_t mod_TrezorUi_Display_save(mp_obj_t self, mp_obj_t filename) {
mp_buffer_info_t fn;
mp_get_buffer_raise(filename, &fn, MP_BUFFER_READ);
if (fn.len > 0) {
display_save(fn.buf);
}
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorUi_Display_save_obj, mod_TrezorUi_Display_save);
STATIC const mp_rom_map_elem_t mod_TrezorUi_Display_locals_dict_table[] = { STATIC const mp_rom_map_elem_t mod_TrezorUi_Display_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&mod_TrezorUi_Display_clear_obj) }, { MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&mod_TrezorUi_Display_clear_obj) },
{ MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&mod_TrezorUi_Display_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&mod_TrezorUi_Display_refresh_obj) },
@ -369,6 +383,7 @@ STATIC const mp_rom_map_elem_t mod_TrezorUi_Display_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_orientation), MP_ROM_PTR(&mod_TrezorUi_Display_orientation_obj) }, { MP_ROM_QSTR(MP_QSTR_orientation), MP_ROM_PTR(&mod_TrezorUi_Display_orientation_obj) },
{ MP_ROM_QSTR(MP_QSTR_backlight), MP_ROM_PTR(&mod_TrezorUi_Display_backlight_obj) }, { MP_ROM_QSTR(MP_QSTR_backlight), MP_ROM_PTR(&mod_TrezorUi_Display_backlight_obj) },
{ MP_ROM_QSTR(MP_QSTR_offset), MP_ROM_PTR(&mod_TrezorUi_Display_offset_obj) }, { MP_ROM_QSTR(MP_QSTR_offset), MP_ROM_PTR(&mod_TrezorUi_Display_offset_obj) },
{ MP_ROM_QSTR(MP_QSTR_save), MP_ROM_PTR(&mod_TrezorUi_Display_save_obj) },
{ MP_ROM_QSTR(MP_QSTR_FONT_MONO), MP_OBJ_NEW_SMALL_INT(FONT_MONO) }, { MP_ROM_QSTR(MP_QSTR_FONT_MONO), MP_OBJ_NEW_SMALL_INT(FONT_MONO) },
{ MP_ROM_QSTR(MP_QSTR_FONT_NORMAL), MP_OBJ_NEW_SMALL_INT(FONT_NORMAL) }, { MP_ROM_QSTR(MP_QSTR_FONT_NORMAL), MP_OBJ_NEW_SMALL_INT(FONT_NORMAL) },
{ MP_ROM_QSTR(MP_QSTR_FONT_BOLD), MP_OBJ_NEW_SMALL_INT(FONT_BOLD) }, { MP_ROM_QSTR(MP_QSTR_FONT_BOLD), MP_OBJ_NEW_SMALL_INT(FONT_BOLD) },

@ -89,7 +89,7 @@ ifeq ($(MICROPY_PY_TREZORUI),1)
ifeq ($(TREZOR_NOUI),1) ifeq ($(TREZOR_NOUI),1)
CFLAGS_MOD += -DTREZOR_NOUI=1 CFLAGS_MOD += -DTREZOR_NOUI=1
else else
LDFLAGS_MOD += -lSDL2 LDFLAGS_MOD += -lSDL2 -lSDL2_image
endif endif
endif endif

Loading…
Cancel
Save