mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-21 13:58:08 +00:00
feat(core): add settings to turn haptic on/off
[no changelog]
This commit is contained in:
parent
2e10d440fa
commit
b9a55cf2a7
@ -116,6 +116,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
|
||||
@ -138,6 +139,7 @@ message Features {
|
||||
optional bool bootloader_locked = 49; // bootloader is locked
|
||||
optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version
|
||||
optional uint32 unit_packaging = 51; // unit/device packaging version
|
||||
optional bool haptic_feedback = 52; // haptic feedback is enabled
|
||||
}
|
||||
|
||||
/**
|
||||
@ -185,6 +187,7 @@ message ApplySettings {
|
||||
optional SafetyCheckLevel safety_checks = 9; // Safety check level, set to Prompt to limit path namespace enforcement
|
||||
optional bool experimental_features = 10; // enable experimental message types
|
||||
optional bool hide_passphrase_from_host = 11; // do not show passphrase coming from host
|
||||
optional bool haptic_feedback = 13; // enable haptic feedback
|
||||
}
|
||||
|
||||
/**
|
||||
|
47
core/embed/extmod/modtrezorio/modtrezorio-haptic.h
Normal file
47
core/embed/extmod/modtrezorio/modtrezorio-haptic.h
Normal file
@ -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)},
|
||||
|
@ -416,6 +416,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
|
||||
@ -474,6 +476,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
|
||||
|
@ -30,4 +30,6 @@ void haptic_play(haptic_effect_t effect);
|
||||
// the creation of customized haptic effects.
|
||||
bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms);
|
||||
|
||||
void haptic_set_enabled(bool enable);
|
||||
|
||||
#endif
|
||||
|
@ -81,6 +81,8 @@
|
||||
#define MAX_AMPLITUDE 127
|
||||
#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,
|
||||
@ -184,6 +186,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);
|
||||
@ -213,3 +219,5 @@ bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms) {
|
||||
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; }
|
||||
|
@ -193,7 +193,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
|
||||
|
||||
|
8
core/mocks/generated/trezorio/haptic.pyi
Normal file
8
core/mocks/generated/trezorio/haptic.pyi
Normal file
@ -0,0 +1,8 @@
|
||||
from typing import *
|
||||
|
||||
|
||||
# extmod/modtrezorio/modtrezorio-haptic.h
|
||||
def haptic_set_enabled(enable: bool) -> None:
|
||||
"""
|
||||
Enable/Disable the haptic feedback.
|
||||
"""
|
@ -126,6 +126,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
|
||||
|
@ -135,6 +135,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)
|
||||
|
||||
|
@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
import storage.device as storage_device
|
||||
import trezorui2
|
||||
from trezor import TR
|
||||
from trezor import TR, utils
|
||||
from trezor.enums import ButtonRequestType
|
||||
from trezor.ui.layouts import confirm_action
|
||||
from trezor.wire import DataError
|
||||
@ -50,6 +50,7 @@ async def apply_settings(msg: ApplySettings) -> Success:
|
||||
msg_safety_checks = msg.safety_checks # local_cache_attribute
|
||||
experimental_features = msg.experimental_features # local_cache_attribute
|
||||
hide_passphrase_from_host = msg.hide_passphrase_from_host # local_cache_attribute
|
||||
haptic_feedback = msg.haptic_feedback
|
||||
|
||||
if (
|
||||
homescreen is None
|
||||
@ -61,6 +62,7 @@ async def apply_settings(msg: ApplySettings) -> Success:
|
||||
and msg_safety_checks is None
|
||||
and experimental_features is None
|
||||
and hide_passphrase_from_host is None
|
||||
and (haptic_feedback is None or not utils.USE_HAPTIC)
|
||||
):
|
||||
raise ProcessError("No setting provided")
|
||||
|
||||
@ -114,6 +116,13 @@ async def apply_settings(msg: ApplySettings) -> Success:
|
||||
await _require_confirm_hide_passphrase_from_host(hide_passphrase_from_host)
|
||||
storage_device.set_hide_passphrase_from_host(hide_passphrase_from_host)
|
||||
|
||||
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")
|
||||
@ -255,3 +264,15 @@ async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None:
|
||||
description=TR.passphrase__hide,
|
||||
br_code=BRT_PROTECT_CALL,
|
||||
)
|
||||
|
||||
|
||||
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,
|
||||
subtitle=TR.haptic_feedback__subtitle,
|
||||
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.BacklightLevels.NONE)
|
||||
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,12 +36,13 @@ INITIALIZED = const(0x13) # bool (0x01 or empty)
|
||||
_SAFETY_CHECK_LEVEL = const(0x14) # int
|
||||
_EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty)
|
||||
_HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty)
|
||||
# unused from python:
|
||||
# _BRIGHTNESS = const(0x18) # int
|
||||
|
||||
if utils.USE_THP:
|
||||
_DEVICE_SECRET = const(0x17) # bytes
|
||||
_CRED_AUTH_KEY_COUNTER = const(0x18) # bytes
|
||||
# unused from python:
|
||||
# _BRIGHTNESS = const(0x19) # int
|
||||
_DISABLE_HAPTIC_FEEDBACK = const(0x20) # bool (0x01 or empty)
|
||||
|
||||
|
||||
SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0)
|
||||
SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1)
|
||||
@ -377,3 +378,17 @@ if utils.USE_THP:
|
||||
counter = int.from_bytes(get_cred_auth_key_counter(), "big")
|
||||
utils.ensure(counter < 0xFFFFFFFF, "Overflow of cred_auth_key_counter")
|
||||
common.set(_NAMESPACE, _CRED_AUTH_KEY_COUNTER, (counter + 1).to_bytes(4, "big"))
|
||||
|
||||
|
||||
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)
|
||||
|
1
core/src/trezor/enums/Capability.py
generated
1
core/src/trezor/enums/Capability.py
generated
@ -11,6 +11,7 @@ ShamirGroups = 16
|
||||
PassphraseEntry = 17
|
||||
Translations = 19
|
||||
Brightness = 20
|
||||
Haptic = 21
|
||||
if not utils.BITCOIN_ONLY:
|
||||
Bitcoin_like = 2
|
||||
Binance = 3
|
||||
|
1
core/src/trezor/enums/__init__.py
generated
1
core/src/trezor/enums/__init__.py
generated
@ -461,6 +461,7 @@ if TYPE_CHECKING:
|
||||
Solana = 18
|
||||
Translations = 19
|
||||
Brightness = 20
|
||||
Haptic = 21
|
||||
|
||||
class SdProtectOperationType(IntEnum):
|
||||
DISABLE = 0
|
||||
|
4
core/src/trezor/messages.py
generated
4
core/src/trezor/messages.py
generated
@ -2163,6 +2163,7 @@ if TYPE_CHECKING:
|
||||
bootloader_locked: "bool | None"
|
||||
language_version_matches: "bool"
|
||||
unit_packaging: "int | None"
|
||||
haptic_feedback: "bool | None"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@ -2215,6 +2216,7 @@ if TYPE_CHECKING:
|
||||
bootloader_locked: "bool | None" = None,
|
||||
language_version_matches: "bool | None" = None,
|
||||
unit_packaging: "int | None" = None,
|
||||
haptic_feedback: "bool | None" = None,
|
||||
) -> None:
|
||||
pass
|
||||
|
||||
@ -2258,6 +2260,7 @@ if TYPE_CHECKING:
|
||||
safety_checks: "SafetyCheckLevel | None"
|
||||
experimental_features: "bool | None"
|
||||
hide_passphrase_from_host: "bool | None"
|
||||
haptic_feedback: "bool | None"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@ -2271,6 +2274,7 @@ if TYPE_CHECKING:
|
||||
safety_checks: "SafetyCheckLevel | None" = None,
|
||||
experimental_features: "bool | None" = None,
|
||||
hide_passphrase_from_host: "bool | None" = None,
|
||||
haptic_feedback: "bool | None" = None,
|
||||
) -> None:
|
||||
pass
|
||||
|
||||
|
@ -11,6 +11,7 @@ from trezorutils import ( # noqa: F401
|
||||
SCM_REVISION,
|
||||
UI_LAYOUT,
|
||||
USE_BACKLIGHT,
|
||||
USE_HAPTIC,
|
||||
USE_OPTIGA,
|
||||
USE_SD_CARD,
|
||||
USE_THP,
|
||||
|
@ -213,6 +213,14 @@ def brightness(client: "TrezorClient") -> str:
|
||||
return device.set_brightness(client)
|
||||
|
||||
|
||||
@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(
|
||||
|
@ -47,6 +47,7 @@ def apply_settings(
|
||||
safety_checks: Optional[messages.SafetyCheckLevel] = None,
|
||||
experimental_features: Optional[bool] = None,
|
||||
hide_passphrase_from_host: Optional[bool] = None,
|
||||
haptic_feedback: Optional[bool] = None,
|
||||
) -> "MessageType":
|
||||
if language is not None:
|
||||
warnings.warn(
|
||||
@ -63,6 +64,7 @@ def apply_settings(
|
||||
safety_checks=safety_checks,
|
||||
experimental_features=experimental_features,
|
||||
hide_passphrase_from_host=hide_passphrase_from_host,
|
||||
haptic_feedback=haptic_feedback,
|
||||
)
|
||||
|
||||
out = client.call(settings)
|
||||
|
7
python/src/trezorlib/messages.py
generated
7
python/src/trezorlib/messages.py
generated
@ -493,6 +493,7 @@ class Capability(IntEnum):
|
||||
Solana = 18
|
||||
Translations = 19
|
||||
Brightness = 20
|
||||
Haptic = 21
|
||||
|
||||
|
||||
class SdProtectOperationType(IntEnum):
|
||||
@ -3263,6 +3264,7 @@ class Features(protobuf.MessageType):
|
||||
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("unit_packaging", "uint32", repeated=False, required=False, default=None),
|
||||
52: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None),
|
||||
}
|
||||
|
||||
def __init__(
|
||||
@ -3317,6 +3319,7 @@ class Features(protobuf.MessageType):
|
||||
bootloader_locked: Optional["bool"] = None,
|
||||
language_version_matches: Optional["bool"] = True,
|
||||
unit_packaging: Optional["int"] = None,
|
||||
haptic_feedback: Optional["bool"] = None,
|
||||
) -> None:
|
||||
self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else []
|
||||
self.major_version = major_version
|
||||
@ -3367,6 +3370,7 @@ class Features(protobuf.MessageType):
|
||||
self.bootloader_locked = bootloader_locked
|
||||
self.language_version_matches = language_version_matches
|
||||
self.unit_packaging = unit_packaging
|
||||
self.haptic_feedback = haptic_feedback
|
||||
|
||||
|
||||
class LockDevice(protobuf.MessageType):
|
||||
@ -3405,6 +3409,7 @@ class ApplySettings(protobuf.MessageType):
|
||||
9: protobuf.Field("safety_checks", "SafetyCheckLevel", repeated=False, required=False, default=None),
|
||||
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),
|
||||
13: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None),
|
||||
}
|
||||
|
||||
def __init__(
|
||||
@ -3421,6 +3426,7 @@ class ApplySettings(protobuf.MessageType):
|
||||
safety_checks: Optional["SafetyCheckLevel"] = None,
|
||||
experimental_features: Optional["bool"] = None,
|
||||
hide_passphrase_from_host: Optional["bool"] = None,
|
||||
haptic_feedback: Optional["bool"] = None,
|
||||
) -> None:
|
||||
self.language = language
|
||||
self.label = label
|
||||
@ -3433,6 +3439,7 @@ class ApplySettings(protobuf.MessageType):
|
||||
self.safety_checks = safety_checks
|
||||
self.experimental_features = experimental_features
|
||||
self.hide_passphrase_from_host = hide_passphrase_from_host
|
||||
self.haptic_feedback = haptic_feedback
|
||||
|
||||
|
||||
class ChangeLanguage(protobuf.MessageType):
|
||||
|
@ -462,6 +462,8 @@ pub struct Features {
|
||||
pub language_version_matches: ::std::option::Option<bool>,
|
||||
// @@protoc_insertion_point(field:hw.trezor.messages.management.Features.unit_packaging)
|
||||
pub unit_packaging: ::std::option::Option<u32>,
|
||||
// @@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,
|
||||
@ -1569,8 +1571,27 @@ impl Features {
|
||||
self.unit_packaging = ::std::option::Option::Some(v);
|
||||
}
|
||||
|
||||
// optional bool haptic_feedback = 52;
|
||||
|
||||
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(49);
|
||||
let mut fields = ::std::vec::Vec::with_capacity(50);
|
||||
let mut oneofs = ::std::vec::Vec::with_capacity(0);
|
||||
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
|
||||
"vendor",
|
||||
@ -1817,6 +1838,11 @@ impl Features {
|
||||
|m: &Features| { &m.unit_packaging },
|
||||
|m: &mut Features| { &mut m.unit_packaging },
|
||||
));
|
||||
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,
|
||||
@ -1994,6 +2020,9 @@ impl ::protobuf::Message for Features {
|
||||
408 => {
|
||||
self.unit_packaging = ::std::option::Option::Some(is.read_uint32()?);
|
||||
},
|
||||
416 => {
|
||||
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())?;
|
||||
},
|
||||
@ -2153,6 +2182,9 @@ impl ::protobuf::Message for Features {
|
||||
if let Some(v) = self.unit_packaging {
|
||||
my_size += ::protobuf::rt::uint32_size(51, v);
|
||||
}
|
||||
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
|
||||
@ -2306,6 +2338,9 @@ impl ::protobuf::Message for Features {
|
||||
if let Some(v) = self.unit_packaging {
|
||||
os.write_uint32(51, v)?;
|
||||
}
|
||||
if let Some(v) = self.haptic_feedback {
|
||||
os.write_bool(52, v)?;
|
||||
}
|
||||
os.write_unknown_fields(self.special_fields.unknown_fields())?;
|
||||
::std::result::Result::Ok(())
|
||||
}
|
||||
@ -2372,6 +2407,7 @@ impl ::protobuf::Message for Features {
|
||||
self.bootloader_locked = ::std::option::Option::None;
|
||||
self.language_version_matches = ::std::option::Option::None;
|
||||
self.unit_packaging = ::std::option::Option::None;
|
||||
self.haptic_feedback = ::std::option::Option::None;
|
||||
self.special_fields.clear();
|
||||
}
|
||||
|
||||
@ -2426,6 +2462,7 @@ impl ::protobuf::Message for Features {
|
||||
bootloader_locked: ::std::option::Option::None,
|
||||
language_version_matches: ::std::option::Option::None,
|
||||
unit_packaging: ::std::option::Option::None,
|
||||
haptic_feedback: ::std::option::Option::None,
|
||||
special_fields: ::protobuf::SpecialFields::new(),
|
||||
};
|
||||
&instance
|
||||
@ -2494,6 +2531,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 {
|
||||
@ -2525,6 +2564,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
|
||||
}
|
||||
}
|
||||
@ -2551,6 +2591,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
|
||||
}
|
||||
}
|
||||
@ -2576,6 +2617,7 @@ pub mod features {
|
||||
Capability::Capability_Solana,
|
||||
Capability::Capability_Translations,
|
||||
Capability::Capability_Brightness,
|
||||
Capability::Capability_Haptic,
|
||||
];
|
||||
}
|
||||
|
||||
@ -2607,6 +2649,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)
|
||||
}
|
||||
@ -2999,6 +3042,8 @@ pub struct ApplySettings {
|
||||
pub experimental_features: ::std::option::Option<bool>,
|
||||
// @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.hide_passphrase_from_host)
|
||||
pub hide_passphrase_from_host: ::std::option::Option<bool>,
|
||||
// @@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,
|
||||
@ -3278,8 +3323,27 @@ impl ApplySettings {
|
||||
self.hide_passphrase_from_host = ::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(11);
|
||||
let mut fields = ::std::vec::Vec::with_capacity(12);
|
||||
let mut oneofs = ::std::vec::Vec::with_capacity(0);
|
||||
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
|
||||
"language",
|
||||
@ -3336,6 +3400,11 @@ impl ApplySettings {
|
||||
|m: &ApplySettings| { &m.hide_passphrase_from_host },
|
||||
|m: &mut ApplySettings| { &mut m.hide_passphrase_from_host },
|
||||
));
|
||||
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,
|
||||
@ -3387,6 +3456,9 @@ impl ::protobuf::Message for ApplySettings {
|
||||
88 => {
|
||||
self.hide_passphrase_from_host = ::std::option::Option::Some(is.read_bool()?);
|
||||
},
|
||||
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())?;
|
||||
},
|
||||
@ -3432,6 +3504,9 @@ impl ::protobuf::Message for ApplySettings {
|
||||
if let Some(v) = self.hide_passphrase_from_host {
|
||||
my_size += 1 + 1;
|
||||
}
|
||||
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
|
||||
@ -3471,6 +3546,9 @@ impl ::protobuf::Message for ApplySettings {
|
||||
if let Some(v) = self.hide_passphrase_from_host {
|
||||
os.write_bool(11, 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(())
|
||||
}
|
||||
@ -3499,6 +3577,7 @@ impl ::protobuf::Message for ApplySettings {
|
||||
self.safety_checks = ::std::option::Option::None;
|
||||
self.experimental_features = ::std::option::Option::None;
|
||||
self.hide_passphrase_from_host = ::std::option::Option::None;
|
||||
self.haptic_feedback = ::std::option::Option::None;
|
||||
self.special_fields.clear();
|
||||
}
|
||||
|
||||
@ -3515,6 +3594,7 @@ impl ::protobuf::Message for ApplySettings {
|
||||
safety_checks: ::std::option::Option::None,
|
||||
experimental_features: ::std::option::Option::None,
|
||||
hide_passphrase_from_host: ::std::option::Option::None,
|
||||
haptic_feedback: ::std::option::Option::None,
|
||||
special_fields: ::protobuf::SpecialFields::new(),
|
||||
};
|
||||
&instance
|
||||
@ -10759,7 +10839,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\"\x9b\x14\n\x08Featur\
|
||||
\x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xe1\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\
|
||||
@ -10804,118 +10884,121 @@ static file_descriptor_proto_data: &'static [u8] = b"\
|
||||
\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\x12%\n\x0eunit_pa\
|
||||
ckaging\x183\x20\x01(\rR\runitPackaging\"\xa5\x04\n\nCapability\x12\x1c\
|
||||
\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Ca\
|
||||
pability_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_Lisk\x10\
|
||||
\x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eC\
|
||||
apability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12\
|
||||
Capability_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\x17Capabi\
|
||||
lity_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capabilit\
|
||||
y_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\"\x9b\x04\n\rApplySettings\x12\x1e\n\
|
||||
\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05l\
|
||||
abel\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\nh\
|
||||
omescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Passphrase\
|
||||
SourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01(\rR\x0f\
|
||||
autoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\x0fdispla\
|
||||
yRotation\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\x14experimentalFeatures\
|
||||
\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassph\
|
||||
raseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\
|
||||
\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bsho\
|
||||
wDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\
|
||||
\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\nd\
|
||||
ataOffset\"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\toperation\x18\x01\
|
||||
\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProtectOperati\
|
||||
onTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\
|
||||
\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Pi\
|
||||
ng\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11butt\
|
||||
on_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cance\
|
||||
l\"\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\tchalleng\
|
||||
e\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\
|
||||
\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\t\
|
||||
challenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\x01\x20\
|
||||
\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\ts\
|
||||
ignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonic\
|
||||
s\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\x14passphr\
|
||||
aseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\
|
||||
\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_ch\
|
||||
ecksum\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\x08noBacku\
|
||||
p\"\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\x14pa\
|
||||
ssphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinPr\
|
||||
otection\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_co\
|
||||
unter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\
|
||||
\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08n\
|
||||
oBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.ma\
|
||||
nagement.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBackupDevice\
|
||||
\x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\x12O\n\
|
||||
\x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.BackupDe\
|
||||
vice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10member_thres\
|
||||
hold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_count\x18\
|
||||
\x02\x20\x02(\rR\x0bmemberCount\"\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\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\
|
||||
\rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\
|
||||
Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\
|
||||
lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\
|
||||
\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\
|
||||
evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\
|
||||
\x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\
|
||||
\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sat\
|
||||
oshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\
|
||||
ckaging\x183\x20\x01(\rR\runitPackaging\x12'\n\x0fhaptic_feedback\x184\
|
||||
\x20\x01(\x08R\x0ehapticFeedback\"\xc2\x04\n\nCapability\x12\x1c\n\x12Ca\
|
||||
pability_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_Lisk\x10\x08\x1a\
|
||||
\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eCapabilit\
|
||||
y_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12Capabili\
|
||||
ty_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\x12\x12\n\x0eCapa\
|
||||
bility_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_Tra\
|
||||
nslations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capability_Bright\
|
||||
ness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x11Capability_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\"\xc4\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\rusePas\
|
||||
sphrase\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\x18passphraseAlw\
|
||||
aysOnDevice\x12T\n\rsafety_checks\x18\t\x20\x01(\x0e2/.hw.trezor.message\
|
||||
s.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\x15experimental_fe\
|
||||
atures\x18\n\x20\x01(\x08R\x14experimentalFeatures\x129\n\x19hide_passph\
|
||||
rase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassphraseFromHost\x12'\n\
|
||||
\x0fhaptic_feedback\x18\r\x20\x01(\x08R\x0ehapticFeedback\"T\n\x0eChange\
|
||||
Language\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\
|
||||
\x0cshow_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\"Z\n\x16Translatio\
|
||||
nDataRequest\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\
|
||||
\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\ndataOffset\"3\n\x12Transl\
|
||||
ationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\
|
||||
\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\x02(\rR\x05flags\"#\n\tCha\
|
||||
ngePin\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"(\n\x0eChang\
|
||||
eWipeCode\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\
|
||||
\n\tSdProtect\x12]\n\toperation\x18\x01\x20\x02(\x0e2?.hw.trezor.message\
|
||||
s.management.SdProtect.SdProtectOperationTypeR\toperation\">\n\x16SdProt\
|
||||
ectOperationType\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\x07entr\
|
||||
opy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\n\t\
|
||||
challenge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\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\x11AuthenticityP\
|
||||
roof\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\tmnemonics\x18\x01\x20\x03(\tR\tmnemoni\
|
||||
cs\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_prot\
|
||||
ection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12\x1e\n\x08langua\
|
||||
ge\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(\x08R\
|
||||
\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounte\
|
||||
r\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tn\
|
||||
o_backup\x18\n\x20\x01(\x08R\x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\
|
||||
\n\x0edisplay_random\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08s\
|
||||
trength\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_pro\
|
||||
tection\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_prot\
|
||||
ection\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\"\xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\
|
||||
\x20\x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.h\
|
||||
w.trezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x1a[\n\
|
||||
\x0bSlip39Group\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmember\
|
||||
Threshold\x12!\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"\
|
||||
\x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\
|
||||
\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevice\x12\x1d\n\nword_\
|
||||
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\x05l\
|
||||
abel\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\
|
||||
\x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.management.Rec\
|
||||
overyDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_counter\x18\t\
|
||||
\x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\x08R\x06dry\
|
||||
Run\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_ScrambledWords\
|
||||
\x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\x01\n\x0bWor\
|
||||
dRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages.manage\
|
||||
ment.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\x12\
|
||||
\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_Matri\
|
||||
x9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07WordA\
|
||||
ck\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\x11GetNext\
|
||||
U2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\
|
||||
\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthorized\
|
||||
Request\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootloader\
|
||||
\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.manage\
|
||||
ment.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\
|
||||
\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14\
|
||||
language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\
|
||||
\n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UP\
|
||||
GRADE\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\x12ShowDeviceTuto\
|
||||
rial\"\x12\n\x10UnlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\
|
||||
\x18\x01\x20\x01(\rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\
|
||||
\x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\
|
||||
\x10\x02\x12\x1c\n\x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip\
|
||||
39_Basic_Extendable\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\
|
||||
\x05*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\
|
||||
";
|
||||
|
||||
/// `FileDescriptorProto` object which was a source for this generated file
|
||||
|
Loading…
Reference in New Issue
Block a user