diff --git a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c index 416fbd3f8..9a2899ae1 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c @@ -165,7 +165,7 @@ int bt_mesh_provisioner_deinit(bool erase) for (i = 0; i < CONFIG_BLE_MESH_PROVISIONER_SUBNET_COUNT; i++) { if (bt_mesh.p_sub[i]) { if (erase && IS_ENABLED(CONFIG_BLE_MESH_SETTINGS)) { - bt_mesh_clear_p_subnet(bt_mesh.p_sub[i]); + bt_mesh_clear_p_subnet(bt_mesh.p_sub[i]->net_idx); } bt_mesh_free(bt_mesh.p_sub[i]); bt_mesh.p_sub[i] = NULL; @@ -175,7 +175,7 @@ int bt_mesh_provisioner_deinit(bool erase) for (i = 0; i < CONFIG_BLE_MESH_PROVISIONER_APP_KEY_COUNT; i++) { if (bt_mesh.p_app_keys[i]) { if (erase && IS_ENABLED(CONFIG_BLE_MESH_SETTINGS)) { - bt_mesh_clear_p_app_key(bt_mesh.p_app_keys[i]); + bt_mesh_clear_p_app_key(bt_mesh.p_app_keys[i]->app_idx); } bt_mesh_free(bt_mesh.p_app_keys[i]); bt_mesh.p_app_keys[i] = NULL; @@ -1198,7 +1198,7 @@ int bt_mesh_provisioner_local_app_key_delete(u16_t net_idx, u16_t app_idx) bt_mesh_model_foreach(_model_unbind, &app_idx); if (IS_ENABLED(CONFIG_BLE_MESH_SETTINGS)) { - bt_mesh_clear_p_app_key(key); + bt_mesh_clear_p_app_key(app_idx); } bt_mesh_free(bt_mesh.p_app_keys[i]); @@ -1391,7 +1391,7 @@ int bt_mesh_provisioner_local_net_key_delete(u16_t net_idx) } if (IS_ENABLED(CONFIG_BLE_MESH_SETTINGS)) { - bt_mesh_clear_p_subnet(sub); + bt_mesh_clear_p_subnet(net_idx); } bt_mesh_free(bt_mesh.p_sub[i]); diff --git a/components/bt/esp_ble_mesh/mesh_core/settings.c b/components/bt/esp_ble_mesh/mesh_core/settings.c index f3b711d93..21cc5cc67 100644 --- a/components/bt/esp_ble_mesh/mesh_core/settings.c +++ b/components/bt/esp_ble_mesh/mesh_core/settings.c @@ -2302,34 +2302,6 @@ void bt_mesh_clear_prov_info(void) bt_mesh_erase_core_settings("mesh/p_prov"); } -static void clear_p_net_key(u16_t net_idx) -{ - char name[16] = {'\0'}; - int err = 0; - - sprintf(name, "mesh/pnk/%04x", net_idx); - bt_mesh_erase_core_settings(name); - - err = bt_mesh_remove_core_settings_item("mesh/p_netkey", net_idx); - if (err) { - BT_ERR("Failed to remove 0x%03x from mesh/p_netkey", net_idx); - } -} - -static void clear_p_app_key(u16_t app_idx) -{ - char name[16] = {'\0'}; - int err = 0; - - sprintf(name, "mesh/pak/%04x", app_idx); - bt_mesh_erase_core_settings(name); - - err = bt_mesh_remove_core_settings_item("mesh/p_appkey", app_idx); - if (err) { - BT_ERR("Failed to remove 0x%03x from mesh/p_appkey", app_idx); - } -} - static void store_p_net_key(struct bt_mesh_subnet *sub) { struct net_key_val key = {0}; @@ -2432,28 +2404,36 @@ void bt_mesh_store_p_app_key(struct bt_mesh_app_key *key) store_p_app_key(key); } -void bt_mesh_clear_p_subnet(struct bt_mesh_subnet *sub) +void bt_mesh_clear_p_subnet(u16_t net_idx) { - if (sub == NULL) { - BT_ERR("Invalid subnet"); - return; + char name[16] = {'\0'}; + int err = 0; + + BT_DBG("NetKeyIndex 0x%03x", net_idx); + + sprintf(name, "mesh/pnk/%04x", net_idx); + bt_mesh_erase_core_settings(name); + + err = bt_mesh_remove_core_settings_item("mesh/p_netkey", net_idx); + if (err) { + BT_ERR("Failed to remove 0x%04x from mesh/p_netkey", net_idx); } - - BT_DBG("NetKeyIndex 0x%03x", sub->net_idx); - - clear_p_net_key(sub->net_idx); } -void bt_mesh_clear_p_app_key(struct bt_mesh_app_key *key) +void bt_mesh_clear_p_app_key(u16_t app_idx) { - if (key == NULL) { - BT_ERR("Invalid AppKey"); - return; + char name[16] = {'\0'}; + int err = 0; + + BT_DBG("AppKeyIndex 0x%03x", app_idx); + + sprintf(name, "mesh/pak/%04x", app_idx); + bt_mesh_erase_core_settings(name); + + err = bt_mesh_remove_core_settings_item("mesh/p_appkey", app_idx); + if (err) { + BT_ERR("Failed to remove 0x%04x from mesh/p_appkey", app_idx); } - - BT_DBG("AppKeyIndex 0x%03x", key->app_idx); - - clear_p_app_key(key->app_idx); } void bt_mesh_clear_rpl_single(u16_t src) diff --git a/components/bt/esp_ble_mesh/mesh_core/settings.h b/components/bt/esp_ble_mesh/mesh_core/settings.h index b889e97ea..85a7d93c0 100644 --- a/components/bt/esp_ble_mesh/mesh_core/settings.h +++ b/components/bt/esp_ble_mesh/mesh_core/settings.h @@ -55,8 +55,8 @@ void bt_mesh_store_p_app_idx(void); void bt_mesh_clear_p_app_idx(void); void bt_mesh_store_p_subnet(struct bt_mesh_subnet *sub); void bt_mesh_store_p_app_key(struct bt_mesh_app_key *key); -void bt_mesh_clear_p_subnet(struct bt_mesh_subnet *sub); -void bt_mesh_clear_p_app_key(struct bt_mesh_app_key *key); +void bt_mesh_clear_p_subnet(u16_t net_idx); +void bt_mesh_clear_p_app_key(u16_t app_idx); void bt_mesh_clear_rpl_single(u16_t src); void bt_mesh_store_node_info(struct bt_mesh_node *node); void bt_mesh_clear_node_info(u16_t unicast_addr);