embed: make model and emulator orthogonal, update macros to match this logic

pull/25/head
Pavol Rusnak 6 years ago
parent 5b5b593eb3
commit e3607156d8
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

@ -109,7 +109,7 @@ env.Replace(
'vendor/micropython/lib/cmsis/inc', 'vendor/micropython/lib/cmsis/inc',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'TREZOR_MODEL_T', ('TREZOR_MODEL', 'T'),
'STM32F427xx', 'STM32F427xx',
'USE_HAL_DRIVER', 'USE_HAL_DRIVER',
('STM32_HAL_H', '"<stm32f4xx.h>"'), ('STM32_HAL_H', '"<stm32f4xx.h>"'),

@ -131,7 +131,7 @@ env.Replace(
'vendor/micropython/lib/cmsis/inc', 'vendor/micropython/lib/cmsis/inc',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'TREZOR_MODEL_T', ('TREZOR_MODEL', 'T'),
'STM32F427xx', 'STM32F427xx',
'USE_HAL_DRIVER', 'USE_HAL_DRIVER',
('STM32_HAL_H', '"<stm32f4xx.h>"'), ('STM32_HAL_H', '"<stm32f4xx.h>"'),

@ -324,7 +324,7 @@ env.Replace(
'vendor/micropython/ports/stm32', 'vendor/micropython/ports/stm32',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'TREZOR_MODEL_T', ('TREZOR_MODEL', 'T'),
'STM32F427xx', 'STM32F427xx',
'USE_HAL_DRIVER', 'USE_HAL_DRIVER',
('STM32_HAL_H', '"<stm32f4xx.h>"'), ('STM32_HAL_H', '"<stm32f4xx.h>"'),

@ -98,7 +98,7 @@ env.Replace(
'vendor/micropython/ports/stm32', 'vendor/micropython/ports/stm32',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'TREZOR_MODEL_T', ('TREZOR_MODEL', 'T'),
'STM32F427xx', 'STM32F427xx',
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'), ('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
] + CPPDEFINES_MOD, ] + CPPDEFINES_MOD,

@ -98,7 +98,7 @@ env.Replace(
'vendor/micropython/ports/stm32', 'vendor/micropython/ports/stm32',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'TREZOR_MODEL_T', ('TREZOR_MODEL', 'T'),
'STM32F427xx', 'STM32F427xx',
('STM32_HAL_H', '"<stm32f4xx_hal.h>"'), ('STM32_HAL_H', '"<stm32f4xx_hal.h>"'),
] + CPPDEFINES_MOD, ] + CPPDEFINES_MOD,

@ -265,8 +265,8 @@ env.Replace(
'vendor/micropython/lib/mp-readline', 'vendor/micropython/lib/mp-readline',
] + CPPPATH_MOD, ] + CPPPATH_MOD,
CPPDEFINES=[ CPPDEFINES=[
'UNIX', 'TREZOR_EMULATOR',
'TREZOR_MODEL_EMU', ('TREZOR_MODEL', 'T'),
'MICROPY_USE_READLINE', 'MICROPY_USE_READLINE',
('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'), ('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'),
] + CPPDEFINES_MOD, ] + CPPDEFINES_MOD,

@ -35,7 +35,7 @@ STATIC mp_obj_t mod_trezorio_SDCard_make_new(const mp_obj_type_t *type, size_t n
mp_arg_check_num(n_args, n_kw, 0, 0, false); mp_arg_check_num(n_args, n_kw, 0, 0, false);
mp_obj_SDCard_t *o = m_new_obj(mp_obj_SDCard_t); mp_obj_SDCard_t *o = m_new_obj(mp_obj_SDCard_t);
o->base.type = type; o->base.type = type;
#if defined TREZOR_MODEL_EMU #ifdef TREZOR_EMULATOR
sdcard_init(); sdcard_init();
#endif #endif
return MP_OBJ_FROM_PTR(o); return MP_OBJ_FROM_PTR(o);

@ -47,12 +47,10 @@ static struct {
int x, y; int x, y;
} DISPLAY_OFFSET; } DISPLAY_OFFSET;
#if defined TREZOR_MODEL_T #ifdef TREZOR_EMULATOR
#include "display-stm32.h"
#elif defined TREZOR_MODEL_EMU
#include "display-unix.h" #include "display-unix.h"
#else #else
#error Unsupported TREZOR port. Only STM32 and UNIX ports are supported. #include "display-stm32.h"
#endif #endif
// common display functions // common display functions
@ -392,7 +390,7 @@ void display_print(const char *text, int textlen)
display_refresh(); display_refresh();
} }
#ifdef TREZOR_MODEL_EMU #ifdef TREZOR_EMULATOR
#define mini_vsnprintf vsnprintf #define mini_vsnprintf vsnprintf
#include <stdio.h> #include <stdio.h>
#else #else

@ -107,7 +107,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorutils_halt_obj, 0, 1, mod_t
/// Set unprivileged mode. /// Set unprivileged mode.
/// ''' /// '''
STATIC mp_obj_t mod_trezorutils_set_mode_unprivileged(void) { STATIC mp_obj_t mod_trezorutils_set_mode_unprivileged(void) {
#if defined TREZOR_MODEL_T #ifndef TREZOR_EMULATOR
__asm__ volatile("msr control, %0" :: "r" (0x1)); __asm__ volatile("msr control, %0" :: "r" (0x1));
__asm__ volatile("isb"); __asm__ volatile("isb");
#endif #endif
@ -120,11 +120,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorutils_set_mode_unprivileged_obj, mod_
/// Retrieve internal symbol. /// Retrieve internal symbol.
/// ''' /// '''
STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) { STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) {
#define XSTR(s) STR(s)
#define STR(s) #s
mp_buffer_info_t str; mp_buffer_info_t str;
mp_get_buffer_raise(name, &str, MP_BUFFER_READ); mp_get_buffer_raise(name, &str, MP_BUFFER_READ);
if (0 == strncmp(str.buf, "GITREV", str.len)) { if (0 == strncmp(str.buf, "GITREV", str.len)) {
#define XSTR(s) STR(s)
#define STR(s) #s
return mp_obj_new_str(XSTR(GITREV), strlen(XSTR(GITREV))); return mp_obj_new_str(XSTR(GITREV), strlen(XSTR(GITREV)));
} }
if (0 == strncmp(str.buf, "VERSION_MAJOR", str.len)) { if (0 == strncmp(str.buf, "VERSION_MAJOR", str.len)) {
@ -136,25 +136,20 @@ STATIC mp_obj_t mod_trezorutils_symbol(mp_obj_t name) {
if (0 == strncmp(str.buf, "VERSION_PATCH", str.len)) { if (0 == strncmp(str.buf, "VERSION_PATCH", str.len)) {
return mp_obj_new_int(VERSION_PATCH); return mp_obj_new_int(VERSION_PATCH);
} }
if (0 == strncmp(str.buf, "MODEL", str.len)) {
return mp_obj_new_str(XSTR(TREZOR_MODEL), strlen(XSTR(TREZOR_MODEL)));
}
if (0 == strncmp(str.buf, "EMULATOR", str.len)) {
#ifdef TREZOR_EMULATOR
return mp_const_true;
#else
return mp_const_false;
#endif
}
return mp_const_none; return mp_const_none;
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorutils_symbol_obj, mod_trezorutils_symbol); STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorutils_symbol_obj, mod_trezorutils_symbol);
/// def model() -> str:
/// '''
/// Return which hardware model we are running on.
/// '''
STATIC mp_obj_t mod_trezorutils_model(void) {
const char *model = NULL;
#if defined TREZOR_MODEL_T
model = "T";
#elif defined TREZOR_MODEL_EMU
model = "EMU";
#endif
return model ? mp_obj_new_str(model, strlen(model)) : mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorutils_model_obj, mod_trezorutils_model);
STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils) }, { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils) },
{ MP_ROM_QSTR(MP_QSTR_consteq), MP_ROM_PTR(&mod_trezorutils_consteq_obj) }, { MP_ROM_QSTR(MP_QSTR_consteq), MP_ROM_PTR(&mod_trezorutils_consteq_obj) },
@ -162,7 +157,6 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&mod_trezorutils_halt_obj) }, { MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&mod_trezorutils_halt_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_mode_unprivileged), MP_ROM_PTR(&mod_trezorutils_set_mode_unprivileged_obj) }, { MP_ROM_QSTR(MP_QSTR_set_mode_unprivileged), MP_ROM_PTR(&mod_trezorutils_set_mode_unprivileged_obj) },
{ MP_ROM_QSTR(MP_QSTR_symbol), MP_ROM_PTR(&mod_trezorutils_symbol_obj) }, { MP_ROM_QSTR(MP_QSTR_symbol), MP_ROM_PTR(&mod_trezorutils_symbol_obj) },
{ MP_ROM_QSTR(MP_QSTR_model), MP_ROM_PTR(&mod_trezorutils_model_obj) },
}; };
STATIC MP_DEFINE_CONST_DICT(mp_module_trezorutils_globals, mp_module_trezorutils_globals_table); STATIC MP_DEFINE_CONST_DICT(mp_module_trezorutils_globals, mp_module_trezorutils_globals_table);

@ -15,9 +15,7 @@ def get_features():
f.minor_version = utils.symbol("VERSION_MINOR") f.minor_version = utils.symbol("VERSION_MINOR")
f.patch_version = utils.symbol("VERSION_PATCH") f.patch_version = utils.symbol("VERSION_PATCH")
f.revision = utils.symbol("GITREV") f.revision = utils.symbol("GITREV")
f.model = utils.model() f.model = utils.symbol("MODEL")
if f.model == "EMU":
f.model = "T" # emulator currently emulates model T
f.device_id = storage.get_device_id() f.device_id = storage.get_device_id()
f.label = storage.get_label() f.label = storage.get_label()
f.initialized = storage.is_initialized() f.initialized = storage.is_initialized()

@ -3,8 +3,7 @@ import utime
from micropython import const from micropython import const
from trezorui import Display from trezorui import Display
from trezor import io, loop, res, workflow from trezor import io, loop, res, workflow, utils
from trezor.utils import model
display = Display() display = Display()
@ -18,7 +17,7 @@ if __debug__:
loop.after_step_hook = debug_display_refresh loop.after_step_hook = debug_display_refresh
# in both debug and production, emulator needs to draw the screen explicitly # in both debug and production, emulator needs to draw the screen explicitly
elif model() == "EMU": elif utils.symbol("EMULATOR"):
loop.after_step_hook = display.refresh loop.after_step_hook = display.refresh
# re-export constants from modtrezorui # re-export constants from modtrezorui

@ -1,6 +1,6 @@
import gc import gc
import sys import sys
from trezorutils import halt, memcpy, model, set_mode_unprivileged, symbol # noqa: F401 from trezorutils import halt, memcpy, set_mode_unprivileged, symbol # noqa: F401
def unimport_begin(): def unimport_begin():

Loading…
Cancel
Save