diff --git a/Makefile b/Makefile index 2dba8e6f3..96f6faaff 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ FIRMWARE_P1_MAXSIZE = 786432 FIRMWARE_P2_MAXSIZE = 917504 FIRMWARE_MAXSIZE = 1703936 -GITREV=$(shell git describe --always --dirty) +GITREV=$(shell git describe --always --dirty | tr '-' '_') CFLAGS += -DGITREV=$(GITREV) ## help commands: diff --git a/embed/extmod/modtrezorutils/modtrezorutils.c b/embed/extmod/modtrezorutils/modtrezorutils.c index c106a6f0c..3e254a65e 100644 --- a/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/embed/extmod/modtrezorutils/modtrezorutils.c @@ -115,40 +115,8 @@ STATIC mp_obj_t mod_trezorutils_set_mode_unprivileged(void) { } STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorutils_set_mode_unprivileged_obj, mod_trezorutils_set_mode_unprivileged); -/// def symbol(name: str) -> str/int/None: -/// ''' -/// Retrieve internal symbol. -/// ''' -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_get_buffer_raise(name, &str, MP_BUFFER_READ); - if (0 == strncmp(str.buf, "GITREV", str.len)) { - return mp_obj_new_str(XSTR(GITREV), strlen(XSTR(GITREV))); - } - if (0 == strncmp(str.buf, "VERSION_MAJOR", str.len)) { - return mp_obj_new_int(VERSION_MAJOR); - } - if (0 == strncmp(str.buf, "VERSION_MINOR", str.len)) { - return mp_obj_new_int(VERSION_MINOR); - } - if (0 == strncmp(str.buf, "VERSION_PATCH", str.len)) { - 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; -} -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorutils_symbol_obj, mod_trezorutils_symbol); +#define PASTER(s) MP_QSTR_ ## s +#define MP_QSTR(s) PASTER(s) STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils) }, @@ -156,7 +124,17 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_memcpy), MP_ROM_PTR(&mod_trezorutils_memcpy_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_symbol), MP_ROM_PTR(&mod_trezorutils_symbol_obj) }, + // various built-in constants + { MP_ROM_QSTR(MP_QSTR_GITREV), MP_ROM_QSTR(MP_QSTR(GITREV)) }, + { MP_ROM_QSTR(MP_QSTR_VERSION_MAJOR), MP_OBJ_NEW_SMALL_INT(VERSION_MAJOR) }, + { MP_ROM_QSTR(MP_QSTR_VERSION_MINOR), MP_OBJ_NEW_SMALL_INT(VERSION_MINOR) }, + { MP_ROM_QSTR(MP_QSTR_VERSION_PATCH), MP_OBJ_NEW_SMALL_INT(VERSION_PATCH) }, + { MP_ROM_QSTR(MP_QSTR_MODEL), MP_ROM_QSTR(MP_QSTR(TREZOR_MODEL)) }, +#ifdef TREZOR_EMULATOR + { MP_ROM_QSTR(MP_QSTR_EMULATOR), mp_const_true }, +#else + { MP_ROM_QSTR(MP_QSTR_EMULATOR), mp_const_false }, +#endif }; STATIC MP_DEFINE_CONST_DICT(mp_module_trezorutils_globals, mp_module_trezorutils_globals_table); diff --git a/src/apps/homescreen/__init__.py b/src/apps/homescreen/__init__.py index b99612e28..7461ea383 100644 --- a/src/apps/homescreen/__init__.py +++ b/src/apps/homescreen/__init__.py @@ -11,11 +11,11 @@ def get_features(): f = Features() f.vendor = "trezor.io" f.language = "english" - f.major_version = utils.symbol("VERSION_MAJOR") - f.minor_version = utils.symbol("VERSION_MINOR") - f.patch_version = utils.symbol("VERSION_PATCH") - f.revision = utils.symbol("GITREV") - f.model = utils.symbol("MODEL") + f.major_version = utils.VERSION_MAJOR + f.minor_version = utils.VERSION_MINOR + f.patch_version = utils.VERSION_PATCH + f.revision = utils.GITREV + f.model = utils.MODEL f.device_id = storage.get_device_id() f.label = storage.get_label() f.initialized = storage.is_initialized() diff --git a/src/trezor/ui/__init__.py b/src/trezor/ui/__init__.py index 9b91064a0..3bab66d48 100644 --- a/src/trezor/ui/__init__.py +++ b/src/trezor/ui/__init__.py @@ -17,7 +17,7 @@ if __debug__: loop.after_step_hook = debug_display_refresh # in both debug and production, emulator needs to draw the screen explicitly -elif utils.symbol("EMULATOR"): +elif utils.EMULATOR: loop.after_step_hook = display.refresh # re-export constants from modtrezorui diff --git a/src/trezor/utils.py b/src/trezor/utils.py index d85b8c218..00cddfcde 100644 --- a/src/trezor/utils.py +++ b/src/trezor/utils.py @@ -1,6 +1,7 @@ import gc import sys -from trezorutils import halt, memcpy, set_mode_unprivileged, symbol # noqa: F401 +from trezorutils import halt, memcpy, set_mode_unprivileged # noqa: F401 +from trezorutils import GITREV, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, MODEL, EMULATOR # noqa: F401 def unimport_begin():