TychoVrahe 3 weeks ago committed by GitHub
commit 517385205b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -113,6 +113,7 @@ message Features {
Capability_Solana = 18;
Capability_Translations = 19 [(bitcoin_only) = true];
Capability_Brightness = 20 [(bitcoin_only) = true];
Capability_Haptic = 21 [(bitcoin_only) = true];
}
optional BackupType backup_type = 31; // type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced)
optional bool sd_card_present = 32; // is SD card present
@ -134,6 +135,7 @@ message Features {
optional uint32 homescreen_height = 48; // homescreen height in pixels
optional bool bootloader_locked = 49; // bootloader is locked
optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version
optional bool haptic_feedback = 51; // haptic feedback is enabled
}
/**
@ -182,6 +184,7 @@ message ApplySettings {
optional bool experimental_features = 10; // enable experimental message types
optional bool hide_passphrase_from_host = 11; // do not show passphrase coming from host
optional uint32 brightness = 12; // display brightness, 0 = select on device
optional bool haptic_feedback = 13; // enable haptic feedback
}
/**

@ -0,0 +1,47 @@
/*
* This file is part of the Trezor project, https://trezor.io/
*
* Copyright (c) SatoshiLabs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "haptic.h"
/// package: trezorio.haptic
/// def haptic_set_enabled(enable: bool) -> None:
/// """
/// Enable/Disable the haptic feedback.
/// """
STATIC mp_obj_t mod_trezorio_haptic_set_enabled(mp_obj_t enable) {
haptic_set_enabled(mp_obj_is_true(enable));
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_haptic_set_enabled_obj,
mod_trezorio_haptic_set_enabled);
STATIC const mp_rom_map_elem_t mod_trezorio_haptic_globals_table[] = {
{MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_haptic)},
{MP_ROM_QSTR(MP_QSTR_haptic_set_enabled),
MP_ROM_PTR(&mod_trezorio_haptic_set_enabled_obj)},
};
STATIC MP_DEFINE_CONST_DICT(mod_trezorio_haptic_globals,
mod_trezorio_haptic_globals_table);
STATIC const mp_obj_module_t mod_trezorio_haptic_module = {
.base = {&mp_type_module},
.globals = (mp_obj_dict_t *)&mod_trezorio_haptic_globals,
};

@ -55,9 +55,12 @@ bool usb_connected_previously = true;
#include "modtrezorio-fatfs.h"
#include "modtrezorio-sdcard.h"
#endif
#ifdef USE_HAPTIC
#include "modtrezorio-haptic.h"
#endif
/// package: trezorio.__init__
/// from . import fatfs, sdcard
/// from . import fatfs, haptic, sdcard
/// POLL_READ: int # wait until interface is readable and return read data
/// POLL_WRITE: int # wait until interface is writable
@ -89,6 +92,10 @@ STATIC const mp_rom_map_elem_t mp_module_trezorio_globals_table[] = {
{MP_ROM_QSTR(MP_QSTR_sdcard), MP_ROM_PTR(&mod_trezorio_sdcard_module)},
#endif
#ifdef USE_HAPTIC
{MP_ROM_QSTR(MP_QSTR_haptic), MP_ROM_PTR(&mod_trezorio_haptic_module)},
#endif
#ifdef USE_TOUCH
{MP_ROM_QSTR(MP_QSTR_TOUCH), MP_ROM_INT(TOUCH_IFACE)},
{MP_ROM_QSTR(MP_QSTR_TOUCH_START), MP_ROM_INT((TOUCH_START >> 24) & 0xFFU)},

@ -391,6 +391,8 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = {
/// """Whether the hardware supports SD card."""
/// USE_BACKLIGHT: bool
/// """Whether the hardware supports backlight brightness control."""
/// USE_HAPTIC: bool
/// """Whether the hardware supports haptic feedback."""
/// USE_OPTIGA: bool
/// """Whether the hardware supports Optiga secure element."""
/// MODEL: str
@ -441,6 +443,11 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
#else
{MP_ROM_QSTR(MP_QSTR_USE_BACKLIGHT), mp_const_false},
#endif
#ifdef USE_HAPTIC
{MP_ROM_QSTR(MP_QSTR_USE_HAPTIC), mp_const_true},
#else
{MP_ROM_QSTR(MP_QSTR_USE_HAPTIC), mp_const_false},
#endif
#ifdef USE_OPTIGA
{MP_ROM_QSTR(MP_QSTR_USE_OPTIGA), mp_const_true},
#else

@ -219,6 +219,10 @@ static void _librust_qstrs(void) {
MP_QSTR_flow_show_share_words;
MP_QSTR_flow_warning_hi_prio;
MP_QSTR_get_language;
MP_QSTR_haptic_feedback__disable;
MP_QSTR_haptic_feedback__enable;
MP_QSTR_haptic_feedback__subtitle;
MP_QSTR_haptic_feedback__title;
MP_QSTR_hold;
MP_QSTR_hold_danger;
MP_QSTR_homescreen__click_to_connect;

@ -1254,6 +1254,10 @@ pub enum TranslatedString {
instructions__continue_in_app = 859, // "Continue in the app"
words__cancel_and_exit = 860, // "Cancel and exit"
address__confirmed = 861, // "Receive address confirmed"
haptic_feedback__disable = 862, // "Turn off haptic feedback?"
haptic_feedback__enable = 863, // "Turn on haptic feedback?"
haptic_feedback__title = 864, // "Haptic feedback"
haptic_feedback__subtitle = 865, // "Setting"
}
impl TranslatedString {
@ -2503,6 +2507,10 @@ impl TranslatedString {
Self::instructions__continue_in_app => "Continue in the app",
Self::words__cancel_and_exit => "Cancel and exit",
Self::address__confirmed => "Receive address confirmed",
Self::haptic_feedback__disable => "Turn off haptic feedback?",
Self::haptic_feedback__enable => "Turn on haptic feedback?",
Self::haptic_feedback__title => "Haptic feedback",
Self::haptic_feedback__subtitle => "Setting",
}
}
@ -3753,6 +3761,10 @@ impl TranslatedString {
Qstr::MP_QSTR_instructions__continue_in_app => Some(Self::instructions__continue_in_app),
Qstr::MP_QSTR_words__cancel_and_exit => Some(Self::words__cancel_and_exit),
Qstr::MP_QSTR_address__confirmed => Some(Self::address__confirmed),
Qstr::MP_QSTR_haptic_feedback__disable => Some(Self::haptic_feedback__disable),
Qstr::MP_QSTR_haptic_feedback__enable => Some(Self::haptic_feedback__enable),
Qstr::MP_QSTR_haptic_feedback__title => Some(Self::haptic_feedback__title),
Qstr::MP_QSTR_haptic_feedback__subtitle => Some(Self::haptic_feedback__subtitle),
_ => None,
}
}

@ -23,4 +23,6 @@ bool haptic_test(uint16_t duration_ms);
// Play haptic effect
void haptic_play(haptic_effect_t effect);
void haptic_set_enabled(bool enable);
#endif

@ -80,6 +80,8 @@
#define PRODTEST_EFFECT_AMPLITUDE 127
bool haptic_enabled = true;
static bool set_reg(uint8_t addr, uint8_t value) {
uint8_t data[] = {addr, value};
return i2c_transmit(DRV2625_I2C_INSTANCE, DRV2625_I2C_ADDRESS, data,
@ -173,6 +175,10 @@ static void haptic_play_lib(drv2625_lib_effect_t effect) {
}
void haptic_play(haptic_effect_t effect) {
if (!haptic_enabled) {
return;
}
switch (effect) {
case HAPTIC_BUTTON_PRESS:
haptic_play_RTP(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION);
@ -191,3 +197,5 @@ void haptic_play(haptic_effect_t effect) {
bool haptic_test(uint16_t duration_ms) {
return haptic_play_RTP(PRODTEST_EFFECT_AMPLITUDE, duration_ms);
}
void haptic_set_enabled(bool enable) { haptic_enabled = enable; }

@ -190,7 +190,7 @@ class WebUSB:
"""
Sends message using USB WebUSB (device) or UDP (emulator).
"""
from . import fatfs, sdcard
from . import fatfs, haptic, sdcard
POLL_READ: int # wait until interface is readable and return read data
POLL_WRITE: int # wait until interface is writable
TOUCH: int # interface id of the touch events

@ -0,0 +1,8 @@
from typing import *
# extmod/modtrezorio/modtrezorio-haptic.h
def haptic_set_enabled(enable: bool) -> None:
"""
Enable/Disable the haptic feedback.
"""

@ -119,6 +119,8 @@ USE_SD_CARD: bool
"""Whether the hardware supports SD card."""
USE_BACKLIGHT: bool
"""Whether the hardware supports backlight brightness control."""
USE_HAPTIC: bool
"""Whether the hardware supports haptic feedback."""
USE_OPTIGA: bool
"""Whether the hardware supports Optiga secure element."""
MODEL: str

@ -338,6 +338,10 @@ class TR:
fido__wanna_erase_credentials: str = "Do you really want to erase all credentials?"
firmware_update__title: str = "UPDATE FIRMWARE"
firmware_update__title_fingerprint: str = "FW FINGERPRINT"
haptic_feedback__disable: str = "Turn off haptic feedback?"
haptic_feedback__enable: str = "Turn on haptic feedback?"
haptic_feedback__subtitle: str = "Setting"
haptic_feedback__title: str = "Haptic feedback"
homescreen__click_to_connect: str = "Click to Connect"
homescreen__click_to_unlock: str = "Click to Unlock"
homescreen__title_backup_failed: str = "BACKUP FAILED"

@ -134,6 +134,10 @@ def get_features() -> Features:
]
)
if utils.USE_HAPTIC:
f.haptic_feedback = storage_device.get_haptic_feedback()
f.capabilities.append(Capability.Haptic)
if utils.USE_BACKLIGHT:
f.capabilities.append(Capability.Brightness)

@ -52,6 +52,7 @@ async def apply_settings(msg: ApplySettings) -> Success:
experimental_features = msg.experimental_features # local_cache_attribute
hide_passphrase_from_host = msg.hide_passphrase_from_host # local_cache_attribute
brightness = msg.brightness
haptic_feedback = msg.haptic_feedback
if (
homescreen is None
@ -64,6 +65,7 @@ async def apply_settings(msg: ApplySettings) -> Success:
and experimental_features is None
and hide_passphrase_from_host is None
and (brightness is None or not utils.USE_BACKLIGHT)
and (haptic_feedback is None or not utils.USE_HAPTIC)
):
raise ProcessError("No setting provided")
@ -121,6 +123,13 @@ async def apply_settings(msg: ApplySettings) -> Success:
new_brightness = await _require_set_brightness()
storage_device.set_brightness(new_brightness)
if haptic_feedback is not None and utils.USE_HAPTIC:
from trezor import io
await _require_confirm_haptic_feedback(haptic_feedback)
io.haptic.haptic_set_enabled(haptic_feedback)
storage_device.set_haptic_feedback(haptic_feedback)
reload_settings_from_storage()
return Success(message="Settings applied")
@ -278,3 +287,14 @@ if utils.USE_BACKLIGHT:
count=style.get_backlight_normal(),
br_name="set_brightness",
)
if utils.USE_HAPTIC:
async def _require_confirm_haptic_feedback(enable: bool) -> None:
await confirm_action(
"haptic_feedback__settings",
TR.haptic_feedback__title,
TR.haptic_feedback__enable if enable else TR.haptic_feedback__disable,
br_code=BRT_PROTECT_CALL,
)

@ -10,7 +10,7 @@ welcome_screen_start_ms = utime.ticks_ms()
import storage
import storage.device
from trezor import config, log, loop, ui, utils, wire, translations
from trezor import config, io, log, loop, ui, utils, wire, translations
from trezor.pin import (
allow_all_loader_messages,
ignore_nonpin_loader_messages,
@ -51,6 +51,9 @@ async def bootscreen() -> None:
enforce_welcome_screen_duration()
ui.backlight_fade(ui.style.get_backlight_dim())
ui.display.orientation(storage.device.get_rotation())
if utils.USE_HAPTIC:
io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback())
await lockscreen
await verify_user_pin()
storage.init_unlocked()
@ -61,6 +64,9 @@ async def bootscreen() -> None:
storage.init_unlocked()
enforce_welcome_screen_duration()
rotation = storage.device.get_rotation()
if utils.USE_HAPTIC:
io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback())
if rotation != ui.display.orientation():
# there is a slight delay before next screen is shown,
# so we don't fade unless there is a change of orientation

@ -36,6 +36,7 @@ _SAFETY_CHECK_LEVEL = const(0x14) # int
_EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty)
_HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty)
_BRIGHTNESS = const(0x17) # int
_DISABLE_HAPTIC_FEEDBACK = const(0x18) # bool (0x01 or empty)
SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0)
SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1)
@ -359,3 +360,17 @@ def get_brightness() -> int | None:
Get the display brightness setting.
"""
return common.get_uint8(_NAMESPACE, _BRIGHTNESS, True)
def set_haptic_feedback(enable: bool) -> None:
"""
Enable or disable haptic feedback.
"""
common.set_bool(_NAMESPACE, _DISABLE_HAPTIC_FEEDBACK, not enable, True)
def get_haptic_feedback() -> bool:
"""
Get haptic feedback enable, default to true if not set.
"""
return not common.get_bool(_NAMESPACE, _DISABLE_HAPTIC_FEEDBACK, True)

@ -11,6 +11,7 @@ ShamirGroups = 16
PassphraseEntry = 17
Translations = 19
Brightness = 20
Haptic = 21
if not utils.BITCOIN_ONLY:
Bitcoin_like = 2
Binance = 3

@ -448,6 +448,7 @@ if TYPE_CHECKING:
Solana = 18
Translations = 19
Brightness = 20
Haptic = 21
class SdProtectOperationType(IntEnum):
DISABLE = 0

@ -2137,6 +2137,7 @@ if TYPE_CHECKING:
homescreen_height: "int | None"
bootloader_locked: "bool | None"
language_version_matches: "bool"
haptic_feedback: "bool | None"
def __init__(
self,
@ -2188,6 +2189,7 @@ if TYPE_CHECKING:
homescreen_height: "int | None" = None,
bootloader_locked: "bool | None" = None,
language_version_matches: "bool | None" = None,
haptic_feedback: "bool | None" = None,
) -> None:
pass
@ -2232,6 +2234,7 @@ if TYPE_CHECKING:
experimental_features: "bool | None"
hide_passphrase_from_host: "bool | None"
brightness: "int | None"
haptic_feedback: "bool | None"
def __init__(
self,
@ -2246,6 +2249,7 @@ if TYPE_CHECKING:
experimental_features: "bool | None" = None,
hide_passphrase_from_host: "bool | None" = None,
brightness: "int | None" = None,
haptic_feedback: "bool | None" = None,
) -> None:
pass

@ -9,6 +9,7 @@ from trezorutils import ( # noqa: F401
SCM_REVISION,
UI_LAYOUT,
USE_BACKLIGHT,
USE_HAPTIC,
USE_OPTIGA,
USE_SD_CARD,
VERSION,

@ -340,6 +340,10 @@
"fido__wanna_erase_credentials": "Do you really want to erase all credentials?",
"firmware_update__title": "UPDATE FIRMWARE",
"firmware_update__title_fingerprint": "FW FINGERPRINT",
"haptic_feedback__title": "Haptic feedback",
"haptic_feedback__subtitle": "Setting",
"haptic_feedback__enable": "Turn on haptic feedback?",
"haptic_feedback__disable": "Turn off haptic feedback?",
"homescreen__click_to_connect": "Click to Connect",
"homescreen__click_to_unlock": "Click to Unlock",
"homescreen__title_backup_failed": "BACKUP FAILED",

@ -860,5 +860,9 @@
"858": "address_details__derivation_path",
"859": "instructions__continue_in_app",
"860": "words__cancel_and_exit",
"861": "address__confirmed"
"861": "address__confirmed",
"862": "haptic_feedback__disable",
"863": "haptic_feedback__enable",
"864": "haptic_feedback__title",
"865": "haptic_feedback__subtitle"
}

@ -1,8 +1,8 @@
{
"current": {
"merkle_root": "87891f7bef0164d655882be5c86631c413e7d9dce3492725080930c69c82a122",
"datetime": "2024-05-01T21:20:31.907021",
"commit": "4b3e1a08258dbf09fa153db1bf2b8a419b1d84e6"
"merkle_root": "ae04527a2d780136398e2b4aa3fb1eac107323914d24c0486525b75566fd71ed",
"datetime": "2024-05-08T12:36:46.065924",
"commit": "23cd3410b0299e382b42144f0a724171ec916f1d"
},
"history": [
{

@ -213,6 +213,14 @@ def brightness(client: "TrezorClient") -> str:
return device.apply_settings(client, brightness=0)
@cli.command()
@click.argument("enable", type=ChoiceType({"on": True, "off": False}))
@with_client
def haptic_feedback(client: "TrezorClient", enable: bool) -> str:
"""Enable or disable haptic feedback."""
return device.apply_settings(client, haptic_feedback=enable)
@cli.command()
@click.argument("path_or_url", required=False)
@click.option(

@ -48,6 +48,7 @@ def apply_settings(
experimental_features: Optional[bool] = None,
hide_passphrase_from_host: Optional[bool] = None,
brightness: Optional[int] = None,
haptic_feedback: Optional[bool] = None,
) -> "MessageType":
if language is not None:
warnings.warn(
@ -65,6 +66,7 @@ def apply_settings(
experimental_features=experimental_features,
hide_passphrase_from_host=hide_passphrase_from_host,
brightness=brightness,
haptic_feedback=haptic_feedback,
)
out = client.call(settings)

@ -479,6 +479,7 @@ class Capability(IntEnum):
Solana = 18
Translations = 19
Brightness = 20
Haptic = 21
class SdProtectOperationType(IntEnum):
@ -3219,6 +3220,7 @@ class Features(protobuf.MessageType):
48: protobuf.Field("homescreen_height", "uint32", repeated=False, required=False, default=None),
49: protobuf.Field("bootloader_locked", "bool", repeated=False, required=False, default=None),
50: protobuf.Field("language_version_matches", "bool", repeated=False, required=False, default=True),
51: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None),
}
def __init__(
@ -3272,6 +3274,7 @@ class Features(protobuf.MessageType):
homescreen_height: Optional["int"] = None,
bootloader_locked: Optional["bool"] = None,
language_version_matches: Optional["bool"] = True,
haptic_feedback: Optional["bool"] = None,
) -> None:
self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else []
self.major_version = major_version
@ -3321,6 +3324,7 @@ class Features(protobuf.MessageType):
self.homescreen_height = homescreen_height
self.bootloader_locked = bootloader_locked
self.language_version_matches = language_version_matches
self.haptic_feedback = haptic_feedback
class LockDevice(protobuf.MessageType):
@ -3360,6 +3364,7 @@ class ApplySettings(protobuf.MessageType):
10: protobuf.Field("experimental_features", "bool", repeated=False, required=False, default=None),
11: protobuf.Field("hide_passphrase_from_host", "bool", repeated=False, required=False, default=None),
12: protobuf.Field("brightness", "uint32", repeated=False, required=False, default=None),
13: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None),
}
def __init__(
@ -3377,6 +3382,7 @@ class ApplySettings(protobuf.MessageType):
experimental_features: Optional["bool"] = None,
hide_passphrase_from_host: Optional["bool"] = None,
brightness: Optional["int"] = None,
haptic_feedback: Optional["bool"] = None,
) -> None:
self.language = language
self.label = label
@ -3390,6 +3396,7 @@ class ApplySettings(protobuf.MessageType):
self.experimental_features = experimental_features
self.hide_passphrase_from_host = hide_passphrase_from_host
self.brightness = brightness
self.haptic_feedback = haptic_feedback
class ChangeLanguage(protobuf.MessageType):

@ -460,6 +460,8 @@ pub struct Features {
pub bootloader_locked: ::std::option::Option<bool>,
// @@protoc_insertion_point(field:hw.trezor.messages.management.Features.language_version_matches)
pub language_version_matches: ::std::option::Option<bool>,
// @@protoc_insertion_point(field:hw.trezor.messages.management.Features.haptic_feedback)
pub haptic_feedback: ::std::option::Option<bool>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.management.Features.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@ -1548,8 +1550,27 @@ impl Features {
self.language_version_matches = ::std::option::Option::Some(v);
}
// optional bool haptic_feedback = 51;
pub fn haptic_feedback(&self) -> bool {
self.haptic_feedback.unwrap_or(false)
}
pub fn clear_haptic_feedback(&mut self) {
self.haptic_feedback = ::std::option::Option::None;
}
pub fn has_haptic_feedback(&self) -> bool {
self.haptic_feedback.is_some()
}
// Param is passed by value, moved
pub fn set_haptic_feedback(&mut self, v: bool) {
self.haptic_feedback = ::std::option::Option::Some(v);
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(48);
let mut fields = ::std::vec::Vec::with_capacity(49);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"vendor",
@ -1791,6 +1812,11 @@ impl Features {
|m: &Features| { &m.language_version_matches },
|m: &mut Features| { &mut m.language_version_matches },
));
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"haptic_feedback",
|m: &Features| { &m.haptic_feedback },
|m: &mut Features| { &mut m.haptic_feedback },
));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Features>(
"Features",
fields,
@ -1965,6 +1991,9 @@ impl ::protobuf::Message for Features {
400 => {
self.language_version_matches = ::std::option::Option::Some(is.read_bool()?);
},
408 => {
self.haptic_feedback = ::std::option::Option::Some(is.read_bool()?);
},
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@ -2121,6 +2150,9 @@ impl ::protobuf::Message for Features {
if let Some(v) = self.language_version_matches {
my_size += 2 + 1;
}
if let Some(v) = self.haptic_feedback {
my_size += 2 + 1;
}
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
@ -2271,6 +2303,9 @@ impl ::protobuf::Message for Features {
if let Some(v) = self.language_version_matches {
os.write_bool(50, v)?;
}
if let Some(v) = self.haptic_feedback {
os.write_bool(51, v)?;
}
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@ -2336,6 +2371,7 @@ impl ::protobuf::Message for Features {
self.homescreen_height = ::std::option::Option::None;
self.bootloader_locked = ::std::option::Option::None;
self.language_version_matches = ::std::option::Option::None;
self.haptic_feedback = ::std::option::Option::None;
self.special_fields.clear();
}
@ -2389,6 +2425,7 @@ impl ::protobuf::Message for Features {
homescreen_height: ::std::option::Option::None,
bootloader_locked: ::std::option::Option::None,
language_version_matches: ::std::option::Option::None,
haptic_feedback: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@ -2457,6 +2494,8 @@ pub mod features {
Capability_Translations = 19,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Brightness)
Capability_Brightness = 20,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Haptic)
Capability_Haptic = 21,
}
impl ::protobuf::Enum for Capability {
@ -2488,6 +2527,7 @@ pub mod features {
18 => ::std::option::Option::Some(Capability::Capability_Solana),
19 => ::std::option::Option::Some(Capability::Capability_Translations),
20 => ::std::option::Option::Some(Capability::Capability_Brightness),
21 => ::std::option::Option::Some(Capability::Capability_Haptic),
_ => ::std::option::Option::None
}
}
@ -2514,6 +2554,7 @@ pub mod features {
"Capability_Solana" => ::std::option::Option::Some(Capability::Capability_Solana),
"Capability_Translations" => ::std::option::Option::Some(Capability::Capability_Translations),
"Capability_Brightness" => ::std::option::Option::Some(Capability::Capability_Brightness),
"Capability_Haptic" => ::std::option::Option::Some(Capability::Capability_Haptic),
_ => ::std::option::Option::None
}
}
@ -2539,6 +2580,7 @@ pub mod features {
Capability::Capability_Solana,
Capability::Capability_Translations,
Capability::Capability_Brightness,
Capability::Capability_Haptic,
];
}
@ -2570,6 +2612,7 @@ pub mod features {
Capability::Capability_Solana => 17,
Capability::Capability_Translations => 18,
Capability::Capability_Brightness => 19,
Capability::Capability_Haptic => 20,
};
Self::enum_descriptor().value_by_index(index)
}
@ -2964,6 +3007,8 @@ pub struct ApplySettings {
pub hide_passphrase_from_host: ::std::option::Option<bool>,
// @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.brightness)
pub brightness: ::std::option::Option<u32>,
// @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.haptic_feedback)
pub haptic_feedback: ::std::option::Option<bool>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.management.ApplySettings.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@ -3262,8 +3307,27 @@ impl ApplySettings {
self.brightness = ::std::option::Option::Some(v);
}
// optional bool haptic_feedback = 13;
pub fn haptic_feedback(&self) -> bool {
self.haptic_feedback.unwrap_or(false)
}
pub fn clear_haptic_feedback(&mut self) {
self.haptic_feedback = ::std::option::Option::None;
}
pub fn has_haptic_feedback(&self) -> bool {
self.haptic_feedback.is_some()
}
// Param is passed by value, moved
pub fn set_haptic_feedback(&mut self, v: bool) {
self.haptic_feedback = ::std::option::Option::Some(v);
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(12);
let mut fields = ::std::vec::Vec::with_capacity(13);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"language",
@ -3325,6 +3389,11 @@ impl ApplySettings {
|m: &ApplySettings| { &m.brightness },
|m: &mut ApplySettings| { &mut m.brightness },
));
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"haptic_feedback",
|m: &ApplySettings| { &m.haptic_feedback },
|m: &mut ApplySettings| { &mut m.haptic_feedback },
));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ApplySettings>(
"ApplySettings",
fields,
@ -3379,6 +3448,9 @@ impl ::protobuf::Message for ApplySettings {
96 => {
self.brightness = ::std::option::Option::Some(is.read_uint32()?);
},
104 => {
self.haptic_feedback = ::std::option::Option::Some(is.read_bool()?);
},
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@ -3427,6 +3499,9 @@ impl ::protobuf::Message for ApplySettings {
if let Some(v) = self.brightness {
my_size += ::protobuf::rt::uint32_size(12, v);
}
if let Some(v) = self.haptic_feedback {
my_size += 1 + 1;
}
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
@ -3469,6 +3544,9 @@ impl ::protobuf::Message for ApplySettings {
if let Some(v) = self.brightness {
os.write_uint32(12, v)?;
}
if let Some(v) = self.haptic_feedback {
os.write_bool(13, v)?;
}
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@ -3498,6 +3576,7 @@ impl ::protobuf::Message for ApplySettings {
self.experimental_features = ::std::option::Option::None;
self.hide_passphrase_from_host = ::std::option::Option::None;
self.brightness = ::std::option::Option::None;
self.haptic_feedback = ::std::option::Option::None;
self.special_fields.clear();
}
@ -3515,6 +3594,7 @@ impl ::protobuf::Message for ApplySettings {
experimental_features: ::std::option::Option::None,
hide_passphrase_from_host: ::std::option::Option::None,
brightness: ::std::option::Option::None,
haptic_feedback: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@ -10354,7 +10434,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\
\x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\
\x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\
\x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xf4\x13\n\x08Featur\
\x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xba\x14\n\x08Featur\
es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\
on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\
\x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\
@ -10398,112 +10478,115 @@ static file_descriptor_proto_data: &'static [u8] = b"\
n_width\x18/\x20\x01(\rR\x0fhomescreenWidth\x12+\n\x11homescreen_height\
\x180\x20\x01(\rR\x10homescreenHeight\x12+\n\x11bootloader_locked\x181\
\x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\
\x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\"\xa5\x04\n\nCapa\
bility\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\
\x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Bi\
nance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capab\
ility_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\
\x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapabilit\
y_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\
\x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\
\x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\
\x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Capability_Shami\
r\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\
\x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\
\x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\
\n\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\
\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\
\xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\
\x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xbb\x04\n\rApplyS\
ettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\
\x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passp\
hrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\
\x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\
\rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\
\x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\
\x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\
\x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\
\x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\
\x0csafetyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14\
experimentalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01\
(\x08R\x16hidePassphraseFromHost\x12\x1e\n\nbrightness\x18\x0c\x20\x01(\
\rR\nbrightness\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\
\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\
\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\
\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\
\x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\
\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\
\x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\
\x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\
\x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperatio\
n\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProte\
ctOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07\
DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\
\n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\
\x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\
\x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04\
size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entro\
py\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tc\
hallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\
\x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02\
(\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\
\x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\
\x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\t\
mnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\
\x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\
\x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08la\
nguageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\
\n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f\
_counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\
\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\
\x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\
\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\
\x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\
\x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\
\x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\
geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\
\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\
up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\
\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\
essages.management.BackupType:\x05Bip39R\nbackupType\"\x0e\n\x0cBackupDe\
vice\"\x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\
\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevice\x12\x1d\n\nw\
ord_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protection\
\x18\x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\
\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x04\x20\
\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x05\x20\x01(\tR\
\x05label\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWor\
dlist\x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.managemen\
t.RecoveryDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_counter\
\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\x08R\
\x06dryRun\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_Scramble\
dWords\x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\x01\n\
\x0bWordRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages\
.management.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\
\x12\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_M\
atrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07W\
ordAck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\
\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11Get\
NextU2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\
\x20\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthor\
izedRequest\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootlo\
ader\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.ma\
nagement.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\
\x12'\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\
\n\x14language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLeng\
th\"5\n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTA\
LL_UPGRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonc\
e\x12\x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\
\";\n\nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\
\x12\x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathReque\
st\x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTu\
torial\"\x12\n\x10UnlockBootloader*>\n\nBackupType\x12\t\n\x05Bip39\x10\
\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\
\x02*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\
Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\
ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\
oiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageMan\
agement\x80\xa6\x1d\x01\
\x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12'\n\x0fhaptic_\
feedback\x183\x20\x01(\x08R\x0ehapticFeedback\"\xc2\x04\n\nCapability\
\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\
\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\
\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability\
_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\
\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Li\
sk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\
\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\
\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\
\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\
\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\
\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\
\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\
\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\
\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x11C\
apability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\
\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\
\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xe4\x04\n\rApplySettings\x12\
\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\
\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\
\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\
\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Pa\
ssphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01\
(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\
\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\x18\x08\x20\
\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\t\x20\
\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\x0csafetyChe\
cks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14experimentalF\
eatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hid\
ePassphraseFromHost\x12\x1e\n\nbrightness\x18\x0c\x20\x01(\rR\nbrightnes\
s\x12'\n\x0fhaptic_feedback\x18\r\x20\x01(\x08R\x0ehapticFeedback\"T\n\
\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLen\
gth\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\"Z\n\x16\
TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndat\
aLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\ndataOffset\"3\n\
\x12TranslationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\x02(\x0cR\tdata\
Chunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\x02(\rR\x05flags\
\"#\n\tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"(\
\n\x0eChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\
\"\xaa\x01\n\tSdProtect\x12]\n\toperation\x18\x01\x20\x02(\x0e2?.hw.trez\
or.messages.management.SdProtect.SdProtectOperationTypeR\toperation\">\n\
\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\
\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Ping\x12\x1a\n\x07message\
\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11button_protection\x18\x02\
\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cancel\"\x20\n\nGetEntropy\
\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\x07Entropy\x12\x18\n\
\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\
\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\n\x0cFirmwareHash\
\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDev\
ice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\tchallenge\"U\n\x11Authen\
ticityProof\x12\"\n\x0ccertificates\x18\x01\x20\x03(\x0cR\x0ccertificate\
s\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDev\
ice\"\xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmn\
emonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase\
_protection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12\x1e\n\x08l\
anguage\x18\x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\
\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08\
R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCount\
er\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\t\
no_backup\x18\n\x20\x01(\x08R\x08noBackup\"\x99\x03\n\x0bResetDevice\x12\
%\n\x0edisplay_random\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08\
strength\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_pr\
otection\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_pro\
tection\x18\x04\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\
\x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\
\x01(\tR\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCount\
er\x12\x1f\n\x0bskip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\
\tno_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\
\x20\x01(\x0e2).hw.trezor.messages.management.BackupType:\x05Bip39R\nbac\
kupType\"\x0e\n\x0cBackupDevice\"\x10\n\x0eEntropyRequest\"&\n\nEntropyA\
ck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0e\
RecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\
\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtectio\
n\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\
\n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\
\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\
\x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01(\
\x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\
\x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\
\n\x07dry_run\x18\n\x20\x01(\x08R\x06dryRun\"Z\n\x12RecoveryDeviceType\
\x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDev\
iceType_Matrix\x10\x01\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\
\x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTyp\
eR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\
\x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordReq\
uestType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\
\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\
\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\
FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\
\n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\
uthorization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\
\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader\
.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\
\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\
\x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\
\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\
\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\
\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\
\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\
\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\
\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\
nlockBootloader*>\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip\
39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02*G\n\x10SafetyCheck\
Level\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\
\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toi\
f\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sa\
toshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\
\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file

Loading…
Cancel
Save