mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-26 09:28:13 +00:00
feat(rust): add print! macro for logging into terminal
This commit is contained in:
parent
8bfbe9da01
commit
9dc73427fb
@ -158,7 +158,7 @@ build_firmware: templates build_cross ## build firmware with frozen modules
|
||||
$(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" UI2="$(UI2)" $(FIRMWARE_BUILD_DIR)/firmware.bin
|
||||
|
||||
build_unix: templates ## build unix port
|
||||
$(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) TREZOR_MODEL="$(TREZOR_MODEL)" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" UI2="$(UI2)"
|
||||
$(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) TREZOR_MODEL="$(TREZOR_MODEL)" PYOPT="0" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" UI2="$(UI2)"
|
||||
|
||||
build_unix_frozen: templates build_cross ## build unix port with frozen modules
|
||||
$(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) TREZOR_MODEL="$(TREZOR_MODEL)" PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" UI2="$(UI2)" TREZOR_MEMPERF="$(TREZOR_MEMPERF)" TREZOR_EMULATOR_FROZEN=1
|
||||
|
@ -671,7 +671,7 @@ def cargo_build():
|
||||
if UI2:
|
||||
features.append('ui')
|
||||
if PYOPT == '0':
|
||||
features.append('ui_debug')
|
||||
features.append('debug')
|
||||
|
||||
return f'cd embed/rust; cargo build --profile {RUST_PROFILE} --target-dir=../../build/unix/rust --no-default-features --features "{" ".join(features)}"'
|
||||
|
||||
|
@ -18,6 +18,7 @@ ui_debug = []
|
||||
buttons = []
|
||||
touch = []
|
||||
clippy = []
|
||||
debug = ["ui_debug"]
|
||||
test = ["cc", "glob", "micropython", "protobuf", "ui", "ui_debug"]
|
||||
|
||||
[lib]
|
||||
|
@ -196,6 +196,9 @@ fn generate_micropython_bindings() {
|
||||
// time
|
||||
.allowlist_function("mp_hal_ticks_ms")
|
||||
.allowlist_function("mp_hal_delay_ms")
|
||||
// debug
|
||||
.allowlist_function("mp_print_strn")
|
||||
.allowlist_var("mp_plat_print")
|
||||
// typ
|
||||
.allowlist_var("mp_type_type")
|
||||
// module
|
||||
|
@ -204,3 +204,27 @@ macro_rules! obj_module {
|
||||
obj_module!($($key => $val),*)
|
||||
});
|
||||
}
|
||||
|
||||
/// Print arbitrary amounts of slices into a terminal.
|
||||
/// Does not include a newline at the end.
|
||||
/// Does not do anything when not in debugging mode.
|
||||
#[allow(unused_macros)] // Should be used only for debugging purposes
|
||||
macro_rules! print {
|
||||
($($string:expr),+) => {
|
||||
#[cfg(feature = "debug")]
|
||||
{
|
||||
$(crate::micropython::print::print($string);)+
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Print arbitrary amounts of slices into a terminal.
|
||||
/// Includes a newline at the end.
|
||||
/// Does not do anything when not in debugging mode.
|
||||
#[allow(unused_macros)] // Should be used only for debugging purposes
|
||||
macro_rules! println {
|
||||
($($string:expr),+) => {
|
||||
// Just delegating to print! and adding a newline
|
||||
print!($($string),+, "\n");
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ pub mod list;
|
||||
pub mod map;
|
||||
pub mod module;
|
||||
pub mod obj;
|
||||
pub mod print;
|
||||
pub mod qstr;
|
||||
pub mod runtime;
|
||||
pub mod time;
|
||||
|
16
core/embed/rust/src/micropython/print.rs
Normal file
16
core/embed/rust/src/micropython/print.rs
Normal file
@ -0,0 +1,16 @@
|
||||
use super::ffi;
|
||||
|
||||
/// Print a slice into emulator console.
|
||||
/// Is being '\0' terminated automatically.
|
||||
pub fn print(to_log: &str) {
|
||||
unsafe {
|
||||
ffi::mp_print_strn(
|
||||
&ffi::mp_plat_print,
|
||||
to_log.as_ptr() as _,
|
||||
to_log.len(),
|
||||
0,
|
||||
'\0' as _,
|
||||
0,
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user