From 9c98a8d645bb10201b9ccc902ab2e62e14d0da5c Mon Sep 17 00:00:00 2001 From: lly Date: Mon, 2 Sep 2019 14:17:47 +0800 Subject: [PATCH] ble_mesh: fix postponing storage deadline indefinitely --- components/bt/esp_ble_mesh/mesh_core/settings.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/bt/esp_ble_mesh/mesh_core/settings.c b/components/bt/esp_ble_mesh/mesh_core/settings.c index 0a6a8b9c25..491782f400 100644 --- a/components/bt/esp_ble_mesh/mesh_core/settings.c +++ b/components/bt/esp_ble_mesh/mesh_core/settings.c @@ -846,7 +846,7 @@ int settings_core_commit(void) static void schedule_store(int flag) { - s32_t timeout; + s32_t timeout, remaining; bt_mesh_atomic_set_bit(bt_mesh.flags, flag); @@ -861,6 +861,12 @@ static void schedule_store(int flag) timeout = K_SECONDS(CONFIG_BLE_MESH_STORE_TIMEOUT); } + remaining = k_delayed_work_remaining_get(&pending_store); + if (remaining && remaining < timeout) { + BT_DBG("Not rescheduling due to existing earlier deadline"); + return; + } + BT_DBG("Waiting %d seconds", timeout / MSEC_PER_SEC); if (timeout) {