From d5f5aeeb77ebcfcc0b01ea9522bb68045e42a5c4 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Mon, 4 Mar 2024 12:05:19 +0100 Subject: [PATCH] feat(core): init T3T1 UI layouts: meta --- core/SConscript.firmware | 11 ++++++++++- core/SConscript.unix | 12 ++++++++++-- core/embed/extmod/modtrezorutils/modtrezorutils.c | 2 ++ core/embed/rust/src/ui/constant.rs | 2 +- core/embed/rust/src/ui/display/loader/mod.rs | 2 +- core/site_scons/site_tools/micropython/__init__.py | 2 ++ core/src/all_modules.py | 12 ++++++++++++ core/src/trezor/ui/layouts/__init__.py | 2 ++ core/src/trezor/ui/layouts/fido.py | 2 ++ core/src/trezor/ui/layouts/homescreen.py | 2 ++ core/src/trezor/ui/layouts/recovery.py | 2 ++ core/src/trezor/ui/layouts/reset.py | 2 ++ 12 files changed, 48 insertions(+), 5 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index f70e7135c..efe29466c 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -442,12 +442,15 @@ SOURCE_FIRMWARE = [ ] -if TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): +if TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' elif TREZOR_MODEL in ('1', 'R'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' +elif TREZOR_MODEL in ('T3T1',): + UI_LAYOUT = 'UI_LAYOUT_MERCURY' + ui_layout_feature = 'model_mercury' else: raise ValueError('Unknown Trezor model') @@ -620,6 +623,12 @@ if FROZEN: SOURCE_PY_DIR + 'trezor/ui/layouts/tr/fido.py', ] if not EVERYTHING else [] )) + elif UI_LAYOUT == 'UI_LAYOUT_MERCURY': + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/*.py', + exclude=[ + SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/fido.py', + ] if not EVERYTHING else [] + )) else: raise ValueError('Unknown layout') diff --git a/core/SConscript.unix b/core/SConscript.unix index 6c0da95e7..0f4754065 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -501,13 +501,15 @@ else: env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPYOPT=%s -DBITCOIN_ONLY=%s %s' % (ARGUMENTS.get('CFLAGS', ''), PYOPT, BITCOIN_ONLY, STATIC)) -if TREZOR_MODEL in ('T', 'T3T1'): +if TREZOR_MODEL in ('T',): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' -# XXX TODO elif TREZOR_MODEL in ('1', 'R'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' +elif TREZOR_MODEL in ('T3T1',): + UI_LAYOUT = 'UI_LAYOUT_MERCURY' + ui_layout_feature = 'model_mercury' else: raise ValueError('Unknown Trezor model') @@ -727,6 +729,12 @@ if FROZEN: SOURCE_PY_DIR + 'trezor/ui/layouts/tr/fido.py', ] if not EVERYTHING else [] )) + elif UI_LAYOUT == 'UI_LAYOUT_MERCURY': + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/*.py', + exclude=[ + SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/fido.py', + ] if not EVERYTHING else [] + )) else: raise ValueError('Unknown layout') diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 2cde2041a..9c78a3e3b 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -466,6 +466,8 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TT)}, #elif UI_LAYOUT_TR {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TR)}, +#elif UI_LAYOUT_MERCURY + {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_MERCURY)}, #else #error Unknown layout #endif diff --git a/core/embed/rust/src/ui/constant.rs b/core/embed/rust/src/ui/constant.rs index 3237db67a..c47ea3506 100644 --- a/core/embed/rust/src/ui/constant.rs +++ b/core/embed/rust/src/ui/constant.rs @@ -9,5 +9,5 @@ pub use super::model_mercury::constant::*; #[cfg(all(feature = "model_tr", not(feature = "model_tt")))] pub use super::model_tr::constant::*; -#[cfg(feature = "model_tt")] +#[cfg(all(feature = "model_tt", not(feature = "model_mercury")))] pub use super::model_tt::constant::*; diff --git a/core/embed/rust/src/ui/display/loader/mod.rs b/core/embed/rust/src/ui/display/loader/mod.rs index 5d41532c0..691770a4a 100644 --- a/core/embed/rust/src/ui/display/loader/mod.rs +++ b/core/embed/rust/src/ui/display/loader/mod.rs @@ -7,7 +7,7 @@ mod starry; use crate::ui::display::{Color, Icon}; -#[cfg(feature = "model_tt")] +#[cfg(any(feature = "model_tt", feature = "model_mercury"))] use crate::ui::display::loader::circular::{ loader_circular as determinate, loader_circular_indeterminate as indeterminate, }; diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py index 94477ba2c..81345798a 100644 --- a/core/site_scons/site_tools/micropython/__init__.py +++ b/core/site_scons/site_tools/micropython/__init__.py @@ -47,6 +47,7 @@ def generate(env): optiga = env["optiga"] layout_tt = env["ui_layout"] == "UI_LAYOUT_TT" layout_tr = env["ui_layout"] == "UI_LAYOUT_TR" + layout_mercury = env["ui_layout"] == "UI_LAYOUT_MERCURY" interim = f"{target[:-4]}.i" # replace .mpy with .i sed_scripts = " ".join( [ @@ -56,6 +57,7 @@ def generate(env): rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"MERCURY\"/{layout_mercury}/g'", r"-e 's/if TYPE_CHECKING/if False/'", r"-e 's/import typing/# \0/'", r"-e '/from typing import (/,/^\s*)/ {s/^/# /; }'", diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 571e7cda5..81cd3ffb9 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -157,6 +157,18 @@ trezor.ui.layouts.fido import trezor.ui.layouts.fido trezor.ui.layouts.homescreen import trezor.ui.layouts.homescreen +trezor.ui.layouts.mercury +import trezor.ui.layouts.mercury +trezor.ui.layouts.mercury.fido +import trezor.ui.layouts.mercury.fido +trezor.ui.layouts.mercury.homescreen +import trezor.ui.layouts.mercury.homescreen +trezor.ui.layouts.mercury.progress +import trezor.ui.layouts.mercury.progress +trezor.ui.layouts.mercury.recovery +import trezor.ui.layouts.mercury.recovery +trezor.ui.layouts.mercury.reset +import trezor.ui.layouts.mercury.reset trezor.ui.layouts.progress import trezor.ui.layouts.progress trezor.ui.layouts.recovery diff --git a/core/src/trezor/ui/layouts/__init__.py b/core/src/trezor/ui/layouts/__init__.py index a29e2e2cf..b477332f4 100644 --- a/core/src/trezor/ui/layouts/__init__.py +++ b/core/src/trezor/ui/layouts/__init__.py @@ -8,5 +8,7 @@ if utils.UI_LAYOUT == "TR": from .tr import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TT": from .tt import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury import * # noqa: F401,F403 else: raise ValueError("Unknown layout") diff --git a/core/src/trezor/ui/layouts/fido.py b/core/src/trezor/ui/layouts/fido.py index 6b3cb944e..e7447b1a6 100644 --- a/core/src/trezor/ui/layouts/fido.py +++ b/core/src/trezor/ui/layouts/fido.py @@ -4,3 +4,5 @@ if utils.UI_LAYOUT == "TT": from .tt.fido import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.fido import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.fido import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/homescreen.py b/core/src/trezor/ui/layouts/homescreen.py index fe31124a2..ef13c57a4 100644 --- a/core/src/trezor/ui/layouts/homescreen.py +++ b/core/src/trezor/ui/layouts/homescreen.py @@ -4,3 +4,5 @@ if utils.UI_LAYOUT == "TT": from .tt.homescreen import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.homescreen import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.homescreen import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/recovery.py b/core/src/trezor/ui/layouts/recovery.py index f41f1ae8b..12a0b3354 100644 --- a/core/src/trezor/ui/layouts/recovery.py +++ b/core/src/trezor/ui/layouts/recovery.py @@ -4,3 +4,5 @@ if utils.UI_LAYOUT == "TT": from .tt.recovery import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.recovery import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.recovery import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/reset.py b/core/src/trezor/ui/layouts/reset.py index d0cf6b1c9..d18095350 100644 --- a/core/src/trezor/ui/layouts/reset.py +++ b/core/src/trezor/ui/layouts/reset.py @@ -4,3 +4,5 @@ if utils.UI_LAYOUT == "TT": from .tt.reset import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.reset import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.reset import * # noqa: F401,F403