From a71fe4a66e64e28bafa9794629402f2e412f547b Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Fri, 9 May 2025 14:27:05 +0200 Subject: [PATCH] fix(core): fix nrf start/stop, service listener registration [no changelog] --- core/embed/io/nrf/stm32u5/nrf.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/embed/io/nrf/stm32u5/nrf.c b/core/embed/io/nrf/stm32u5/nrf.c index 83df0187da..e5ccc0b27d 100644 --- a/core/embed/io/nrf/stm32u5/nrf.c +++ b/core/embed/io/nrf/stm32u5/nrf.c @@ -106,6 +106,11 @@ void nrf_start(void) { tsqueue_reset(&drv->tx_queue); drv->comm_running = true; + + if (HAL_GPIO_ReadPin(NRF_IN_SPI_REQUEST_PORT, NRF_IN_SPI_REQUEST_PIN) == + GPIO_PIN_SET) { + nrf_prepare_spi_data(drv); + } } static void nrf_complete_current_request(nrf_driver_t *drv, @@ -336,10 +341,11 @@ void nrf_init(void) { HAL_SPI_Init(&drv->spi); drv->tx_request_id = -1; - nrf_register_listener(NRF_SERVICE_MANAGEMENT, nrf_management_rx_cb); drv->initialized = true; + nrf_register_listener(NRF_SERVICE_MANAGEMENT, nrf_management_rx_cb); + drv->timer = systimer_create(nrf_timer_callback, drv); nrf_start(); @@ -802,7 +808,7 @@ void NRF_EXTI_INTERRUPT_HANDLER(void) { } #endif - if (drv->initialized) { + if (drv->initialized && drv->comm_running) { if (HAL_GPIO_ReadPin(NRF_OUT_SPI_READY_PORT, NRF_OUT_SPI_READY_PIN) == 0) { nrf_prepare_spi_data(drv); }