mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 23:48:12 +00:00
TT ble handling
This commit is contained in:
parent
90765e6fae
commit
70465eb084
@ -1682,6 +1682,9 @@ pub static mp_module_trezorui2: Module = obj_module! {
|
|||||||
/// def usb_event(self, connected: bool) -> T | None:
|
/// def usb_event(self, connected: bool) -> T | None:
|
||||||
/// """Receive a USB connect/disconnect event."""
|
/// """Receive a USB connect/disconnect event."""
|
||||||
///
|
///
|
||||||
|
/// def ble_event(self, event: int, data: bytes) -> T | None:
|
||||||
|
/// """Receive a BLE events."""
|
||||||
|
///
|
||||||
/// def timer(self, token: int) -> T | None:
|
/// def timer(self, token: int) -> T | None:
|
||||||
/// """Callback for the timer set by `attach_timer_fn`.
|
/// """Callback for the timer set by `attach_timer_fn`.
|
||||||
///
|
///
|
||||||
|
@ -1148,6 +1148,8 @@ class LayoutObj(Generic[T]):
|
|||||||
"""Receive a progress event."""
|
"""Receive a progress event."""
|
||||||
def usb_event(self, connected: bool) -> T | None:
|
def usb_event(self, connected: bool) -> T | None:
|
||||||
"""Receive a USB connect/disconnect event."""
|
"""Receive a USB connect/disconnect event."""
|
||||||
|
def ble_event(self, event: int, data: bytes) -> T | None:
|
||||||
|
"""Receive a BLE events."""
|
||||||
def timer(self, token: int) -> T | None:
|
def timer(self, token: int) -> T | None:
|
||||||
"""Callback for the timer set by `attach_timer_fn`.
|
"""Callback for the timer set by `attach_timer_fn`.
|
||||||
This function should be called by the executor after the corresponding
|
This function should be called by the executor after the corresponding
|
||||||
|
@ -77,6 +77,7 @@ class RustLayout(LayoutParentType[T]):
|
|||||||
self.handle_click_signal(),
|
self.handle_click_signal(),
|
||||||
self.handle_result_signal(),
|
self.handle_result_signal(),
|
||||||
self.handle_usb(context.get_context()),
|
self.handle_usb(context.get_context()),
|
||||||
|
self.handle_ble_events(),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
@ -85,6 +86,7 @@ class RustLayout(LayoutParentType[T]):
|
|||||||
self.handle_swipe(),
|
self.handle_swipe(),
|
||||||
self.handle_click_signal(),
|
self.handle_click_signal(),
|
||||||
self.handle_result_signal(),
|
self.handle_result_signal(),
|
||||||
|
self.handle_ble_events(),
|
||||||
)
|
)
|
||||||
|
|
||||||
async def handle_result_signal(self) -> None:
|
async def handle_result_signal(self) -> None:
|
||||||
@ -189,11 +191,13 @@ class RustLayout(LayoutParentType[T]):
|
|||||||
self.handle_input_and_rendering(),
|
self.handle_input_and_rendering(),
|
||||||
self.handle_timers(),
|
self.handle_timers(),
|
||||||
self.handle_usb(context.get_context()),
|
self.handle_usb(context.get_context()),
|
||||||
|
self.handle_ble_events(),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
self.handle_input_and_rendering(),
|
self.handle_input_and_rendering(),
|
||||||
self.handle_timers(),
|
self.handle_timers(),
|
||||||
|
self.handle_ble_events(),
|
||||||
)
|
)
|
||||||
|
|
||||||
def _first_paint(self) -> None:
|
def _first_paint(self) -> None:
|
||||||
@ -244,6 +248,16 @@ class RustLayout(LayoutParentType[T]):
|
|||||||
raise ui.Result(msg)
|
raise ui.Result(msg)
|
||||||
self._paint()
|
self._paint()
|
||||||
|
|
||||||
|
def handle_ble_events(self) -> loop.Task:
|
||||||
|
input = loop.wait(io.BLE_CHECK)
|
||||||
|
while True:
|
||||||
|
# Using `yield` instead of `await` to avoid allocations.
|
||||||
|
(event, data) = yield input
|
||||||
|
msg = self.layout.ble_event(event, data)
|
||||||
|
if msg is not None:
|
||||||
|
raise ui.Result(msg)
|
||||||
|
self._paint()
|
||||||
|
|
||||||
def handle_timers(self) -> loop.Task:
|
def handle_timers(self) -> loop.Task:
|
||||||
while True:
|
while True:
|
||||||
# Using `yield` instead of `await` to avoid allocations.
|
# Using `yield` instead of `await` to avoid allocations.
|
||||||
|
@ -36,6 +36,7 @@ class HomescreenBase(RustLayout):
|
|||||||
self.handle_input_and_rendering(),
|
self.handle_input_and_rendering(),
|
||||||
self.handle_timers(),
|
self.handle_timers(),
|
||||||
self.handle_click_signal(), # so we can receive debug events
|
self.handle_click_signal(), # so we can receive debug events
|
||||||
|
self.handle_ble_events(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user