diff --git a/core/embed/trezorhal/ble/comm.c b/core/embed/trezorhal/ble/comm.c index fd710d3c8..85afeea11 100644 --- a/core/embed/trezorhal/ble/comm.c +++ b/core/embed/trezorhal/ble/comm.c @@ -222,7 +222,7 @@ uint32_t ble_int_comm_poll(void) { } return 0; - } else if (init_byte == INTERNAL_MESSAGE || init_byte == EXTERNAL_MESSAGE) { + } else if (init_byte == INTERNAL_MESSAGE) { last_init_byte = init_byte; } else { flush_line(); diff --git a/core/mocks/generated/trezorio/__init__.pyi b/core/mocks/generated/trezorio/__init__.pyi index 0acbe14c9..c0b42a5d7 100644 --- a/core/mocks/generated/trezorio/__init__.pyi +++ b/core/mocks/generated/trezorio/__init__.pyi @@ -203,4 +203,5 @@ BUTTON_RELEASED: int # button up event BUTTON_LEFT: int # button number of left button BUTTON_RIGHT: int # button number of right button USB_CHECK: int # interface id for check of USB data connection +BLE_CHECK: int # interface id for check of BLE data connection WireInterface = Union[HID, WebUSB, BleInterface] diff --git a/core/src/trezor/ui/layouts/tt_v2/homescreen.py b/core/src/trezor/ui/layouts/tt_v2/homescreen.py index 16478303b..6821fd017 100644 --- a/core/src/trezor/ui/layouts/tt_v2/homescreen.py +++ b/core/src/trezor/ui/layouts/tt_v2/homescreen.py @@ -75,8 +75,22 @@ class Homescreen(HomescreenBase): self.layout.paint() ui.refresh() + async def ble_checker_task(self) -> None: + from trezor import io, loop + + blecheck = loop.wait(io.BLE_CHECK) + while True: + is_connected = await blecheck + self.layout.usb_event(is_connected) + self.layout.paint() + ui.refresh() + def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: - return super().create_tasks() + (self.usb_checker_task(),) + return ( + super().create_tasks() + + (self.usb_checker_task(),) + + (self.ble_checker_task(),) + ) class Lockscreen(HomescreenBase):