From bad97eb1f9d92124daf2c02d860f973dccb0a6e3 Mon Sep 17 00:00:00 2001 From: lly Date: Mon, 2 Mar 2020 15:58:39 +0800 Subject: [PATCH] ble_mesh: Add an API to get Provisioner node table entry --- .../api/core/esp_ble_mesh_networking_api.c | 5 +++++ .../api/core/include/esp_ble_mesh_networking_api.h | 13 +++++++++++++ components/bt/esp_ble_mesh/btc/btc_ble_mesh_prov.c | 5 +++++ .../bt/esp_ble_mesh/btc/include/btc_ble_mesh_prov.h | 2 ++ .../bt/esp_ble_mesh/mesh_core/provisioner_main.c | 5 +++++ .../bt/esp_ble_mesh/mesh_core/provisioner_main.h | 2 ++ 6 files changed, 32 insertions(+) diff --git a/components/bt/esp_ble_mesh/api/core/esp_ble_mesh_networking_api.c b/components/bt/esp_ble_mesh/api/core/esp_ble_mesh_networking_api.c index b5f47eb373..b21cc9bafe 100644 --- a/components/bt/esp_ble_mesh/api/core/esp_ble_mesh_networking_api.c +++ b/components/bt/esp_ble_mesh/api/core/esp_ble_mesh_networking_api.c @@ -500,6 +500,11 @@ uint16_t esp_ble_mesh_provisioner_get_prov_node_count(void) return btc_ble_mesh_provisioner_get_prov_node_count(); } +esp_ble_mesh_node_t **esp_ble_mesh_provisioner_get_node_list_entry(void) +{ + return btc_ble_mesh_provisioner_get_node_list_entry(); +} + #if CONFIG_BLE_MESH_USE_MULTIPLE_NAMESPACE esp_err_t esp_ble_mesh_provisioner_open_settings_with_index(uint8_t index) { diff --git a/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_networking_api.h b/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_networking_api.h index d72cf258d7..63f71cbd7d 100644 --- a/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_networking_api.h +++ b/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_networking_api.h @@ -370,6 +370,19 @@ const uint8_t *esp_ble_mesh_provisioner_get_local_net_key(uint16_t net_idx); */ uint16_t esp_ble_mesh_provisioner_get_prov_node_count(void); +/** + * @brief This function is called by Provisioner to get the entry of the table of nodes. + * + * @note After invoking the function to get the entry of nodes, users can use the "for" + * loop combined with the macro CONFIG_BLE_MESH_MAX_PROV_NODES to get each node's + * information. But before trying to read the node's information, users need to + * check if the node exists, i.e. if the *(esp_ble_mesh_node_t **node) is NULL. + * + * @return Pointer to the start of nodes table. + * + */ +esp_ble_mesh_node_t **esp_ble_mesh_provisioner_get_node_list_entry(void); + /** * @brief This function is called by Provisioner to open the corresponding * flash section for storing mesh provisioning information. 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 ffa29f7b01..708efe8a9e 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 @@ -788,6 +788,11 @@ u16_t btc_ble_mesh_provisioner_get_prov_node_count(void) return bt_mesh_provisioner_get_prov_node_count(); } +esp_ble_mesh_node_t **btc_ble_mesh_provisioner_get_node_list_entry(void) +{ + return (esp_ble_mesh_node_t **)bt_mesh_provisioner_get_node_list_entry(); +} + #if CONFIG_BLE_MESH_USE_MULTIPLE_NAMESPACE const char *btc_ble_mesh_provisioner_get_settings_user_id(uint8_t index) { diff --git a/components/bt/esp_ble_mesh/btc/include/btc_ble_mesh_prov.h b/components/bt/esp_ble_mesh/btc/include/btc_ble_mesh_prov.h index f5f9abed0e..d570a1b558 100644 --- a/components/bt/esp_ble_mesh/btc/include/btc_ble_mesh_prov.h +++ b/components/bt/esp_ble_mesh/btc/include/btc_ble_mesh_prov.h @@ -346,6 +346,8 @@ const esp_ble_mesh_comp_t *btc_ble_mesh_comp_get(void); u16_t btc_ble_mesh_provisioner_get_prov_node_count(void); +esp_ble_mesh_node_t **btc_ble_mesh_provisioner_get_node_list_entry(void); + const char *btc_ble_mesh_provisioner_get_settings_user_id(uint8_t index); uint8_t btc_ble_mesh_provisioner_get_settings_index(const char *user_id); uint8_t btc_ble_mesh_provisioner_get_free_settings_user_id_count(void); 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 f981025eaa..a058d81616 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.c @@ -825,6 +825,11 @@ int bt_mesh_provisioner_store_node_comp_data(u16_t addr, const u8_t *data, u16_t return 0; } +struct bt_mesh_node **bt_mesh_provisioner_get_node_list_entry(void) +{ + return mesh_nodes; +} + /* Provisioner DevKey, NetKey and AppKey related functions */ const u8_t *bt_mesh_provisioner_net_key_get(u16_t net_idx) 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 21a941b4ae..8b72ad659e 100644 --- a/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h +++ b/components/bt/esp_ble_mesh/mesh_core/provisioner_main.h @@ -93,6 +93,8 @@ u16_t bt_mesh_provisioner_get_node_index(const char *name); int bt_mesh_provisioner_store_node_comp_data(u16_t addr, const u8_t *data, u16_t length); +struct bt_mesh_node **bt_mesh_provisioner_get_node_list_entry(void); + const u8_t *bt_mesh_provisioner_net_key_get(u16_t net_idx); struct bt_mesh_subnet *bt_mesh_provisioner_subnet_get(u16_t net_idx);