Improve client using ragger defined firmware instead of strings
This commit is contained in:
committed by
Alexandre Paillier
parent
3fdd0bce6b
commit
fee187d90e
@@ -10,6 +10,7 @@ import struct
|
||||
from client import keychain
|
||||
from client.client import EthAppClient, EIP712FieldType
|
||||
|
||||
from ragger.firmware import Firmware
|
||||
|
||||
# global variables
|
||||
app_client: EthAppClient = None
|
||||
@@ -391,7 +392,7 @@ def next_timeout(_signum: int, _frame):
|
||||
|
||||
|
||||
def enable_autonext():
|
||||
if app_client._client.firmware.device in ("stax", "flex"):
|
||||
if app_client._client.firmware in (Firmware.STAX, Firmware.FLEX):
|
||||
delay = 1/3
|
||||
else:
|
||||
delay = 1/4
|
||||
|
||||
@@ -11,31 +11,29 @@ class SettingID(Enum):
|
||||
DEBUG_DATA = auto()
|
||||
|
||||
|
||||
def get_device_settings(device: str) -> list[SettingID]:
|
||||
if device == "nanos":
|
||||
def get_device_settings(firmware: Firmware) -> list[SettingID]:
|
||||
if firmware == Firmware.NANOS:
|
||||
return [
|
||||
SettingID.NONCE,
|
||||
SettingID.DEBUG_DATA,
|
||||
]
|
||||
if device in ("nanox", "nanosp", "stax", "flex"):
|
||||
return [
|
||||
SettingID.VERBOSE_ENS,
|
||||
SettingID.VERBOSE_EIP712,
|
||||
SettingID.NONCE,
|
||||
SettingID.DEBUG_DATA,
|
||||
]
|
||||
return []
|
||||
return [
|
||||
SettingID.VERBOSE_ENS,
|
||||
SettingID.VERBOSE_EIP712,
|
||||
SettingID.NONCE,
|
||||
SettingID.DEBUG_DATA,
|
||||
]
|
||||
|
||||
|
||||
def get_setting_per_page(device: str) -> int:
|
||||
if device == "stax":
|
||||
def get_setting_per_page(firmware: Firmware) -> int:
|
||||
if firmware == Firmware.STAX:
|
||||
return 3
|
||||
return 2
|
||||
|
||||
|
||||
def get_setting_position(device: str, setting: Union[NavInsID, SettingID]) -> tuple[int, int]:
|
||||
settings_per_page = get_setting_per_page(device)
|
||||
if device == "stax":
|
||||
def get_setting_position(firmware: Firmware, setting: Union[NavInsID, SettingID]) -> tuple[int, int]:
|
||||
settings_per_page = get_setting_per_page(firmware)
|
||||
if firmware == Firmware.STAX:
|
||||
screen_height = 672 # px
|
||||
header_height = 88 # px
|
||||
footer_height = 92 # px
|
||||
@@ -47,15 +45,15 @@ def get_setting_position(device: str, setting: Union[NavInsID, SettingID]) -> tu
|
||||
option_offset = 420 # px
|
||||
usable_height = screen_height - (header_height + footer_height)
|
||||
setting_height = usable_height // settings_per_page
|
||||
index_in_page = get_device_settings(device).index(SettingID(setting)) % settings_per_page
|
||||
index_in_page = get_device_settings(firmware).index(SettingID(setting)) % settings_per_page
|
||||
return option_offset, header_height + (setting_height * index_in_page) + (setting_height // 2)
|
||||
|
||||
|
||||
def settings_toggle(fw: Firmware, nav: Navigator, to_toggle: list[SettingID]):
|
||||
def settings_toggle(firmware: Firmware, nav: Navigator, to_toggle: list[SettingID]):
|
||||
moves: list[Union[NavIns, NavInsID]] = list()
|
||||
settings = get_device_settings(fw.device)
|
||||
settings = get_device_settings(firmware)
|
||||
# Assume the app is on the home page
|
||||
if fw.device.startswith("nano"):
|
||||
if firmware.is_nano:
|
||||
moves += [NavInsID.RIGHT_CLICK] * 2
|
||||
moves += [NavInsID.BOTH_CLICK]
|
||||
for setting in settings:
|
||||
@@ -65,12 +63,12 @@ def settings_toggle(fw: Firmware, nav: Navigator, to_toggle: list[SettingID]):
|
||||
moves += [NavInsID.BOTH_CLICK] # Back
|
||||
else:
|
||||
moves += [NavInsID.USE_CASE_HOME_SETTINGS]
|
||||
settings_per_page = get_setting_per_page(fw.device)
|
||||
settings_per_page = get_setting_per_page(firmware)
|
||||
for setting in settings:
|
||||
setting_idx = settings.index(setting)
|
||||
if (setting_idx > 0) and (setting_idx % settings_per_page) == 0:
|
||||
moves += [NavInsID.USE_CASE_SETTINGS_NEXT]
|
||||
if setting in to_toggle:
|
||||
moves += [NavIns(NavInsID.TOUCH, get_setting_position(fw.device, setting))]
|
||||
moves += [NavIns(NavInsID.TOUCH, get_setting_position(firmware, setting))]
|
||||
moves += [NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT]
|
||||
nav.navigate(moves, screen_change_before_first_instruction=False)
|
||||
|
||||
Reference in New Issue
Block a user