diff --git a/components/bt/esp_ble_mesh/btc/btc_ble_mesh_prov.c b/components/bt/esp_ble_mesh/btc/btc_ble_mesh_prov.c index 935303bceb..cc8bc7e496 100644 --- a/components/bt/esp_ble_mesh/btc/btc_ble_mesh_prov.c +++ b/components/bt/esp_ble_mesh/btc/btc_ble_mesh_prov.c @@ -1782,7 +1782,7 @@ void btc_ble_mesh_prov_call_handler(btc_msg_t *msg) act = ESP_BLE_MESH_PROVISIONER_DELETE_NODE_WITH_ADDR_COMP_EVT; param.provisioner_delete_node_with_addr_comp.unicast_addr = arg->delete_node_with_addr.unicast_addr; param.provisioner_delete_node_with_addr_comp.err_code = - bt_mesh_provisioner_delete_node_with_addr(arg->delete_node_with_addr.unicast_addr); + bt_mesh_provisioner_delete_node_with_node_addr(arg->delete_node_with_addr.unicast_addr); break; #endif /* CONFIG_BLE_MESH_PROVISIONER */ #if CONFIG_BLE_MESH_FAST_PROV 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 a7177dd552..f84fcd4915 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c @@ -424,41 +424,6 @@ static struct bt_mesh_node *provisioner_find_node_with_uuid(const u8_t uuid[16], return NULL; } -bool bt_mesh_provisioner_find_node_with_uuid(const u8_t uuid[16], bool reset) -{ - struct bt_mesh_node *node = NULL; - u16_t index = 0U; - - node = provisioner_find_node_with_uuid(uuid, &index); - if (!node) { - return false; - } - - if (reset) { - provisioner_remove_node(index, true); - } - return true; -} - -bool bt_mesh_provisioner_find_node_with_addr(const bt_mesh_addr_t *addr, bool reset) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(mesh_nodes); i++) { - if (mesh_nodes[i]) { - if (!memcmp(mesh_nodes[i]->addr, addr->val, BLE_MESH_ADDR_LEN) && - mesh_nodes[i]->addr_type == addr->type) { - if (reset) { - provisioner_remove_node(i, true); - } - return true; - } - } - } - - return false; -} - int bt_mesh_provisioner_remove_node(const u8_t uuid[16]) { struct bt_mesh_node *node = NULL; @@ -580,7 +545,7 @@ int bt_mesh_provisioner_delete_node_with_uuid(const u8_t uuid[16]) return 0; } -int bt_mesh_provisioner_delete_node_with_addr(u16_t unicast_addr) +int bt_mesh_provisioner_delete_node_with_node_addr(u16_t unicast_addr) { struct bt_mesh_node *node = NULL; u16_t index = 0U; @@ -595,6 +560,21 @@ int bt_mesh_provisioner_delete_node_with_addr(u16_t unicast_addr) return 0; } +int bt_mesh_provisioner_delete_node_with_dev_addr(const bt_mesh_addr_t *addr) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(mesh_nodes); i++) { + if (mesh_nodes[i] && mesh_nodes[i]->addr_type == addr->type && + !memcmp(mesh_nodes[i]->addr, addr->val, BLE_MESH_ADDR_LEN)) { + return provisioner_remove_node(i, true); + } + } + + BT_WARN("Node not exist, device address %s", bt_hex(addr->val, BLE_MESH_ADDR_LEN)); + return -ENODEV; +} + static int provisioner_check_node_index(u16_t index) { BT_DBG("%s", __func__); diff --git a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h index 51b947e6c8..5b47476fb5 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h @@ -59,10 +59,6 @@ int bt_mesh_provisioner_provision(const bt_mesh_addr_t *addr, const u8_t uuid[16 u16_t unicast_addr, u8_t element_num, u16_t net_idx, u8_t flags, u32_t iv_index, const u8_t dev_key[16], u16_t *index); -bool bt_mesh_provisioner_find_node_with_uuid(const u8_t uuid[16], bool reset); - -bool bt_mesh_provisioner_find_node_with_addr(const bt_mesh_addr_t *addr, bool reset); - int bt_mesh_provisioner_remove_node(const u8_t uuid[16]); int bt_mesh_provisioner_restore_node_name(u16_t addr, const char *name); @@ -75,7 +71,9 @@ struct bt_mesh_node *bt_mesh_provisioner_get_node_with_addr(u16_t unicast_addr); int bt_mesh_provisioner_delete_node_with_uuid(const u8_t uuid[16]); -int bt_mesh_provisioner_delete_node_with_addr(u16_t unicast_addr); +int bt_mesh_provisioner_delete_node_with_node_addr(u16_t unicast_addr); + +int bt_mesh_provisioner_delete_node_with_dev_addr(const bt_mesh_addr_t *addr); int bt_mesh_provisioner_set_node_name(u16_t index, const char *name); diff --git a/components/bt/esp_ble_mesh/mesh_core/provisioner_prov.c b/components/bt/esp_ble_mesh/mesh_core/provisioner_prov.c index c5cef0b349..7c930965b3 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_prov.c +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_prov.c @@ -552,7 +552,7 @@ static bool is_unprov_dev_being_provision(const u8_t uuid[16]) * Unprovisioned Device Beacon when Transaction ACK for Provisioning Complete * is received). So in Fast Provisioning the Provisioner should ignore this. */ - if (bt_mesh_provisioner_find_node_with_uuid(uuid, false)) { + if (bt_mesh_provisioner_get_node_with_uuid(uuid)) { BT_WARN("Device has already been provisioned"); return true; } @@ -625,7 +625,7 @@ static int provisioner_check_unprov_dev_info(const u8_t uuid[16], bt_mesh_prov_b } /* Check if the device has already been provisioned */ - if (bt_mesh_provisioner_find_node_with_uuid(uuid, false)) { + if (bt_mesh_provisioner_get_node_with_uuid(uuid)) { BT_INFO("Provisioned before, start to provision again"); return 0; } @@ -1063,15 +1063,11 @@ int bt_mesh_provisioner_delete_device(struct bt_mesh_device_delete *del_dev) /* Third: find if the device is been provisioned */ if (addr_cmp && (del_dev->addr_type <= BLE_MESH_ADDR_RANDOM)) { - if (bt_mesh_provisioner_find_node_with_addr(&del_addr, true)) { - return 0; - } + bt_mesh_provisioner_delete_node_with_dev_addr(&del_addr); } if (uuid_cmp) { - if (bt_mesh_provisioner_find_node_with_uuid(del_dev->uuid, true)) { - return 0; - } + bt_mesh_provisioner_delete_node_with_uuid(del_dev->uuid); } return 0;