Răsfoiți Sursa

ble_mesh: stack: Use settings_core_erase when deinit

lly 5 ani în urmă
părinte
comite
c0678d65da

+ 1 - 4
components/bt/esp_ble_mesh/mesh_core/main.c

@@ -522,10 +522,7 @@ int bt_mesh_deinit(struct bt_mesh_deinit_param *param)
     bt_mesh_comp_unprovision();
 
     if (IS_ENABLED(CONFIG_BLE_MESH_SETTINGS)) {
-        if (param->erase) {
-            bt_mesh_clear_role();
-        }
-        bt_mesh_settings_deinit();
+        bt_mesh_settings_deinit(param->erase);
     }
 
     bt_mesh_timer_deinit();

+ 28 - 17
components/bt/esp_ble_mesh/mesh_core/settings.c

@@ -585,7 +585,8 @@ static int hb_pub_set(const char *name)
         hb_pub->count = 0U;
     }
 
-    BT_INFO("Restored Heartbeat Publication, dst 0x%04x", hb_pub->dst);
+    BT_INFO("Restored Heartbeat Publication, dst 0x%04x, period %d, net_idx 0x%03x",
+            hb_pub->dst, hb_pub->period, hb_pub->net_idx);
 
     return 0;
 }
@@ -618,7 +619,10 @@ static int cfg_set(const char *name)
 
     memcpy(&stored_cfg.cfg, &val, sizeof(val));
     stored_cfg.valid = true;
-    BT_INFO("Restored Configuration State");
+
+    BT_INFO("Restored Configuration, ttl %d, transmit 0x%02x, retransmit 0x%02x",
+            val.default_ttl, val.net_transmit, val.relay_retransmit);
+
     return 0;
 }
 
@@ -641,6 +645,10 @@ static int model_set_bind(bool vnd, struct bt_mesh_model *model, u16_t model_key
         return -EIO;
     }
 
+    if (exist == true) {
+        BT_INFO("Restored Model Bound AppKey, index %s", bt_hex(model->keys, sizeof(model->keys)));
+    }
+
     return 0;
 }
 
@@ -663,6 +671,10 @@ static int model_set_sub(bool vnd, struct bt_mesh_model *model, u16_t model_key)
         return -EIO;
     }
 
+    if (exist == true) {
+        BT_INFO("Restored Model Subscription, address %s", bt_hex(model->groups, sizeof(model->groups)));
+    }
+
     return 0;
 }
 
@@ -1467,7 +1479,7 @@ static void schedule_store(int flag)
         return;
     }
 
-    BT_INFO("Waiting %d seconds", timeout / MSEC_PER_SEC);
+    BT_INFO("Settings store, waiting %d seconds", timeout / MSEC_PER_SEC);
 
     if (timeout) {
         k_delayed_work_submit(&pending_store, timeout);
@@ -2602,35 +2614,34 @@ void bt_mesh_store_node_comp_data(struct bt_mesh_node *node)
 
 int settings_core_init(void)
 {
-    BT_DBG("%s", __func__);
-
     k_delayed_work_init(&pending_store, store_pending);
-
     return 0;
 }
 
-int bt_mesh_settings_init(void)
+int settings_core_deinit(void)
 {
-    BT_DBG("%s", __func__);
-
-    bt_mesh_settings_mutex_new();
-    bt_mesh_settings_init_foreach();
-
+    k_delayed_work_free(&pending_store);
     return 0;
 }
 
-int settings_core_deinit(void)
+int settings_core_erase(void)
 {
-    k_delayed_work_free(&pending_store);
+    /* Erase here must not use the pending_store timer. */
+    bt_mesh_clear_role();
+    return 0;
+}
 
+int bt_mesh_settings_init(void)
+{
+    bt_mesh_settings_mutex_new();
+    bt_mesh_settings_init_foreach();
     return 0;
 }
 
-int bt_mesh_settings_deinit(void)
+int bt_mesh_settings_deinit(bool erase)
 {
-    bt_mesh_settings_deinit_foreach();
+    bt_mesh_settings_deinit_foreach(erase);
     bt_mesh_settings_mutex_free();
-
     return 0;
 }
 

+ 7 - 6
components/bt/esp_ble_mesh/mesh_core/settings.h

@@ -19,11 +19,6 @@ extern "C" {
 #define BLE_MESH_SETTINGS_ROLE_PROV     (BIT(BLE_MESH_PROVISIONER))
 #define BLE_MESH_SETTINGS_ROLE_BIT_MASK (BIT(BLE_MESH_NODE) | BIT(BLE_MESH_PROVISIONER))
 
-int settings_core_init(void);
-int settings_core_load(void);
-int settings_core_commit(void);
-int settings_core_deinit(void);
-
 void bt_mesh_store_role(void);
 void bt_mesh_store_net(void);
 void bt_mesh_store_iv(bool only_duration);
@@ -67,8 +62,14 @@ void bt_mesh_store_node_comp_data(struct bt_mesh_node *node);
 void bt_mesh_settings_lock(void);
 void bt_mesh_settings_unlock(void);
 
+int settings_core_init(void);
+int settings_core_load(void);
+int settings_core_commit(void);
+int settings_core_deinit(void);
+int settings_core_erase(void);
+
 int bt_mesh_settings_init(void);
-int bt_mesh_settings_deinit(void);
+int bt_mesh_settings_deinit(bool erase);
 
 #ifdef __cplusplus
 }

+ 7 - 8
components/bt/esp_ble_mesh/mesh_core/storage/settings_nvs.c

@@ -23,7 +23,6 @@
 
 enum settings_type {
     SETTINGS_CORE,
-    SETTINGS_SERVER,
 };
 
 struct settings_context {
@@ -44,12 +43,7 @@ static struct settings_context settings_ctx[] = {
         .settings_load = settings_core_load,
         .settings_commit = settings_core_commit,
         .settings_deinit = settings_core_deinit,
-    },
-    [SETTINGS_SERVER] = {
-        .nvs_name = "mesh_server",
-        .settings_init = NULL,
-        .settings_load = NULL,
-        .settings_commit = NULL,
+        .settings_erase = settings_core_erase,
     },
 };
 
@@ -98,7 +92,7 @@ void bt_mesh_settings_init_foreach(void)
     }
 }
 
-void bt_mesh_settings_deinit_foreach(void)
+void bt_mesh_settings_deinit_foreach(bool erase)
 {
     int i;
 
@@ -110,6 +104,11 @@ void bt_mesh_settings_deinit_foreach(void)
             continue;
         }
 
+        if (erase && ctx->settings_erase && ctx->settings_erase()) {
+            BT_ERR("Erase settings failed, name %s", ctx->nvs_name);
+            continue;
+        }
+
         nvs_close(ctx->handle);
     }
 

+ 1 - 1
components/bt/esp_ble_mesh/mesh_core/storage/settings_nvs.h

@@ -31,7 +31,7 @@ typedef nvs_handle_t    bt_mesh_nvs_handle_t;
 #define BLE_MESH_GET_MODEL_KEY(a, b)    ((u16_t)(((u16_t)((a) << 8)) | (b)))
 
 void bt_mesh_settings_init_foreach(void);
-void bt_mesh_settings_deinit_foreach(void);
+void bt_mesh_settings_deinit_foreach(bool erase);
 
 int bt_mesh_save_settings(bt_mesh_nvs_handle_t handle, const char *key,
                           const u8_t *val, size_t len);