1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-22 07:28:10 +00:00

feat(trezorctl): Add device set-busy command.

This commit is contained in:
Andrew Kozlik 2022-08-09 18:27:21 +02:00 committed by Andrew Kozlik
parent d089fd3187
commit a3ac5d752e
3 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1 @@
Add device set-busy command to trezorctl.

View File

@ -290,3 +290,30 @@ def reboot_to_bootloader(obj: "TrezorConnection") -> str:
# which triggers double prompt on device
with obj.client_context() as client:
return device.reboot_to_bootloader(client)
@cli.command()
@click.argument("enable", type=ChoiceType({"on": True, "off": False}), required=False)
@click.option(
"-e",
"--expiry",
type=int,
help="Dialog expiry in seconds.",
)
@with_client
def set_busy(
client: "TrezorClient", enable: Optional[bool], expiry: Optional[int]
) -> str:
"""Show a "Do not disconnect" dialog."""
if enable is False:
return device.set_busy(client, None)
if expiry is None:
raise click.ClickException("Missing option '-e' / '--expiry'.")
if expiry <= 0:
raise click.ClickException(
f"Invalid value for '-e' / '--expiry': '{expiry}' is not a positive integer."
)
return device.set_busy(client, expiry * 1000)

View File

@ -224,3 +224,16 @@ def cancel_authorization(client: "TrezorClient") -> "MessageType":
@expect(messages.Success, field="message", ret_type=str)
def reboot_to_bootloader(client: "TrezorClient") -> "MessageType":
return client.call(messages.RebootToBootloader())
@expect(messages.Success, field="message", ret_type=str)
@session
def set_busy(client: "TrezorClient", expiry_ms: Optional[int]) -> "MessageType":
"""Sets or clears the busy state of the device.
In the busy state the device shows a "Do not disconnect" message instead of the homescreen.
Setting `expiry_ms=None` clears the busy state.
"""
ret = client.call(messages.SetBusy(expiry_ms=expiry_ms))
client.refresh_features()
return ret