diff --git a/.buildinfo b/.buildinfo
index ebbd7c8e..e9715327 100644
--- a/.buildinfo
+++ b/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 9a847e787c87d25fecb74762ddeb0bde
+config: 0fe551ef3ac1c186009c56b337ac4aad
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/_images/classes_generated_ragger_architecture.svg b/_images/classes_generated_ragger_architecture.svg
index 5825bd78..6f3e729d 100644
--- a/_images/classes_generated_ragger_architecture.svg
+++ b/_images/classes_generated_ragger_architecture.svg
@@ -4,1384 +4,1416 @@
-
-
+
+
classes_generated_ragger_architecture
-
+
ragger.backend.interface.BackendInterface
-
-BackendInterface
-
-apdu_logger : NoneType, RootLogger
-firmware
-last_async_response
-logger : NoneType, RootLogger
-raise_policy : RAISE_ALL_BUT_0x9000
-whitelisted_status : Iterable
-
-both_click
-(): None
-compare_screen_with_snapshot
-(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
-compare_screen_with_text
-(text: str): bool
-exchange(cla: int, ins: int, p1: int, p2: int, data: bytes, tick_timeout: int): RAPDU
-exchange_async(cla: int, ins: int, p1: int, p2: int, data: bytes): Generator[None, None, None]
-exchange_async_raw
-(data: bytes): Generator[None, None, None]
-exchange_raw
-(data: bytes, tick_timeout: int): RAPDU
-finger_touch
-(x: int, y: int, delay: float): None
-get_current_screen_content
-(): Any
-handle_usb_reset
-(): None
-is_raise_required(rapdu: RAPDU): bool
-left_click
-(): None
-pause_ticker
-(): None
-receive
-(): RAPDU
-resume_ticker
-(): None
-right_click
-(): None
-send(cla: int, ins: int, p1: int, p2: int, data: bytes): None
-send_raw
-(data: bytes): None
-send_tick
-(): None
-wait_for_home_screen
-(timeout: float): None
-wait_for_screen_change
-(timeout: float): None
-wait_for_text_not_on_screen
-(text: str, timeout: float): None
-wait_for_text_on_screen
-(text: str, timeout: float): None
+
+BackendInterface
+
+apdu_logger : NoneType, RootLogger
+firmware
+last_async_response
+logger : NoneType, RootLogger
+raise_policy : RAISE_ALL_BUT_0x9000
+whitelisted_status : Iterable
+
+both_click
+(): None
+compare_screen_with_snapshot
+(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
+compare_screen_with_text
+(text: str): bool
+exchange(cla: int, ins: int, p1: int, p2: int, data: bytes, tick_timeout: int): RAPDU
+exchange_async(cla: int, ins: int, p1: int, p2: int, data: bytes): Generator[None, None, None]
+exchange_async_raw
+(data: bytes): Generator[None, None, None]
+exchange_raw
+(data: bytes, tick_timeout: int): RAPDU
+finger_touch
+(x: int, y: int, delay: float): None
+get_current_screen_content
+(): Any
+handle_usb_reset
+(): None
+is_raise_required(rapdu: RAPDU): bool
+left_click
+(): None
+pause_ticker
+(): None
+receive
+(): RAPDU
+resume_ticker
+(): None
+right_click
+(): None
+send(cla: int, ins: int, p1: int, p2: int, data: bytes): None
+send_raw
+(data: bytes): None
+send_tick
+(): None
+wait_for_home_screen
+(timeout: float): None
+wait_for_screen_change
+(timeout: float): None
+wait_for_text_not_on_screen
+(text: str, timeout: float): None
+wait_for_text_on_screen
+(text: str, timeout: float): None
+
+
+
+ragger.firmware.touch.element.Element
+
+Element
+
+client
+firmware
+positions
+
+
+
+
+
+ragger.backend.interface.BackendInterface->ragger.firmware.touch.element.Element
+
+
+_client
-
+
ragger.navigator.navigator.Navigator
-
-Navigator
-
-GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_FIRST : int
-GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_LAST : int
-GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_MIDDLE : int
-
-add_callback(ins_id: BaseNavInsID, callback: Callable, override: bool): None
-navigate(instructions: List[InstructionType], timeout: float, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
-navigate_and_compare(path: Optional[Path], test_case_name: Optional[Path], instructions: List[Union[InstructionType]], timeout: float, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool, snap_start_idx: int): None
-navigate_until_snap(navigate_instruction: InstructionType, validation_instruction: InstructionType, path: Path, test_case_name: Path, start_img_name: str, last_img_name: str, take_snaps: bool, timeout: int, crop_first: Optional[Crop], crop_last: Optional[Crop]): int
-navigate_until_text(navigate_instruction: InstructionType, validation_instructions: List[InstructionType], text: str, timeout: int, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
-navigate_until_text_and_compare(navigate_instruction: InstructionType, validation_instructions: List[InstructionType], text: str, path: Optional[Path], test_case_name: Optional[Path], timeout: int, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
+
+Navigator
+
+GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_FIRST : int
+GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_LAST : int
+GOLDEN_INSTRUCTION_SLEEP_MULTIPLIER_MIDDLE : int
+
+add_callback(ins_id: BaseNavInsID, callback: Callable, override: bool): None
+navigate(instructions: List[InstructionType], timeout: float, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
+navigate_and_compare(path: Optional[Path], test_case_name: Optional[Path], instructions: List[Union[InstructionType]], timeout: float, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool, snap_start_idx: int): None
+navigate_until_snap(navigate_instruction: InstructionType, validation_instruction: InstructionType, path: Path, test_case_name: Path, start_img_name: str, last_img_name: str, take_snaps: bool, timeout: int, crop_first: Optional[Crop], crop_last: Optional[Crop]): int
+navigate_until_text(navigate_instruction: InstructionType, validation_instructions: List[InstructionType], text: str, timeout: int, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
+navigate_until_text_and_compare(navigate_instruction: InstructionType, validation_instructions: List[InstructionType], text: str, path: Optional[Path], test_case_name: Optional[Path], timeout: int, screen_change_before_first_instruction: bool, screen_change_after_last_instruction: bool): None
-
+
ragger.backend.interface.BackendInterface->ragger.navigator.navigator.Navigator
-
-
-_backend
-
-
-
-ragger.firmware.stax.layouts._Layout
-
-_Layout
-
-client
-firmware
-positions
-
-
-
-
-
-ragger.backend.interface.BackendInterface->ragger.firmware.stax.layouts._Layout
-
-
-_client
-
-
-
-ragger.firmware.stax.use_cases._UseCase
-
-_UseCase
-
-client
-firmware
-positions
-
-
-
-
-
-ragger.backend.interface.BackendInterface->ragger.firmware.stax.use_cases._UseCase
-
-
-_client
+
+
+_backend
ragger.navigator.instruction.BaseNavInsID
-
-BaseNavInsID
-
-name
-
-
+
+BaseNavInsID
+
+name
+
+
-
+
ragger.navigator.instruction.NavIns
-
-NavIns
-
-args : tuple
-id
-kwargs : Dict[str, Any]
-
-
+
+NavIns
+
+args : tuple
+id
+kwargs : Dict[str, Any]
+
+
-
+
ragger.navigator.instruction.BaseNavInsID->ragger.navigator.instruction.NavIns
-
-
-id
+
+
+id
ragger.bip.path.BtcDerivationPathFormat
-
-BtcDerivationPathFormat
-
-name
-
-
-
-
+
+BtcDerivationPathFormat
+
+name
+
+
+
+
-ragger.firmware.stax.layouts.CenteredFooter
-
-CenteredFooter
-
-
-tap()
-
-
-
-ragger.firmware.stax.screen.FullScreen
-
-FullScreen
-
-address_confirmation
-cancel_footer
-centered_footer
-choice
-choice_list
-exit_footer
-exit_header
-full_keyboard_letters
-full_keyboard_special_characters_1
-full_keyboard_special_characters_2
-home
-info_footer
-info_header
-layout_cancel_footer
-layout_centered_footer
-layout_choice_list
-layout_exit_footer
-layout_exit_header
-layout_full_keyboard_letters
-layout_full_keyboard_special_characters_1
-layout_full_keyboard_special_characters_2
-layout_info_footer
-layout_info_header
-layout_left_header
-layout_letter_only_keyboard
-layout_navigation_header
-layout_right_header
-layout_settings_footer
-layout_suggestions
-layout_tappable_center
-left_header
-letter_only_keyboard
-navigation_header
-review
-right_header
-settings
-settings_footer
-status
-sub_settings
-suggestions
-tappable_center
-use_case_address_confirmation
-use_case_choice
-use_case_home
-use_case_review
-use_case_settings
-use_case_status
-use_case_sub_settings
-use_case_view_details
-view_details
-
-
-
-
-
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-centered_footer
-
-
-
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-cancel_footer
-
-
-
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-exit_footer
-
-
-
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-info_footer
-
-
+ragger.firmware.touch.layouts.CancelFooter
+
+CancelFooter
+
+
+
+
+
+
+ragger.firmware.touch.screen.FullScreen
+
+FullScreen
+
+address_confirmation
+cancel_footer
+centered_footer
+choice
+choice_list
+exit_footer
+exit_header
+full_keyboard_letters
+full_keyboard_special_characters_1
+full_keyboard_special_characters_2
+home
+info_footer
+info_header
+layout_cancel_footer
+layout_centered_footer
+layout_choice_list
+layout_exit_footer
+layout_exit_header
+layout_full_keyboard_letters
+layout_full_keyboard_special_characters_1
+layout_full_keyboard_special_characters_2
+layout_info_footer
+layout_info_header
+layout_left_header
+layout_letter_only_keyboard
+layout_navigation_header
+layout_right_header
+layout_settings_footer
+layout_suggestions
+layout_tappable_center
+left_header
+letter_only_keyboard
+navigation_header
+review
+right_header
+settings
+settings_footer
+status
+sub_settings
+suggestions
+tappable_center
+use_case_address_confirmation
+use_case_choice
+use_case_home
+use_case_review
+use_case_settings
+use_case_status
+use_case_sub_settings
+use_case_view_details
+view_details
+
+
+
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-settings_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+cancel_footer
-
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_centered_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+exit_footer
-
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_cancel_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+info_footer
-
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_exit_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+settings_footer
-
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_info_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_cancel_footer
-
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_settings_footer
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_exit_footer
-
+
+
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_info_footer
+
+
+
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_settings_footer
+
+
+
+ragger.firmware.touch.layouts._TappableElement
+
+_TappableElement
+
+
+tap()
+
+
-ragger.firmware.stax.layouts.CenteredFooter->ragger.firmware.stax.layouts._Layout
-
-
+ragger.firmware.touch.layouts.CancelFooter->ragger.firmware.touch.layouts._TappableElement
+
+
-
+
-ragger.firmware.stax.layouts.ChoiceList
-
-ChoiceList
-
-
-choose(index: int)
-
-
-
-ragger.firmware.stax.layouts.ChoiceList->ragger.firmware.stax.screen.FullScreen
-
-
-choice_list
+ragger.firmware.touch.layouts.CenteredFooter
+
+CenteredFooter
+
+
+
+
+
+
+ragger.firmware.touch.layouts.CenteredFooter->ragger.firmware.touch.screen.FullScreen
+
+
+centered_footer
-
-
-ragger.firmware.stax.layouts.ChoiceList->ragger.firmware.stax.screen.FullScreen
-
-
-layout_choice_list
+
+
+ragger.firmware.touch.layouts.CenteredFooter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_centered_footer
-
+
-ragger.firmware.stax.layouts.ChoiceList->ragger.firmware.stax.layouts._Layout
-
-
+ragger.firmware.touch.layouts.CenteredFooter->ragger.firmware.touch.layouts._TappableElement
+
+
-
+
+ragger.firmware.touch.layouts.ChoiceList
+
+ChoiceList
+
+
+choose(index: int)
+
+
+
+ragger.firmware.touch.layouts.ChoiceList->ragger.firmware.touch.element.Element
+
+
+
+
+
+ragger.firmware.touch.layouts.ChoiceList->ragger.firmware.touch.screen.FullScreen
+
+
+choice_list
+
+
+
+ragger.firmware.touch.layouts.ChoiceList->ragger.firmware.touch.screen.FullScreen
+
+
+layout_choice_list
+
+
+
ragger.utils.structs.Crop
-
-Crop
-
-left : int
-lower : int
-right : int
-upper : int
-
-
+
+Crop
+
+left : int
+lower : int
+right : int
+upper : int
+
+
-
+
ragger.bip.seed.CurveChoice
-
-CurveChoice
-
-name
-
-
+
+CurveChoice
+
+name
+
+
-
+
ragger.error.ExceptionRAPDU
-
-ExceptionRAPDU
-
-data : bytes
-status : int
-
-
+
+ExceptionRAPDU
+
+data : bytes
+status : int
+
+
-
+
ragger.firmware.structs.Firmware
-
-Firmware
-
-device
-has_bagl
-has_nbgl
-is_nano
-name
-
-
+
+Firmware
+
+device
+is_nano
+name
+
+
-
+
ragger.firmware.structs.Firmware->ragger.backend.interface.BackendInterface
-
-
-_firmware
+
+
+_firmware
+
+
+
+ragger.firmware.structs.Firmware->ragger.firmware.touch.element.Element
+
+
+_firmware
-
+
ragger.firmware.structs.Firmware->ragger.navigator.navigator.Navigator
-
-
-_firmware
-
-
-
-ragger.firmware.structs.Firmware->ragger.firmware.stax.layouts._Layout
-
-
-_firmware
-
-
-
-ragger.firmware.structs.Firmware->ragger.firmware.stax.use_cases._UseCase
-
-
-_firmware
+
+
+_firmware
-
-
-ragger.firmware.stax.layouts.FullKeyboardLetters
-
-FullKeyboardLetters
-
-
-change_case()
-
-
-
-ragger.firmware.stax.layouts.FullKeyboardLetters->ragger.firmware.stax.screen.FullScreen
-
-
-full_keyboard_letters
+
+
+ragger.firmware.touch.layouts.FullKeyboardLetters
+
+FullKeyboardLetters
+
+
+change_case()
+
+
+
+ragger.firmware.touch.layouts.FullKeyboardLetters->ragger.firmware.touch.screen.FullScreen
+
+
+full_keyboard_letters
-
-
-ragger.firmware.stax.layouts.FullKeyboardLetters->ragger.firmware.stax.screen.FullScreen
-
-
-layout_full_keyboard_letters
+
+
+ragger.firmware.touch.layouts.FullKeyboardLetters->ragger.firmware.touch.screen.FullScreen
+
+
+layout_full_keyboard_letters
-
-
-ragger.firmware.stax.layouts._FullKeyboard
-
-_FullKeyboard
-
-
-change_layout()
-
-
-
-ragger.firmware.stax.layouts.FullKeyboardLetters->ragger.firmware.stax.layouts._FullKeyboard
-
-
+
+
+ragger.firmware.touch.layouts._FullKeyboard
+
+_FullKeyboard
+
+
+change_layout()
+
+
+
+ragger.firmware.touch.layouts.FullKeyboardLetters->ragger.firmware.touch.layouts._FullKeyboard
+
+
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters1
-
-FullKeyboardSpecialCharacters1
-
-
-
-
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.stax.screen.FullScreen
-
-
-full_keyboard_special_characters_1
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters1
+
+FullKeyboardSpecialCharacters1
+
+
+
+
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.touch.screen.FullScreen
+
+
+full_keyboard_special_characters_1
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.stax.screen.FullScreen
-
-
-layout_full_keyboard_special_characters_1
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.touch.screen.FullScreen
+
+
+layout_full_keyboard_special_characters_1
+
+
+
+ragger.firmware.touch.layouts._FullKeyboardSpecialCharacters
+
+_FullKeyboardSpecialCharacters
+
+
+more_specials()
+
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.touch.layouts._FullKeyboardSpecialCharacters
+
+
-
-
-ragger.firmware.stax.layouts._FullKeyboardSpecialCharacters
-
-_FullKeyboardSpecialCharacters
-
-
-more_specials()
-
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters1->ragger.firmware.stax.layouts._FullKeyboardSpecialCharacters
-
-
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters2
+
+FullKeyboardSpecialCharacters2
+
+
+
+
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.touch.screen.FullScreen
+
+
+full_keyboard_special_characters_2
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters2
-
-FullKeyboardSpecialCharacters2
-
-
-
-
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.stax.screen.FullScreen
-
-
-full_keyboard_special_characters_2
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.touch.screen.FullScreen
+
+
+layout_full_keyboard_special_characters_2
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.stax.screen.FullScreen
-
-
-layout_full_keyboard_special_characters_2
+
+
+ragger.firmware.touch.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.touch.layouts._FullKeyboardSpecialCharacters
+
+
-
-
-ragger.firmware.stax.layouts.FullKeyboardSpecialCharacters2->ragger.firmware.stax.layouts._FullKeyboardSpecialCharacters
-
-
+
+
+ragger.firmware.touch.layouts.KeyboardConfirmationButton
+
+KeyboardConfirmationButton
+
+
+confirm()
+
+
+
+ragger.firmware.touch.layouts.KeyboardConfirmationButton->ragger.firmware.touch.element.Element
+
+
-
+
ragger.backend.ledgercomm.LedgerCommBackend
-
-LedgerCommBackend
-
-
-exchange_async_raw(data: bytes): Generator[None, None, None]
-exchange_raw(data: bytes, tick_timeout: int): RAPDU
-handle_usb_reset(): None
-receive(): RAPDU
-send_raw(data: bytes): None
+
+LedgerCommBackend
+
+
+exchange_async_raw(data: bytes): Generator[None, None, None]
+exchange_raw(data: bytes, tick_timeout: int): RAPDU
+handle_usb_reset(): None
+receive(): RAPDU
+send_raw(data: bytes): None
-
+
ragger.backend.physical_backend.PhysicalBackend
-
-PhysicalBackend
-
-
-both_click(): None
-compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
-compare_screen_with_text(text: str): bool
-finger_touch(x: int, y: int, delay: float): None
-get_current_screen_content(): List
-init_gui(): None
-left_click(): None
-pause_ticker
-(): None
-resume_ticker
-(): None
-right_click(): None
-send_tick
-(): None
-wait_for_screen_change(timeout: float): None
-wait_for_text_not_on_screen(text: str, timeout: float): None
-wait_for_text_on_screen(text: str, timeout: float): None
+
+PhysicalBackend
+
+
+both_click(): None
+compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
+compare_screen_with_text(text: str): bool
+finger_touch(x: int, y: int, delay: float): None
+get_current_screen_content(): List
+init_gui(): None
+left_click(): None
+pause_ticker
+(): None
+resume_ticker
+(): None
+right_click(): None
+send_tick
+(): None
+wait_for_screen_change(timeout: float): None
+wait_for_text_not_on_screen(text: str, timeout: float): None
+wait_for_text_on_screen(text: str, timeout: float): None
ragger.backend.ledgercomm.LedgerCommBackend->ragger.backend.physical_backend.PhysicalBackend
-
-
+
+
-
+
ragger.backend.ledgerwallet.LedgerWalletBackend
-
-LedgerWalletBackend
-
-
-exchange_async_raw(data: bytes): Generator[None, None, None]
-exchange_raw(data: bytes, tick_timeout: int): RAPDU
-handle_usb_reset(): None
-receive(): RAPDU
-send_raw(data: bytes): None
+
+LedgerWalletBackend
+
+
+exchange_async_raw(data: bytes): Generator[None, None, None]
+exchange_raw(data: bytes, tick_timeout: int): RAPDU
+handle_usb_reset(): None
+receive(): RAPDU
+send_raw(data: bytes): None
ragger.backend.ledgerwallet.LedgerWalletBackend->ragger.backend.physical_backend.PhysicalBackend
-
-
+
+
-
-
-ragger.firmware.stax.layouts.LeftHeader
-
-LeftHeader
-
-
-tap()
-
-
-
-ragger.firmware.stax.layouts.LeftHeader->ragger.firmware.stax.screen.FullScreen
-
-
-left_header
+
+
+ragger.firmware.touch.layouts.LeftFooter
+
+LeftFooter
+
+
+
+
+
+
+ragger.firmware.touch.layouts.LeftFooter->ragger.firmware.touch.layouts._TappableElement
+
+
-
-
-ragger.firmware.stax.layouts.LeftHeader->ragger.firmware.stax.screen.FullScreen
-
-
-navigation_header
+
+
+ragger.firmware.touch.layouts.LeftHeader
+
+LeftHeader
+
+
+
+
+
+
+ragger.firmware.touch.layouts.LeftHeader->ragger.firmware.touch.screen.FullScreen
+
+
+left_header
-
-
-ragger.firmware.stax.layouts.LeftHeader->ragger.firmware.stax.screen.FullScreen
-
-
-layout_left_header
+
+
+ragger.firmware.touch.layouts.LeftHeader->ragger.firmware.touch.screen.FullScreen
+
+
+navigation_header
-
-
-ragger.firmware.stax.layouts.LeftHeader->ragger.firmware.stax.screen.FullScreen
-
-
-layout_navigation_header
+
+
+ragger.firmware.touch.layouts.LeftHeader->ragger.firmware.touch.screen.FullScreen
+
+
+layout_left_header
-
-
-ragger.firmware.stax.layouts.LeftHeader->ragger.firmware.stax.layouts._Layout
-
-
+
+
+ragger.firmware.touch.layouts.LeftHeader->ragger.firmware.touch.screen.FullScreen
+
+
+layout_navigation_header
-
-
-ragger.firmware.stax.layouts.LetterOnlyKeyboard
-
-LetterOnlyKeyboard
-
-
-
-
-
-
-ragger.firmware.stax.layouts.LetterOnlyKeyboard->ragger.firmware.stax.screen.FullScreen
-
-
-letter_only_keyboard
+
+
+ragger.firmware.touch.layouts.LeftHeader->ragger.firmware.touch.layouts._TappableElement
+
+
-
-
-ragger.firmware.stax.layouts.LetterOnlyKeyboard->ragger.firmware.stax.screen.FullScreen
-
-
-layout_letter_only_keyboard
+
+
+ragger.firmware.touch.layouts.LetterOnlyKeyboard
+
+LetterOnlyKeyboard
+
+
+
+
+
+
+ragger.firmware.touch.layouts.LetterOnlyKeyboard->ragger.firmware.touch.screen.FullScreen
+
+
+letter_only_keyboard
-
-
-ragger.firmware.stax.layouts._GenericKeyboard
-
-_GenericKeyboard
-
-
-back()
-write(word: str)
-
-
-
-ragger.firmware.stax.layouts.LetterOnlyKeyboard->ragger.firmware.stax.layouts._GenericKeyboard
-
-
+
+
+ragger.firmware.touch.layouts.LetterOnlyKeyboard->ragger.firmware.touch.screen.FullScreen
+
+
+layout_letter_only_keyboard
+
+
+
+ragger.firmware.touch.layouts._GenericKeyboard
+
+_GenericKeyboard
+
+
+back()
+write(word: str)
+
+
+
+ragger.firmware.touch.layouts.LetterOnlyKeyboard->ragger.firmware.touch.layouts._GenericKeyboard
+
+
-
-
-ragger.firmware.stax.screen.MetaScreen
-
-MetaScreen
-
-
-
+
+
+ragger.firmware.touch.screen.MetaScreen
+
+MetaScreen
+
+
+
-
+
ragger.navigator.nano_navigator.NanoNavigator
-
-NanoNavigator
-
-
-
+
+NanoNavigator
+
+
+
-
+
ragger.navigator.nano_navigator.NanoNavigator->ragger.navigator.navigator.Navigator
-
-
+
+
-
+
ragger.navigator.instruction.NavInsID
-
-NavInsID
-
-name
-
-
+
+NavInsID
+
+name
+
+
-
+
ragger.navigator.instruction.NavInsID->ragger.navigator.instruction.BaseNavInsID
-
-
+
+
-
+
ragger.navigator.navigation_scenario.NavigateWithScenario
-
-NavigateWithScenario
-
-device
-navigator
-screenshot_path
-test_name
-
-address_review_approve(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
-address_review_reject(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
-review_approve(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
-review_reject(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
+
+NavigateWithScenario
+
+device
+navigator
+screenshot_path
+test_name
+
+address_review_approve(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
+address_review_reject(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
+review_approve(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
+review_reject(path: Optional[Path], test_name: Optional[str], custom_screen_text: Optional[str], do_comparison: bool)
-
+
ragger.navigator.navigation_scenario.NavigationScenarioData
-
-NavigationScenarioData
-
-navigation
-pattern : str
-validation : List[NavInsID]
-
-
+
+NavigationScenarioData
+
+navigation
+pattern : str
+validation : List[NavInsID]
+
+
-
+
ragger.conftest.configuration.OptionalOptions
-
-OptionalOptions
-
-APP_NAME : str
-BACKEND_SCOPE : str
-CUSTOM_SEED : str
-MAIN_APP_DIR : Optional[str]
-SIDELOADED_APPS : dict
-SIDELOADED_APPS_DIR : str
-
-
+
+OptionalOptions
+
+APP_NAME : str
+BACKEND_SCOPE : str
+CUSTOM_SEED : str
+MAIN_APP_DIR : Optional[str]
+SIDELOADED_APPS : dict
+SIDELOADED_APPS_DIR : str
+
+
ragger.backend.physical_backend.PhysicalBackend->ragger.backend.interface.BackendInterface
-
-
+
+
-
-
-ragger.firmware.stax.positions.Position
-
-Position
-
-x : int
-y : int
-
-
+
+
+ragger.firmware.touch.positions.Position
+
+Position
+
+x : int
+y : int
+
+
-
+
ragger.gui.process.ProcessCommunicationWorker
-
-ProcessCommunicationWorker
-
-finished
-logger
-progress
-
-run()
+
+ProcessCommunicationWorker
+
+finished
+logger
+progress
+
+run()
-
+
ragger.gui.process.RaggerGUI
-
-RaggerGUI
-
-logger
-thread
-worker
-
-ask_for_click_action(ins_id: NavInsID)
-ask_for_touch_action(x: int, y: int)
-check_screenshot(image: Path)
-check_text(text: str)
-kill()
-run()
+
+RaggerGUI
+
+logger
+thread
+worker
+
+ask_for_click_action(ins_id: NavInsID)
+ask_for_touch_action(x: int, y: int)
+check_screenshot(image: Path)
+check_text(text: str)
+kill()
+run()
-
+
ragger.gui.process.ProcessCommunicationWorker->ragger.gui.process.RaggerGUI
-
-
-worker
+
+
+worker
-
+
ragger.gui.process.ProcessCommunicationWorker->ragger.gui.process.RaggerGUI
-
-
-worker
+
+
+worker
-
+
ragger.utils.structs.RAPDU
-
-RAPDU
-
-data : bytes
-raw
-status : int
-
-
+
+RAPDU
+
+data : bytes
+raw
+status : int
+
+
-
+
ragger.utils.structs.RAPDU->ragger.backend.ledgercomm.LedgerCommBackend
-
-
-_last_async_response
+
+
+_last_async_response
-
+
ragger.utils.structs.RAPDU->ragger.backend.ledgerwallet.LedgerWalletBackend
-
-
-_last_async_response
+
+
+_last_async_response
-
+
ragger.backend.speculos.SpeculosBackend
-
-SpeculosBackend
-
-url
-
-batch(application: Path, firmware: Firmware, number: int): List['SpeculosBackend']
-both_click(): None
-clean_args(speculos_args: List): None
-compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
-compare_screen_with_text(text: str): bool
-exchange_async_raw(data: bytes): Generator[None, None, None]
-exchange_raw(data: bytes, tick_timeout: int): RAPDU
-finger_touch(x: int, y: int, delay: float): None
-get_current_screen_content(): dict
-handle_usb_reset
-(): None
-left_click(): None
-pause_ticker(): None
-receive(): RAPDU
-resume_ticker(): None
-right_click(): None
-send_raw(data: bytes): None
-send_tick(): None
-wait_for_home_screen(timeout: float): None
-wait_for_screen_change(timeout: float): None
-wait_for_text_not_on_screen(text: str, timeout: float): None
-wait_for_text_on_screen(text: str, timeout: float): None
+
+SpeculosBackend
+
+url
+
+batch(application: Path, firmware: Firmware, number: int): List['SpeculosBackend']
+both_click(): None
+clean_args(speculos_args: List): None
+compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
+compare_screen_with_text(text: str): bool
+exchange_async_raw(data: bytes): Generator[None, None, None]
+exchange_raw(data: bytes, tick_timeout: int): RAPDU
+finger_touch(x: int, y: int, delay: float): None
+get_current_screen_content(): dict
+handle_usb_reset
+(): None
+left_click(): None
+pause_ticker(): None
+receive(): RAPDU
+resume_ticker(): None
+right_click(): None
+send_raw(data: bytes): None
+send_tick(): None
+wait_for_home_screen(timeout: float): None
+wait_for_screen_change(timeout: float): None
+wait_for_text_not_on_screen(text: str, timeout: float): None
+wait_for_text_on_screen(text: str, timeout: float): None
-
+
ragger.utils.structs.RAPDU->ragger.backend.speculos.SpeculosBackend
-
-
-_last_async_response
+
+
+_last_async_response
-
+
ragger.gui.interface.RaggerMainWindow
-
-RaggerMainWindow
-
-animation
-effects : list
-logger
-
-action_done(): None
-close(): bool
-display_action(action: str, x: int, y: int): None
-display_screenshot(image: Path): None
-display_text_search(text: str): None
-set_button_cb(callback: Callable[[bool], None]): None
+
+RaggerMainWindow
+
+animation
+effects : list
+logger
+
+action_done(): None
+close(): bool
+display_action(action: str, x: int, y: int): None
+display_screenshot(image: Path): None
+display_text_search(text: str): None
+set_button_cb(callback: Callable[[bool], None]): None
-
+
ragger.gui.interface.RaggerMainWindow->ragger.gui.process.ProcessCommunicationWorker
-
-
-_main_window
+
+
+_main_window
-
+
ragger.gui.interface.RaggerMainWindow->ragger.gui.process.RaggerGUI
-
-
-_main_window
+
+
+_main_window
-
+
ragger.backend.interface.RaisePolicy
-
-RaisePolicy
-
-name
-
-
-
-
-
-ragger.firmware.stax.layouts.RightHeader
-
-RightHeader
-
-
-tap()
-
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-right_header
+
+RaisePolicy
+
+name
+
+
+
+
+
+ragger.firmware.touch.layouts.RightHeader
+
+RightHeader
+
+
+
+
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+right_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-exit_header
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+exit_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-info_header
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+info_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-layout_right_header
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+layout_right_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-layout_exit_header
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+layout_exit_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.screen.FullScreen
-
-
-layout_info_header
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.screen.FullScreen
+
+
+layout_info_header
-
-
-ragger.firmware.stax.layouts.RightHeader->ragger.firmware.stax.layouts._Layout
-
-
+
+
+ragger.firmware.touch.layouts.RightHeader->ragger.firmware.touch.layouts._TappableElement
+
+
ragger.backend.speculos.SpeculosBackend->ragger.backend.interface.BackendInterface
-
-
-
-
-
-ragger.navigator.stax_navigator.StaxNavigator
-
-StaxNavigator
-
-
-
-
-
-
-ragger.navigator.stax_navigator.StaxNavigator->ragger.navigator.navigator.Navigator
-
-
+
+
-
+
ragger.backend.stub.StubBackend
-
-StubBackend
-
-
-both_click
-(): None
-compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
-compare_screen_with_text(text: str): bool
-exchange_async_raw(data: bytes): Generator[None, None, None]
-exchange_raw(data: bytes, tick_timeout: int): RAPDU
-finger_touch
-(x: int, y: int, delay: float): None
-get_current_screen_content
-(): Any
-handle_usb_reset
-(): None
-left_click
-(): None
-pause_ticker
-(): None
-receive(): RAPDU
-resume_ticker
-(): None
-right_click
-(): None
-send_raw
-(data: bytes)
-send_tick
-(): None
-wait_for_screen_change
-(timeout: float): None
-wait_for_text_not_on_screen(text: str, timeout: float): None
-wait_for_text_on_screen(text: str, timeout: float): None
+
+StubBackend
+
+
+both_click
+(): None
+compare_screen_with_snapshot(golden_snap_path: Path, crop: Optional[Crop], tmp_snap_path: Optional[Path], golden_run: bool): bool
+compare_screen_with_text(text: str): bool
+exchange_async_raw(data: bytes): Generator[None, None, None]
+exchange_raw(data: bytes, tick_timeout: int): RAPDU
+finger_touch
+(x: int, y: int, delay: float): None
+get_current_screen_content
+(): Any
+handle_usb_reset
+(): None
+left_click
+(): None
+pause_ticker
+(): None
+receive(): RAPDU
+resume_ticker
+(): None
+right_click
+(): None
+send_raw
+(data: bytes)
+send_tick
+(): None
+wait_for_screen_change
+(timeout: float): None
+wait_for_text_not_on_screen(text: str, timeout: float): None
+wait_for_text_on_screen(text: str, timeout: float): None
ragger.backend.stub.StubBackend->ragger.backend.interface.BackendInterface
-
-
-
-
-
-ragger.firmware.stax.layouts.Suggestions
-
-Suggestions
-
-
-choose(index: int)
-
-
-
-ragger.firmware.stax.layouts.Suggestions->ragger.firmware.stax.screen.FullScreen
-
-
-suggestions
-
-
-
-ragger.firmware.stax.layouts.Suggestions->ragger.firmware.stax.screen.FullScreen
-
-
-layout_suggestions
-
-
-
-ragger.firmware.stax.layouts.Suggestions->ragger.firmware.stax.layouts._Layout
-
-
+
+
-
-
-ragger.firmware.stax.layouts.TappableCenter
-
-TappableCenter
-
-
-tap()
-
-
-
-ragger.firmware.stax.layouts.TappableCenter->ragger.firmware.stax.screen.FullScreen
-
-
-tappable_center
-
-
-
-ragger.firmware.stax.layouts.TappableCenter->ragger.firmware.stax.screen.FullScreen
-
-
-layout_tappable_center
-
-
-
-ragger.firmware.stax.layouts.TappableCenter->ragger.firmware.stax.layouts._Layout
-
-
-
-
-
-ragger.navigator.navigation_scenario.UseCase
-
-UseCase
-
-name
-
-
-
-
+
-ragger.firmware.stax.use_cases.UseCaseAddressConfirmation
-
-UseCaseAddressConfirmation
-
-
-cancel()
-confirm()
-exit_qr()
-tap()
-
-
+ragger.firmware.touch.layouts.Suggestions
+
+Suggestions
+
+
+choose(index: int)
+
+
+
+ragger.firmware.touch.layouts.Suggestions->ragger.firmware.touch.element.Element
+
+
+
+
-ragger.firmware.stax.use_cases.UseCaseAddressConfirmation->ragger.firmware.stax.screen.FullScreen
-
-
-address_confirmation
+ragger.firmware.touch.layouts.Suggestions->ragger.firmware.touch.screen.FullScreen
+
+
+suggestions
-
+
-ragger.firmware.stax.use_cases.UseCaseAddressConfirmation->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_address_confirmation
+ragger.firmware.touch.layouts.Suggestions->ragger.firmware.touch.screen.FullScreen
+
+
+layout_suggestions
-
-
-ragger.firmware.stax.use_cases.UseCaseAddressConfirmation->ragger.firmware.stax.use_cases._UseCase
-
-
-
-
+
-ragger.firmware.stax.use_cases.UseCaseChoice
-
-UseCaseChoice
-
-
-confirm()
-reject()
-
-
+ragger.firmware.touch.layouts.TappableCenter
+
+TappableCenter
+
+
+
+
+
-ragger.firmware.stax.use_cases.UseCaseChoice->ragger.firmware.stax.screen.FullScreen
-
-
-choice
+ragger.firmware.touch.layouts.TappableCenter->ragger.firmware.touch.screen.FullScreen
+
+
+tappable_center
-
+
-ragger.firmware.stax.use_cases.UseCaseChoice->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_choice
+ragger.firmware.touch.layouts.TappableCenter->ragger.firmware.touch.screen.FullScreen
+
+
+layout_tappable_center
-
-
-ragger.firmware.stax.use_cases.UseCaseChoice->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.layouts.TappableCenter->ragger.firmware.touch.layouts._TappableElement
+
+
-
+
-ragger.firmware.stax.use_cases.UseCaseHome
-
-UseCaseHome
-
-
-info()
-quit()
-settings()
-
-
+ragger.navigator.touch_navigator.TouchNavigator
+
+TouchNavigator
+
+
+
+
+
+
+ragger.navigator.touch_navigator.TouchNavigator->ragger.navigator.navigator.Navigator
+
+
+
+
+
+ragger.navigator.navigation_scenario.UseCase
+
+UseCase
+
+name
+
+
+
+
+
+ragger.firmware.touch.use_cases.UseCaseAddressConfirmation
+
+UseCaseAddressConfirmation
+
+
+cancel()
+confirm()
+exit_qr()
+tap()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseAddressConfirmation->ragger.firmware.touch.element.Element
+
+
+
+
-ragger.firmware.stax.use_cases.UseCaseHome->ragger.firmware.stax.screen.FullScreen
-
-
-home
+ragger.firmware.touch.use_cases.UseCaseAddressConfirmation->ragger.firmware.touch.screen.FullScreen
+
+
+address_confirmation
-
+
-ragger.firmware.stax.use_cases.UseCaseHome->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_home
+ragger.firmware.touch.use_cases.UseCaseAddressConfirmation->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_address_confirmation
-
-
-ragger.firmware.stax.use_cases.UseCaseHome->ragger.firmware.stax.use_cases._UseCase
-
-
-
-
-
-ragger.firmware.stax.use_cases.UseCaseHomeExt
-
-UseCaseHomeExt
-
-
-action()
-
-
-
-ragger.firmware.stax.use_cases.UseCaseHomeExt->ragger.firmware.stax.use_cases.UseCaseHome
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseChoice
+
+UseCaseChoice
+
+
+confirm()
+reject()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseChoice->ragger.firmware.touch.element.Element
+
+
-
-
-ragger.firmware.stax.use_cases.UseCaseReview
-
-UseCaseReview
-
-
-confirm()
-previous()
-reject()
-tap()
-
-
+
-ragger.firmware.stax.use_cases.UseCaseReview->ragger.firmware.stax.screen.FullScreen
-
-
-review
+ragger.firmware.touch.use_cases.UseCaseChoice->ragger.firmware.touch.screen.FullScreen
+
+
+choice
-
+
-ragger.firmware.stax.use_cases.UseCaseReview->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_review
+ragger.firmware.touch.use_cases.UseCaseChoice->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_choice
-
-
-ragger.firmware.stax.use_cases.UseCaseReview->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseHome
+
+UseCaseHome
+
+
+info()
+quit()
+settings()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseHome->ragger.firmware.touch.element.Element
+
+
-
-
-ragger.firmware.stax.use_cases.UseCaseSettings
-
-UseCaseSettings
-
-
-multi_page_exit()
-next()
-previous()
-single_page_exit()
-
-
+
-ragger.firmware.stax.use_cases.UseCaseSettings->ragger.firmware.stax.screen.FullScreen
-
-
-settings
+ragger.firmware.touch.use_cases.UseCaseHome->ragger.firmware.touch.screen.FullScreen
+
+
+home
-
+
-ragger.firmware.stax.use_cases.UseCaseSettings->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_settings
+ragger.firmware.touch.use_cases.UseCaseHome->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_home
-
-
-ragger.firmware.stax.use_cases.UseCaseSettings->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseHomeExt
+
+UseCaseHomeExt
+
+
+action()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseHomeExt->ragger.firmware.touch.use_cases.UseCaseHome
+
+
-
-
-ragger.firmware.stax.use_cases.UseCaseStatus
-
-UseCaseStatus
-
-
-dismiss()
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseReview
+
+UseCaseReview
+
+
+confirm()
+previous()
+reject()
+tap()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseReview->ragger.firmware.touch.element.Element
+
+
+
+
-ragger.firmware.stax.use_cases.UseCaseStatus->ragger.firmware.stax.screen.FullScreen
-
-
-status
+ragger.firmware.touch.use_cases.UseCaseReview->ragger.firmware.touch.screen.FullScreen
+
+
+review
-
+
-ragger.firmware.stax.use_cases.UseCaseStatus->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_status
+ragger.firmware.touch.use_cases.UseCaseReview->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_review
-
-
-ragger.firmware.stax.use_cases.UseCaseStatus->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseSettings
+
+UseCaseSettings
+
+
+multi_page_exit()
+next()
+previous()
+single_page_exit()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseSettings->ragger.firmware.touch.element.Element
+
+
-
-
-ragger.firmware.stax.use_cases.UseCaseSubSettings
-
-UseCaseSubSettings
-
-
-exit()
-next()
-previous()
-
-
+
-ragger.firmware.stax.use_cases.UseCaseSubSettings->ragger.firmware.stax.screen.FullScreen
-
-
-sub_settings
+ragger.firmware.touch.use_cases.UseCaseSettings->ragger.firmware.touch.screen.FullScreen
+
+
+settings
-
+
-ragger.firmware.stax.use_cases.UseCaseSubSettings->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_sub_settings
+ragger.firmware.touch.use_cases.UseCaseSettings->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_settings
-
-
-ragger.firmware.stax.use_cases.UseCaseSubSettings->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseStatus
+
+UseCaseStatus
+
+
+dismiss()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseStatus->ragger.firmware.touch.element.Element
+
+
-
-
-ragger.firmware.stax.use_cases.UseCaseViewDetails
-
-UseCaseViewDetails
-
-
-exit()
-next()
-previous()
-
-
+
-ragger.firmware.stax.use_cases.UseCaseViewDetails->ragger.firmware.stax.screen.FullScreen
-
-
-view_details
+ragger.firmware.touch.use_cases.UseCaseStatus->ragger.firmware.touch.screen.FullScreen
+
+
+status
-
+
-ragger.firmware.stax.use_cases.UseCaseViewDetails->ragger.firmware.stax.screen.FullScreen
-
-
-use_case_view_details
+ragger.firmware.touch.use_cases.UseCaseStatus->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_status
-
-
-ragger.firmware.stax.use_cases.UseCaseViewDetails->ragger.firmware.stax.use_cases._UseCase
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseSubSettings
+
+UseCaseSubSettings
+
+
+exit()
+next()
+previous()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseSubSettings->ragger.firmware.touch.element.Element
+
+
-
-
-ragger.firmware.stax.layouts._FullKeyboard->ragger.firmware.stax.layouts._GenericKeyboard
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseSubSettings->ragger.firmware.touch.screen.FullScreen
+
+
+sub_settings
-
-
-ragger.firmware.stax.layouts._FullKeyboardSpecialCharacters->ragger.firmware.stax.layouts._FullKeyboard
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseSubSettings->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_sub_settings
-
-
-ragger.firmware.stax.layouts._GenericKeyboard->ragger.firmware.stax.layouts._Layout
-
-
+
+
+ragger.firmware.touch.use_cases.UseCaseViewDetails
+
+UseCaseViewDetails
+
+
+exit()
+next()
+previous()
+
+
+
+ragger.firmware.touch.use_cases.UseCaseViewDetails->ragger.firmware.touch.element.Element
+
+
+
+
+
+ragger.firmware.touch.use_cases.UseCaseViewDetails->ragger.firmware.touch.screen.FullScreen
+
+
+view_details
+
+
+
+ragger.firmware.touch.use_cases.UseCaseViewDetails->ragger.firmware.touch.screen.FullScreen
+
+
+use_case_view_details
+
+
+
+ragger.firmware.touch.layouts._FullKeyboard->ragger.firmware.touch.layouts._GenericKeyboard
+
+
+
+
+
+ragger.firmware.touch.layouts._FullKeyboardSpecialCharacters->ragger.firmware.touch.layouts._FullKeyboard
+
+
+
+
+
+ragger.firmware.touch.layouts._GenericKeyboard->ragger.firmware.touch.element.Element
+
+
+
+
+
+ragger.firmware.touch.layouts._TappableElement->ragger.firmware.touch.element.Element
+
+
diff --git a/_images/packages_generated_ragger_architecture.svg b/_images/packages_generated_ragger_architecture.svg
index 31f266c9..6ec288da 100644
--- a/_images/packages_generated_ragger_architecture.svg
+++ b/_images/packages_generated_ragger_architecture.svg
@@ -4,700 +4,706 @@
-
-
+
+
packages_generated_ragger_architecture
-
+
ragger
-
-ragger
+
+ragger
ragger.__version__
-
-ragger.__version__
+
+ragger.__version__
ragger->ragger.__version__
-
-
+
+
-
+
ragger.logger
-
-ragger.logger
+
+ragger.logger
ragger->ragger.logger
-
-
+
+
ragger.backend
-
-ragger.backend
+
+ragger.backend
ragger.backend.interface
-
-ragger.backend.interface
+
+ragger.backend.interface
ragger.backend->ragger.backend.interface
-
-
+
+
ragger.backend.ledgercomm
-
-ragger.backend.ledgercomm
+
+ragger.backend.ledgercomm
ragger.backend->ragger.backend.ledgercomm
-
-
+
+
ragger.backend.ledgerwallet
-
-ragger.backend.ledgerwallet
+
+ragger.backend.ledgerwallet
ragger.backend->ragger.backend.ledgerwallet
-
-
+
+
ragger.backend.speculos
-
-ragger.backend.speculos
+
+ragger.backend.speculos
ragger.backend->ragger.backend.speculos
-
-
+
+
ragger.backend.stub
-
-ragger.backend.stub
+
+ragger.backend.stub
ragger.backend->ragger.backend.stub
-
-
+
+
ragger.firmware
-
-ragger.firmware
+
+ragger.firmware
ragger.backend.interface->ragger.firmware
-
-
+
+
ragger.backend.interface->ragger.logger
-
-
+
+
-
+
ragger.utils
-
-ragger.utils
+
+ragger.utils
ragger.backend.interface->ragger.utils
-
-
+
+
ragger.backend.ledgercomm->ragger.backend.ledgercomm
-
-
+
+
ragger.backend.physical_backend
-
-ragger.backend.physical_backend
+
+ragger.backend.physical_backend
ragger.backend.ledgercomm->ragger.backend.physical_backend
-
-
+
+
ragger.error
-
-ragger.error
+
+ragger.error
ragger.backend.ledgercomm->ragger.error
-
-
+
+
ragger.backend.ledgercomm->ragger.firmware
-
-
+
+
ragger.backend.ledgercomm->ragger.utils
-
-
+
+
ragger.backend.ledgerwallet->ragger.backend.physical_backend
-
-
+
+
ragger.backend.ledgerwallet->ragger.error
-
-
+
+
ragger.backend.ledgerwallet->ragger.firmware
-
-
+
+
ragger.backend.ledgerwallet->ragger.utils
-
-
+
+
ragger.backend.physical_backend->ragger.backend.interface
-
-
+
+
ragger.backend.physical_backend->ragger.firmware
-
-
+
+
-
+
ragger.gui
-
-ragger.gui
+
+ragger.gui
ragger.backend.physical_backend->ragger.gui
-
-
+
+
-
+
ragger.navigator.instruction
-
-ragger.navigator.instruction
+
+ragger.navigator.instruction
ragger.backend.physical_backend->ragger.navigator.instruction
-
-
+
+
ragger.backend.physical_backend->ragger.utils
-
-
+
+
ragger.backend.speculos->ragger.backend.interface
-
-
+
+
ragger.backend.speculos->ragger.error
-
-
+
+
ragger.backend.speculos->ragger.firmware
-
-
+
+
ragger.backend.speculos->ragger.logger
-
-
+
+
ragger.backend.speculos->ragger.utils
-
-
+
+
ragger.backend.stub->ragger.backend.interface
-
-
+
+
-
+
ragger.utils.structs
-
-ragger.utils.structs
+
+ragger.utils.structs
ragger.backend.stub->ragger.utils.structs
-
-
+
+
ragger.bip
-
-ragger.bip
+
+ragger.bip
ragger.bip.path
-
-ragger.bip.path
+
+ragger.bip.path
ragger.bip->ragger.bip.path
-
-
+
+
ragger.bip.seed
-
-ragger.bip.seed
+
+ragger.bip.seed
ragger.bip->ragger.bip.seed
-
-
+
+
ragger.conftest
-
-ragger.conftest
+
+ragger.conftest
ragger.conftest.base_conftest
-
-ragger.conftest.base_conftest
+
+ragger.conftest.base_conftest
ragger.conftest.base_conftest->ragger.backend
-
-
+
+
ragger.conftest.base_conftest->ragger.firmware
-
-
+
+
ragger.conftest.base_conftest->ragger.logger
-
-
+
+
-
+
ragger.navigator
-
-ragger.navigator
+
+ragger.navigator
ragger.conftest.base_conftest->ragger.navigator
-
-
+
+
ragger.conftest.base_conftest->ragger.utils
-
-
+
+
-
+
ragger.utils.misc
-
-ragger.utils.misc
+
+ragger.utils.misc
ragger.conftest.base_conftest->ragger.utils.misc
-
-
+
+
ragger.conftest.configuration
-
-ragger.conftest.configuration
+
+ragger.conftest.configuration
-
+
ragger.firmware.structs
-
-ragger.firmware.structs
+
+ragger.firmware.structs
ragger.firmware->ragger.firmware.structs
-
-
+
+
-
-
-ragger.firmware.stax
-
-ragger.firmware.stax
+
+
+ragger.firmware.touch
+
+ragger.firmware.touch
-
-
-ragger.firmware.stax.screen
-
-ragger.firmware.stax.screen
+
+
+ragger.firmware.touch.screen
+
+ragger.firmware.touch.screen
-
+
-ragger.firmware.stax->ragger.firmware.stax.screen
-
-
+ragger.firmware.touch->ragger.firmware.touch.screen
+
+
-
-
-ragger.firmware.stax.layouts
-
-ragger.firmware.stax.layouts
+
+
+ragger.firmware.touch.element
+
+ragger.firmware.touch.element
-
+
-ragger.firmware.stax.layouts->ragger.backend
-
-
+ragger.firmware.touch.element->ragger.backend
+
+
-
+
-ragger.firmware.stax.layouts->ragger.firmware
-
-
+ragger.firmware.touch.element->ragger.firmware
+
+
-
-
-ragger.firmware.stax.positions
-
-ragger.firmware.stax.positions
+
+
+ragger.firmware.touch.positions
+
+ragger.firmware.touch.positions
-
+
-ragger.firmware.stax.layouts->ragger.firmware.stax.positions
-
-
+ragger.firmware.touch.element->ragger.firmware.touch.positions
+
+
+
+
+
+ragger.firmware.touch.layouts
+
+ragger.firmware.touch.layouts
-
+
-ragger.firmware.stax.screen->ragger.backend
-
-
+ragger.firmware.touch.layouts->ragger.firmware.touch.element
+
+
-
+
-ragger.firmware.stax.screen->ragger.firmware
-
-
+ragger.firmware.touch.positions->ragger.firmware
+
+
-
+
-ragger.firmware.stax.screen->ragger.firmware.stax.layouts
-
-
+ragger.firmware.touch.screen->ragger.backend
+
+
-
-
-ragger.firmware.stax.use_cases
-
-ragger.firmware.stax.use_cases
-
-
+
-ragger.firmware.stax.screen->ragger.firmware.stax.use_cases
-
-
+ragger.firmware.touch.screen->ragger.firmware
+
+
-
+
-ragger.firmware.stax.use_cases->ragger.backend
-
-
+ragger.firmware.touch.screen->ragger.firmware.touch.layouts
+
+
-
+
+
+ragger.firmware.touch.use_cases
+
+ragger.firmware.touch.use_cases
+
+
-ragger.firmware.stax.use_cases->ragger.firmware
-
-
+ragger.firmware.touch.screen->ragger.firmware.touch.use_cases
+
+
-
+
-ragger.firmware.stax.use_cases->ragger.firmware.stax.positions
-
-
+ragger.firmware.touch.use_cases->ragger.firmware.touch.element
+
+
-
+
ragger.gui.process
-
-ragger.gui.process
+
+ragger.gui.process
ragger.gui->ragger.gui.process
-
-
+
+
-
+
ragger.gui.interface
-
-ragger.gui.interface
+
+ragger.gui.interface
ragger.gui.interface->ragger.logger
-
-
+
+
ragger.gui.process->ragger.gui.interface
-
-
+
+
ragger.gui.process->ragger.logger
-
-
+
+
ragger.gui.process->ragger.navigator.instruction
-
-
+
+
ragger.navigator->ragger.navigator.instruction
-
-
+
+
-
+
ragger.navigator.nano_navigator
-
-ragger.navigator.nano_navigator
+
+ragger.navigator.nano_navigator
ragger.navigator->ragger.navigator.nano_navigator
-
-
+
+
-
+
ragger.navigator.navigation_scenario
-
-ragger.navigator.navigation_scenario
+
+ragger.navigator.navigation_scenario
ragger.navigator->ragger.navigator.navigation_scenario
-
-
+
+
-
+
ragger.navigator.navigator
-
-ragger.navigator.navigator
+
+ragger.navigator.navigator
ragger.navigator->ragger.navigator.navigator
-
-
+
+
-
-
-ragger.navigator.stax_navigator
-
-ragger.navigator.stax_navigator
+
+
+ragger.navigator.touch_navigator
+
+ragger.navigator.touch_navigator
-
+
-ragger.navigator->ragger.navigator.stax_navigator
-
-
+ragger.navigator->ragger.navigator.touch_navigator
+
+
ragger.navigator.nano_navigator->ragger.backend
-
-
+
+
ragger.navigator.nano_navigator->ragger.firmware
-
-
+
+
ragger.navigator.nano_navigator->ragger.navigator.navigator
-
-
+
+
ragger.navigator.navigation_scenario->ragger.navigator.navigator
-
-
+
+
ragger.navigator.navigator->ragger.backend
-
-
+
+
ragger.navigator.navigator->ragger.firmware
-
-
+
+
ragger.navigator.navigator->ragger.navigator.instruction
-
-
+
+
ragger.navigator.navigator->ragger.utils
-
-
+
+
-
+
-ragger.navigator.stax_navigator->ragger.backend
-
-
+ragger.navigator.touch_navigator->ragger.backend
+
+
-
+
-ragger.navigator.stax_navigator->ragger.firmware
-
-
+ragger.navigator.touch_navigator->ragger.firmware
+
+
-
+
-ragger.navigator.stax_navigator->ragger.firmware.stax
-
-
+ragger.navigator.touch_navigator->ragger.firmware.touch
+
+
-
+
-ragger.navigator.stax_navigator->ragger.navigator.instruction
-
-
+ragger.navigator.touch_navigator->ragger.navigator.instruction
+
+
-
+
-ragger.navigator.stax_navigator->ragger.navigator.navigator
-
-
+ragger.navigator.touch_navigator->ragger.navigator.navigator
+
+
ragger.utils->ragger.utils.misc
-
-
+
+
-
+
ragger.utils.packing
-
-ragger.utils.packing
+
+ragger.utils.packing
ragger.utils->ragger.utils.packing
-
-
+
+
ragger.utils->ragger.utils.structs
-
-
+
+
ragger.utils.misc->ragger.error
-
-
+
+
diff --git a/_sources/glossary.rst.txt b/_sources/glossary.rst.txt
index bc464c31..5ef35030 100644
--- a/_sources/glossary.rst.txt
+++ b/_sources/glossary.rst.txt
@@ -27,8 +27,6 @@ Glossary
integrated into the C SDK managing the UI of the NanoS, NanoX and NanoS+
devices. It is embedded into the :term:`SDK`
- Its equivalent for :term:`Stax` device is :term:`NBGL`.
-
BOLOS
**BOLOS** is `the operating system running on all Ledger hardware wallets
`_.
@@ -85,6 +83,9 @@ Glossary
:term:`BAGL` for more recent devices such as :term:`Stax`. It is embedded
into the :term:`SDK`.
+ It has also been back-ported to older devices such as NanoS+ and NanoX (but
+ not NanoS) to ease interface flow development.
+
Page
In the :term:`Stax` SDK, a **Page** refers to a specific displayed Stax
screen.A welcome page, a setting page are example of Pages. This name is
@@ -131,8 +132,8 @@ Glossary
allowing to easily control and communicate with said emulator.
Stax
- **Stax** is the latest Ledger device which, in a programmatic point of
- view, mostly differs from previous devices by its richer UI and a touch
+ **Stax** is the most premium Ledger device which, in a programmatic point
+ of view, mostly differs from previous devices by its richer UI and a touch
screen, justifying the usage of the new graphic library, :term:`NBGL`.
Use Case
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
index 261e67d0..71916cf7 100644
--- a/_sources/index.rst.txt
+++ b/_sources/index.rst.txt
@@ -3,7 +3,7 @@ The Ragger framework
``Ragger`` is a Python framework which aims at simplifying the test and overall
automatic manipulation of applications running on Ledger devices: NanoS, NanoS+,
-NanoX and Stax (sometimes referred as Fatstacks in the sources).
+NanoX, Stax and Flex.
It is composed of a tiny wrapper around other Ledger's libraries which abstract
and/or provide access to Ledger's cold wallet, and higher-level classes allowing
diff --git a/_sources/rationale.rst.txt b/_sources/rationale.rst.txt
index 01f63c50..75230fb2 100644
--- a/_sources/rationale.rst.txt
+++ b/_sources/rationale.rst.txt
@@ -96,24 +96,24 @@ it helps a lot to write code which on the first hand manipulate high-level
concept as validating a transaction, and on the other hand deal with low-level
details such as crafting an :term:`APDU` and click on a button at the right time.
-Stax screen management
-----------------------
+Touch screen management
+-----------------------
Dealing with UI and user interaction is never simple. Nano devices has only two
user physical inputs, through the two buttons, which already allows some
elaborate combinations that could be challenging to test automatically.
-With the Stax device and its touchable screen, the number of possibilities
+With the touchable screens of Stax or Flex devices, the number of possibilities
drastically increases.
``Ragger`` embeds tools allowing to ease the development and the maintenance of
UI clients. this tools mainly consist of 3 components:
-- the :py:class:`layout classes `, representing
+- the :py:class:`layout classes `, representing
the layouts proposed in the NBGL section of the C SDK,
-- the :py:class:`use cases classes `,
+- the :py:class:`use cases classes `,
representing the use cases proposed in the NBGL section of the C SDK,
-- the :py:mod:`screen module `, allowing to nest
+- the :py:mod:`screen module `, allowing to nest
the previous components in a single, centralized object.
.. note::
@@ -127,7 +127,7 @@ These components bring multiple benefits:
- these abstractions prevent to directly use ``(X, Y)`` coordinates to interact
with the screen and propose higher-level methods (for instance, when using the
- :py:class:`UseCaseHome ` use case,
+ :py:class:`UseCaseHome ` use case,
going to the settings is triggered with the method ``UseCaseHome.settings()``
instead of touching the screen at ``(342, 55)``). The client's code is
meaningful.
@@ -137,14 +137,14 @@ These components bring multiple benefits:
- the :term:`layouts ` and :term:`use cases ` mimic the
:term:`NBGL` capabilities, so that the ``Ragger`` client screen architecture
is close to the application one.
-- the :py:class:`FullScreen ` class
- embeds every existing :py:class:`layout ` and
- :py:class:`use case ` in a single class,
+- the :py:class:`FullScreen ` class
+ embeds every existing :py:class:`layout ` and
+ :py:class:`use case ` in a single class,
providing a fast way of testing an interface without any other configuration.
-- the :py:class:`MetaScreen ` metaclass
+- the :py:class:`MetaScreen ` metaclass
allows to build custom screen classes nesting the
- :py:class:`layouts ` and the
- :py:class:`use cases ` of your choosing,
+ :py:class:`layouts ` and the
+ :py:class:`use cases ` of your choosing,
creating a convenient and meaningful screen object where all UI interactions
are centralized.
diff --git a/_sources/source.rst.txt b/_sources/source.rst.txt
index ea5ec655..1842263b 100644
--- a/_sources/source.rst.txt
+++ b/_sources/source.rst.txt
@@ -72,27 +72,29 @@ should expect. This is declared with this class:
.. autoattribute:: STAX
+ .. autoattribute:: FLEX
-``ragger.firmware.stax``
+
+``ragger.firmware.touch``
++++++++++++++++++++++++
-``ragger.firmware.stax.screen``
+``ragger.firmware.touch.screen``
'''''''''''''''''''''''''''''''
-.. automodule:: ragger.firmware.stax.screen
+.. automodule:: ragger.firmware.touch.screen
:members:
-``ragger.firmware.stax.layouts``
+``ragger.firmware.touch.layouts``
'''''''''''''''''''''''''''''''''
-.. automodule:: ragger.firmware.stax.layouts
+.. automodule:: ragger.firmware.touch.layouts
:members:
:undoc-members:
-``ragger.firmware.stax.use_cases``
+``ragger.firmware.touch.use_cases``
''''''''''''''''''''''''''''''''''
-.. automodule:: ragger.firmware.stax.use_cases
+.. automodule:: ragger.firmware.touch.use_cases
:members:
:undoc-members:
diff --git a/_sources/tutorial_screen.rst.txt b/_sources/tutorial_screen.rst.txt
index 063e79e8..ff3779f4 100644
--- a/_sources/tutorial_screen.rst.txt
+++ b/_sources/tutorial_screen.rst.txt
@@ -1,7 +1,7 @@
.. _tutorial_screen:
-Complex UI management - Stax
-============================
+Complex UI management - Flex / Stax
+===================================
Interacting programmatically with an application tends to be a non-trivial
thing, as complex processes (like performing a complete transaction) have to be
@@ -16,8 +16,8 @@ specifically about the UI, we saw :ref:`previously
to cope with simple physical interactions (like on the Nano devices: only two
buttons). But what to do with more complex interfaces?
-In particular, interacting with the Stax screen can be bothersome. It is hard to
-track of button positions, pages layouts and such.
+In particular, interacting with the touch screen devices (Stax or Flex) can be
+bothersome. It is hard to track of button positions, pages layouts and such.
Study case
----------
@@ -66,7 +66,7 @@ to change some button position, or if higher-level graphic objects (such as
the "info" button to the top left -, all this code becomes deprecated.
-That's why ``Ragger`` mimics the Stax SDK graphics library and provides
+That's why ``Ragger`` mimics the Flex/Stax SDK graphics library and provides
:term:`Layout` and :term:`Use Case` (:term:`Page` will also come soon) classes
that keep track of every interactive screen elements and expose meaningful
methods to interact with them.
@@ -74,18 +74,18 @@ methods to interact with them.
Layouts
'''''''
-``Ragger``'s :mod:`Layouts ` and
-:mod:`UseCases ` allows to quickly describe an
+``Ragger``'s :mod:`Layouts ` and
+:mod:`UseCases ` allows to quickly describe an
application screens and its attached behavior in a purely declarative way,
-thanks to the :class:`MetaScreen `
+thanks to the :class:`MetaScreen `
metaclass. For instance, with the previously described application:
.. code-block:: python
:linenos:
- from ragger.firmware.stax.screen import MetaScreen
- from ragger.firmware.stax.layouts import CancelFooter, ExitFooter, InfoHeader
+ from ragger.firmware.touch.screen import MetaScreen
+ from ragger.firmware.touch.layouts import CancelFooter, ExitFooter, InfoHeader
class RecoveryAppScreen(metaclass=MetaScreen)
layout_quit = ExitFooter
@@ -131,7 +131,7 @@ way than if positions were still necessary:
First of all, the buttons may be at the same place, but they don't carry the
same purpose, and it is a good idea to reflect that on the code.
- Second, if in a future version the Stax design changes and one of these
+ Second, if in a future version the Flex/Stax design changes and one of these
button moves somewhere else on the screen's footer, **the layouts will be
updated accordingly** in ``Ragger``, and the ``CancelFooter`` or ``ExitFooter``
will still be valid, hence all code using this class remains valid too.
@@ -163,8 +163,8 @@ and start with ``use_case_``:
.. code-block:: python
:linenos:
- from ragger.firmware.stax.screen import MetaScreen
- from ragger.firmware.stax.use_case import UseCaseHome, UseCaseSettings
+ from ragger.firmware.touch.screen import MetaScreen
+ from ragger.firmware.touch.use_case import UseCaseHome, UseCaseSettings
class RecoveryAppScreen(metaclass=MetaScreen)
use_case_welcome = UseCaseHome
@@ -198,7 +198,7 @@ All-in-one solution: the ``FullScreen``
All these classes helps you tailoring a fairly elegant and straight-forward
client with meaningful and easy to write screen controls. However if you don't
feel like crafting you own screen representation, ``Ragger`` comes with a
-:class:`FullScreen ` class
+:class:`FullScreen ` class
which embeds every existing :term:`Layout` and :term:`Use Case`.
It can be used to quickly instantiate a screen which could work with any
@@ -209,7 +209,7 @@ application screen, as declared button can be totally fictional.
.. code-block:: python
:linenos:
- from ragger.firmware.stax.screen import FullScreen
+ from ragger.firmware.touch.screen import FullScreen
screen = FullScreen(backend, firmware)
diff --git a/_static/documentation_options.js b/_static/documentation_options.js
index cd8b0011..07768d58 100644
--- a/_static/documentation_options.js
+++ b/_static/documentation_options.js
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: '1.17.0',
+ VERSION: '1.17.1.dev10',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/architecture.html b/architecture.html
index 9dfa96f1..5230cd58 100644
--- a/architecture.html
+++ b/architecture.html
@@ -3,7 +3,7 @@
- Architecture — Ragger 1.17.0 documentation
+ Architecture — Ragger 1.17.1.dev10 documentation
@@ -29,7 +29,7 @@
-
+
@@ -95,7 +95,7 @@
Architecture
Architecture Architecture Previous
+ Previous
Next
diff --git a/faq.html b/faq.html
index c17a1da0..96b5e36a 100644
--- a/faq.html
+++ b/faq.html
@@ -3,7 +3,7 @@
- Frequently Asked Questions — Ragger 1.17.0 documentation
+ Frequently Asked Questions — Ragger 1.17.1.dev10 documentation
diff --git a/genindex.html b/genindex.html
index a5cd115c..a79b4cb0 100644
--- a/genindex.html
+++ b/genindex.html
@@ -3,7 +3,7 @@
- Index — Ragger 1.17.0 documentation
+ Index — Ragger 1.17.1.dev10 documentation
@@ -99,7 +99,6 @@ Index
| E
| F
| G
- | H
| I
| L
| N
@@ -169,24 +168,16 @@ F
-
-
-G
-
-H
+G
diff --git a/glossary.html b/glossary.html
index 63245ddc..dec5a6a4 100644
--- a/glossary.html
+++ b/glossary.html
@@ -3,7 +3,7 @@
- Glossary — Ragger 1.17.0 documentation
+ Glossary — Ragger 1.17.1.dev10 documentation
@@ -110,7 +110,6 @@
BAGL BAGL stands for “BOLOS Application Graphics Library”, and is a library
integrated into the C SDK managing the UI of the NanoS, NanoX and NanoS+
devices. It is embedded into the SDK
-Its equivalent for Stax device is NBGL .
BOLOS BOLOS is the operating system running on all Ledger hardware wallets .
Its code is not open-source. Its capabilities can be used through the
@@ -154,6 +153,8 @@
NBGL NBGL stands for “New BOLOS Graphic Library”, and is the successor of
BAGL for more recent devices such as Stax . It is embedded
into the SDK .
+It has also been back-ported to older devices such as NanoS+ and NanoX (but
+not NanoS) to ease interface flow development.
Page In the Stax SDK, a Page refers to a specific displayed Stax
screen.A welcome page, a setting page are example of Pages. This name is
@@ -187,8 +188,8 @@
It is composed of the emulator itself, and a HTTP client-server module
allowing to easily control and communicate with said emulator.
-Stax Stax is the latest Ledger device which, in a programmatic point of
-view, mostly differs from previous devices by its richer UI and a touch
+
Stax Stax is the most premium Ledger device which, in a programmatic point
+of view, mostly differs from previous devices by its richer UI and a touch
screen, justifying the usage of the new graphic library, NBGL .
Use Case In the Stax SDK, a Use Case refers to a pre-designed
diff --git a/index.html b/index.html
index d9cc3619..b2d25ff0 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
- The Ragger framework — Ragger 1.17.0 documentation
+ The Ragger framework — Ragger 1.17.1.dev10 documentation
@@ -94,7 +94,7 @@
The Ragger framework
Ragger
is a Python framework which aims at simplifying the test and overall
automatic manipulation of applications running on Ledger devices: NanoS, NanoS+,
-NanoX and Stax (sometimes referred as Fatstacks in the sources).
+NanoX, Stax and Flex.
It is composed of a tiny wrapper around other Ledger’s libraries which abstract
and/or provide access to Ledger’s cold wallet, and higher-level classes allowing
to develop complex behaviors on devices.
@@ -110,7 +110,7 @@ Architecture
diff --git a/installation.html b/installation.html
index 706db8c2..1e231ce9 100644
--- a/installation.html
+++ b/installation.html
@@ -3,7 +3,7 @@
- Installation — Ragger 1.17.0 documentation
+ Installation — Ragger 1.17.1.dev10 documentation
diff --git a/objects.inv b/objects.inv
index 87d5490e..a437388c 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/rationale.html b/rationale.html
index f874d816..7277145b 100644
--- a/rationale.html
+++ b/rationale.html
@@ -3,7 +3,7 @@
- Rationale — Ragger 1.17.0 documentation
+ Rationale — Ragger 1.17.1.dev10 documentation
@@ -63,7 +63,7 @@
Abstracting the backends
Easing the development of application clients
@@ -132,7 +132,7 @@ Abstracting the backends