From cfd512c5b1ffb5bda60e29db4775653846e043e2 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 21:24:37 +0200 Subject: [PATCH 1/2] fix sleep timer when BLE gets disconnected --- firmware/application/src/ble_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/application/src/ble_main.c b/firmware/application/src/ble_main.c index 424716b..bcde7e4 100644 --- a/firmware/application/src/ble_main.c +++ b/firmware/application/src/ble_main.c @@ -411,12 +411,12 @@ static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) break; case BLE_GAP_EVT_DISCONNECTED: - sleep_timer_start(SLEEP_DELAY_MS_BLE_DISCONNECTED); - NRF_LOG_INFO("Disconnected"); // LED indication will be changed when advertising starts. m_conn_handle = BLE_CONN_HANDLE_INVALID; g_is_ble_connected = false; + // call sleep_timer_start *after* unsetting g_is_ble_connected + sleep_timer_start(SLEEP_DELAY_MS_BLE_DISCONNECTED); break; case BLE_GAP_EVT_PHY_UPDATE_REQUEST: From a5670bbcba2ce8844707343d50c372a2057856e9 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 21:53:12 +0200 Subject: [PATCH 2/2] add some comments to avoid future similar bugs when shuffling around code --- firmware/application/src/rfid/nfctag/hf/nfc_14a.c | 1 + firmware/application/src/rfid/nfctag/lf/lf_tag_em.c | 1 + 2 files changed, 2 insertions(+) diff --git a/firmware/application/src/rfid/nfctag/hf/nfc_14a.c b/firmware/application/src/rfid/nfctag/hf/nfc_14a.c index 3052af2..1d3e84e 100644 --- a/firmware/application/src/rfid/nfctag/hf/nfc_14a.c +++ b/firmware/application/src/rfid/nfctag/hf/nfc_14a.c @@ -614,6 +614,7 @@ void nfc_tag_14a_event_callback(nrfx_nfct_evt_t const *p_event) { } case NRFX_NFCT_EVT_FIELD_LOST: { g_is_tag_emulating = false; + // call sleep_timer_start *after* unsetting g_is_tag_emulating sleep_timer_start(SLEEP_DELAY_MS_FIELD_NFC_LOST); TAG_FIELD_LED_OFF() diff --git a/firmware/application/src/rfid/nfctag/lf/lf_tag_em.c b/firmware/application/src/rfid/nfctag/lf/lf_tag_em.c index 8163425..cf8e785 100644 --- a/firmware/application/src/rfid/nfctag/lf/lf_tag_em.c +++ b/firmware/application/src/rfid/nfctag/lf/lf_tag_em.c @@ -170,6 +170,7 @@ void timer_ce_handler(nrf_timer_event_t event_type, void* p_context) { m_is_lf_emulating = false; TAG_FIELD_LED_OFF() // 确保关闭LF的场状态的指示灯 NRF_LPCOMP->INTENSET = LPCOMP_INTENCLR_CROSS_Msk | LPCOMP_INTENCLR_UP_Msk | LPCOMP_INTENCLR_DOWN_Msk | LPCOMP_INTENCLR_READY_Msk; + // call sleep_timer_start *after* unsetting g_is_tag_emulating sleep_timer_start(SLEEP_DELAY_MS_FIELD_125KHZ_LOST); // 启动进入休眠的定时器 NRF_LOG_INFO("LF FIELD LOST"); }