1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-30 03:18:20 +00:00
Commit Graph

660 Commits

Author SHA1 Message Date
tychovrahe
29a5b0a770 feat(core/rust): implement interpolate color and color table functions in rust 2022-08-12 13:30:24 +02:00
tychovrahe
7f2a995c54 refactor(core/rust): separate lerp and animations 2022-08-12 13:30:24 +02:00
tychovrahe
ce142ffe08 feat(core/rust): make ButtonPos hit function public to enable reuse 2022-08-12 13:30:24 +02:00
Ondrej Mikle
4d3d9f5d7e docs(core): documentation on embedded C+Rust debug 2022-07-26 11:24:27 +02:00
grdddj
38f7d32d94 feat(rust): add more details into panic handler 2022-07-20 12:46:01 +02:00
grdddj
9dc73427fb feat(rust): add print! macro for logging into terminal 2022-07-20 12:46:01 +02:00
matejcik
c7b6e8986e fix(core/rust): fix overflow in tests by properly using 0-terminated strings
[no changelog]
2022-06-29 09:24:54 +02:00
matejcik
fce188fb96 fix(core/ui): fix char boundary bug in Rust layout 2022-06-28 18:01:02 +02:00
Martin Milata
c9ca7cd544 feat(core/rust/ui): bitcoin layouts
[no changelog]
2022-06-28 18:01:02 +02:00
Martin Milata
dd9a7d30e5 refactor(core/rust/ui): expose page count to python
[no changelog]
2022-06-28 18:01:02 +02:00
Martin Milata
ee1497b87e refactor(core/rust/ui): hold-to-confirm for paged content
[no changelog]
2022-06-28 18:01:02 +02:00
Martin Milata
9f0ebf6d1a refactor(core/rust/ui): arbitrary controls for Dialog component
[no changelog]
2022-06-28 18:01:02 +02:00
tychovrahe
c33f92bd72 feat(core): add RGB LED driver for Model R 2022-06-22 09:28:31 +02:00
matejcik
2aa427a6e3 feat(core/rust): make Rust buildable without Micropython
Features `micropython` and `protobuf` are defined. Protobuf implies micropython
because our protobuf impl is pretty much _for_ micropython.

The respective subdirs are included only if the matching feature is defined.

util.rs is moved to micropython because it mostly concerns micropython interop

ResultExt, useful only for ui_debug, is moved to ui::util.

A new module `trezorhal::time` is provided. It mirrors functionality of
`micropython::time` via stmlib functions.  The intended use is to always use
functions from `trezorhal::time`. The right micropython variants are used when
micropython is available, otherwise the pure stmlib versions are called.

ui::*::layout is conditional for micropython feature, because it only concerns
micropython layouts. If we want to reuse layouts defined there, we will need to
export them to not depend on Objs and Qstrs etc.
2022-06-16 13:08:07 +02:00
matejcik
37d5597965 feat(core/rust): direct write to display memory for better performance on TT hardware 2022-06-14 15:09:03 +02:00
tychovrahe
61482d0795 feat(core/rust): expose raw pixel access to rust 2022-06-14 15:09:03 +02:00
Jan Pochyla
c3b82fd651 feat(core/rust): add trezorhal bindings 2022-06-08 14:42:04 +02:00
dependabot[bot]
cc795407d0 build(deps): bump regex from 1.5.4 to 1.5.6 in /core/embed/rust/fuzz
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.4 to 1.5.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.4...1.5.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-07 12:20:02 +02:00
dependabot[bot]
3c31d24f50 build(deps): bump regex from 1.5.4 to 1.5.6 in /core/embed/rust
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.4 to 1.5.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.4...1.5.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-07 11:18:41 +02:00
matejcik
c77066065e chore(core/rust): bump cty to 0.2.2
this fixes signedness of char on Mac M1
2022-06-01 16:35:33 +02:00
matejcik
38a36a131f chore: rename BIP39_WORDS to BIP39_WORD_COUNT 2022-06-01 16:35:33 +02:00
matejcik
6319a5a9d0 feat(core/rust): BIP-39 wordlist operations in Rust 2022-06-01 16:35:33 +02:00
matejcik
187ca8ad50 feat(core/rust): List::from_iter
[no changelog]
2022-05-17 15:56:26 +02:00
matejcik
b3b3e0efa4 tests(core/rust): ability to set up MicroPython env for testing
warning: super hacky!
[no changelog]
2022-05-17 15:56:26 +02:00
Ondřej Vejpustek
db0da196a8 chore(vendor): update secp256k1-zkp to latest 2022-05-16 16:23:18 +02:00
Martin Milata
c257a8a687 fix(core/ui/rust): painting of overlapping Maybe<T> components
[no changelog]
2022-05-16 13:54:43 +02:00
Martin Milata
b5dfda6a1d fix(core/rust/ui): support longer PIN
[no changelog]
2022-05-16 13:54:43 +02:00
Martin Milata
31e63f688e fix(core/rust/ui): implement warning for PIN dialog
[no changelog]
2022-05-16 13:54:43 +02:00
Martin Milata
3dcdffe203 refactor(core/rust/ui): emit event when component tree is initialized
[no changelog]
2022-05-16 13:54:43 +02:00
Martin Milata
7b5c618576 refactor(core/rust/ui): erase button clears PIN after 2s
[no changelog]
2022-05-16 13:54:43 +02:00
Martin Milata
e58736f746 feat(core/rust/ui): show PIN digits when touched
[no changelog]
2022-05-16 13:54:43 +02:00
grdddj
feb96c84b0 chore(core/rust): use clippy for all features 2022-05-16 10:49:04 +02:00
grdddj
7804893179 feat(core/rust): create model_tr feature
Make event.rs shared among all features, under src/ui/event.rs.

[no changelog]
2022-05-06 11:44:52 +02:00
Martin Milata
18c8304339 fix(core): leftover TREZOR_MODEL defines
[no changelog]
2022-04-28 16:47:22 +02:00
matejcik
a9b46f0249 fix(core/rust): be more defensive about strings coming in from uPy 2022-04-11 16:49:58 +02:00
matejcik
8dd7a22f8b refactor(core/rust): disallow creating byte buffers from &str 2022-04-11 16:49:58 +02:00
matejcik
32c3320f07 refactor(core/rust): pass around &str instead of [u8] in most places 2022-04-11 16:49:58 +02:00
matejcik
785dc7f4d7 feat(core/rust): introduce StrBuffer
it is a variant of Buffer specifically for accepting python `str`
2022-04-11 16:49:58 +02:00
Martin Milata
1f612580f7 feat(core): enable UI tests for redesigned UI
[no changelog]
2022-04-07 17:58:41 +02:00
Martin Milata
38f4ab0983 feat(core/rust/ui): return Layout results as singleton objects
[no changelog]
2022-04-04 13:32:07 +02:00
Jan Pochyla
36829cfa8f feat(core/rust): Add obj_module! macro
[no changelog]

Co-authored-by: Martin Milata <martin@martinmilata.cz>
2022-04-04 13:32:07 +02:00
Martin Milata
4eefaffac9 fix(core/rust/ui): recovery/passphrase keyboard fixes
[no changelog]
2022-03-23 13:40:45 +01:00
Martin Milata
efe25a6ab4 fix(core/rust/ui): pin keyboard tweaks
[no changelog]
2022-03-23 13:40:45 +01:00
Martin Milata
d51072b8c1 refactor(core/rust/ui): unhardcode screen size
[no changelog]
2022-03-23 13:40:45 +01:00
Jan Pochyla
801679bccf chore(core/rust): Add dynamic place system 2022-03-22 16:08:50 +01:00
Jan Pochyla
4c027a688c chore(core/rust): Simplify LayoutObj 2022-02-18 11:27:23 +01:00
Jan Pochyla
2b6f1a4d5c chore(core/rust): Use MultiTapKeyboard in passphrase 2022-02-17 15:17:11 +01:00
Jan Pochyla
3c337723b2 chore(core/rust): Add mnemonic keyboards 2022-02-17 15:17:11 +01:00
Martin Milata
80655747d0 test(core/rust/ui): pagination unit test
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
ab0eef5de0 fix(core/rust/ui): adjust spacing for confirm_action
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
5378492ea9 chore(core/rust): wireframe rendering for ui debugging
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
10650af1fa refactor(core/rust/ui): paragraphs breaking
Also fix corner case.

[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
b5da6dc911 refactor(core/rust): geometry/display API improvements
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
b64c69c3ff feat(core/rust/ui): implement confirm_action
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
6d1227d839 feat(core/rust/ui): SwipePage: add buttons, auto-disable scrolling
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
695d80bf54 refactor(core/rust/ui): uPy buffer support for TT buttons
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
f167a2bef2 feat(core/rust/ui): add model T title bar
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
c7b33e2bc0 feat(core/rust/ui): add new icons
[no changelog]
2022-02-10 14:57:42 +01:00
Martin Milata
b46901bc8b feat(core): add TT Hoves fonts, introduce medium variant
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>

[no changelog]
2022-02-10 14:57:42 +01:00
Jan Pochyla
d979efc3ca chore(core/rust): Try to simplify pagination a bit
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
8fb28e4af5 feat(core/rust): impl Paginate for Paragraphs
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
f29ccf6009 fix(core/rust): UI tweaks
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
48f29ee0b9 refactor(core/rust): return bounding box after laying out text
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
bea696dfc9 feat(core/rust): Paginated for T1
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
19b2358084 refactor(core/rust): T1 title bar
[no changelog]
2022-02-08 15:40:37 +01:00
Martin Milata
7f224ab36d refactor(core/rust): model-agnostic Paginated
[no changelog]
2022-02-08 15:40:37 +01:00
Jan Pochyla
a3c79bf4f7 feat(core/rust): Add Paginated component 2022-02-01 10:51:02 +01:00
Jan Pochyla
a7a305d34d fix(core/rust): Fix request_complete_repaint for components without any Child descendants 2022-02-01 10:51:02 +01:00
Jan Pochyla
129363f080 feat(core/rust): Add Trace to Paragraph[s], improve size calculation 2022-02-01 10:51:02 +01:00
Jan Pochyla
d2c8c66385 feat(core/rust): First shot at Paragraphs API 2022-02-01 10:51:02 +01:00
Jan Pochyla
8c47b94b79 feat(core/rust): Add experimental LinearLayout 2022-02-01 10:51:02 +01:00
Jan Pochyla
3dd3d7f87b feat(core): Add HoldToConfirm example, improve Loader and animation frame support 2022-02-01 10:51:02 +01:00
Jan Pochyla
117a0bd518 feat(core): Add preliminary anim frame support 2022-02-01 10:51:02 +01:00
Jan Pochyla
be3e99b96d feat(core): Add WiP Loader & generic Animation type 2022-02-01 10:51:02 +01:00
matejcik
87a7e94f5c feat(core/rust): add saturating multiplication by f32 to Duration 2022-02-01 10:51:02 +01:00
Jan Pochyla
baffe8fdf3 chore(core/rust): Add int variant to tracing 2022-01-28 09:58:49 +01:00
Jan Pochyla
5b0686f09a chore(core/rust): Forbid unsafe in components
To be expanded to other modules.
2022-01-28 09:58:49 +01:00
Jan Pochyla
12deedf3f6 chore(core/rust): Add backlight fading fn 2022-01-28 09:58:49 +01:00
Jan Pochyla
a54ca9cb05 chore(core/rust): Add micropython::time::sleep 2022-01-28 09:58:49 +01:00
Jan Pochyla
334a143b76 chore(core/rust): Split FormattedText into separate mod 2022-01-28 09:58:49 +01:00
Jan Pochyla
d5a74a8614 chore(core/rust): Rename Text to FormattedText 2022-01-28 09:58:49 +01:00
Jan Pochyla
39263144b7 chore(core): Various little improvements in Rust UI 2022-01-28 09:58:49 +01:00
Jan Pochyla
998210d569 feat(core): Add Instant and Duration types 2022-01-28 09:58:49 +01:00
Martin Milata
1734957685 build(core): update rust edition to 2021
[no changelog]
2021-12-07 17:12:43 +01:00
Martin Milata
7cc9f13605 refactor(core/rust): allow model_t1 and model_tt at once
[no changelog]
2021-11-24 15:36:34 +01:00
Martin Milata
afd7cb3b01 feat(core/rust): add example layout for T1
[no changelog]
2021-11-24 15:36:34 +01:00
Martin Milata
4d60c10330 feat(core/rust): add support for T1 UI
[no changelog]
2021-11-24 15:36:34 +01:00
Martin Milata
3c49ef2f62 feat(core/rust): exposing vararg functions to uPy
[no changelog]
2021-11-24 15:36:34 +01:00
Ondřej Vejpustek
a924bd4dc6 build(core): do not link gen_context.o to trezor_lib 2021-10-25 14:41:28 +02:00
Jan Pochyla
901580817d chore(core/rust): fixes and formatting
[no changelog]
2021-10-07 15:01:55 +02:00
Jan Pochyla
5eefcffc7c chore(core): prepare for fuzzing targets
First, we change the Protobuf definition includes to use an exact path relative to our crate's directory, instead of the OUT_DIR. This fixes build when a combination of stable and nightly toolchains is used (nightly is needed for the fuzzing targets).

Another change is a slight fix in the panic handler conditional compilation. Fuzzing is using the crate with `features = ["test"]`, but doesn't turn on the `test` cfg.

[no changelog]
2021-10-07 15:01:55 +02:00
Jan Pochyla
2703d714c2 feat(core): add Rust UI components, layouts, text rendering
[no changelog]
2021-10-07 15:01:55 +02:00
Martin Milata
81e66cb024 style(core/rust): enable clippy lints
[no changelog]
2021-09-23 14:22:40 +02:00
Jan Pochyla
2c8dec93a6 feat(core): Split unix main, link core obj into Rust test target 2021-09-21 12:43:31 +02:00
matejcik
7a17124b43 refactor(core/rust): do not rely too much on new_exception helpers 2021-09-21 12:43:31 +02:00
matejcik
5e452dc57c refactor(core/rust): propagate unsafety of raise_exception 2021-09-21 12:43:31 +02:00
matejcik
806beb77d2 feat(core/rust): improve catch_exception, make use of Rust 1.55 2021-09-21 12:43:31 +02:00
matejcik
795ed2d339 fix(core/rust): fix "unnecessary unsafe" warning
[no changelog]
2021-09-21 12:43:31 +02:00
matejcik
31de21718f feat(core/rust): introduce Obj.is_null()
[no changelog]
2021-09-21 12:43:31 +02:00
matejcik
b666895303 feat(core/rust): catch, handle and propagate uPy exceptions 2021-09-21 12:43:31 +02:00
matejcik
8abcb6f8cc chore(core/rust): allow unused macros
[no changelog]
2021-09-21 12:43:31 +02:00
Jan Pochyla
7c65f0357a feat(core/rust): Implement exception catching in Rust
chore(core): Add test for Rust exc catching

chore(core): Document exception catching in Rust

[no changelog]
2021-09-21 12:43:31 +02:00
Martin Milata
a007e062ab style(core): apply rustfmt
[no changelog]
2021-09-16 14:57:06 +02:00
Martin Milata
582e1318c4 feat(core/emulator): support protobuf messages in memory dumps
[no changelog]
2021-07-22 13:31:11 +02:00
Pavol Rusnak
8cfa5da1ce
docs: fix typos in comments
[skip_ci]
2021-06-30 15:41:55 +02:00
matejcik
c06a93cba5 feat(core/rust): propagate bitcoin_only flag to Rust build 2021-06-08 09:55:19 +02:00
Jan Pochyla
8a21e3fc73 feat(core): Add Rust Protobuf codec 2021-06-08 09:55:19 +02:00
Martin Milata
20fe8552ca build(core/rust): use correct architecture for T1
TT is Cortex-M4 is Armv7E-M while T1 is Cortex-M3 is Armv7-M:
https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/armv6-m-vs-armv7-m---unpacking-the-microcontrollers
2021-05-21 13:49:42 +02:00
matejcik
e015bc0856 build(core/rust): disable nightly-only features
When we need them, we will re-enable.
2021-05-21 13:42:10 +02:00
Jan Pochyla
6257584951 feat(core): Add Rust bindings to MicroPython and trezorhal
core: Remove dangling module decls

core: Use new Cargo feature resolver, use external MacOS debug info

core: Rust docs improvements

core: Upgrade bindgen

core: Add test target to Rust

ci: build rust sources

build(core): .ARM.exidx.text.__aeabi_ui2f in t1 firmware size

It's an unwind table for softfloat function inserted by rustc, probably
can be removed to save 8 bytes:
599c58db70/link.x.in (L175-L182)

scons: Remove dead code

core: Move Rust target to build/rust

core: Replace extern with a FFI version

core: Add some explanatory Rust comments

core: Use correct path for the Rust lib

core: Remove Buffer::as_mut()

Mutable buffer access needs MP_BUFFER_WRITE flag. TBD in the Protobuf PR.

core: Improve docs for micropython::Buffer

core: Minor Rust docs changes

core: Rewrite trezor_obj_get_ll_checked

core: Fix incorrect doc comment

core: Remove cc from deps

fixup! core: Rewrite trezor_obj_get_ll_checked

core: update safety comments
2021-05-05 16:00:21 +02:00