Merge branch 'bugfix/blufi_add_host_deinit_api' into 'master'

Blufi: Added an API to stop Bluetooth / Blufi profile

See merge request espressif/esp-idf!20360
This commit is contained in:
Wang Meng Yang 2022-10-11 14:13:41 +08:00
commit 6c5c595d6f
4 changed files with 59 additions and 3 deletions

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -40,6 +40,7 @@ void esp_blufi_gatt_svr_register_cb(struct ble_gatt_register_ctxt *ctxt, void *a
/* Initialise gatt server */
int esp_blufi_gatt_svr_init(void);
void esp_blufi_btc_init(void);
void esp_blufi_btc_deinit(void);
#endif
#ifdef CONFIG_BT_BLUEDROID_ENABLED

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -466,4 +466,8 @@ void esp_blufi_btc_init(void)
assert(rc == 0);
}
void esp_blufi_btc_deinit(void)
{
btc_deinit();
}
#endif

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@ -21,3 +21,4 @@ void blufi_security_deinit(void);
int esp_blufi_gap_register_callback(void);
esp_err_t esp_blufi_host_init(void);
esp_err_t esp_blufi_host_and_cb_init(esp_blufi_callbacks_t *callbacks);
esp_err_t esp_blufi_host_deinit(void);

View File

@ -47,6 +47,37 @@ esp_err_t esp_blufi_host_init(void)
}
esp_err_t esp_blufi_host_deinit(void)
{
int ret;
ret = esp_blufi_profile_deinit();
if(ret != ESP_OK) {
return ret;
}
ret = esp_bluedroid_disable();
if (ret) {
BLUFI_ERROR("%s deinit bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
ret = esp_bluedroid_deinit();
if (ret) {
BLUFI_ERROR("%s deinit bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
ESP_ERROR_CHECK(esp_bt_controller_disable());
ret = esp_bt_controller_deinit();
if (ret) {
BLUFI_ERROR("%s deinit bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
return ESP_OK;
}
esp_err_t esp_blufi_gap_register_callback(void)
{
int rc;
@ -161,6 +192,25 @@ esp_err_t esp_blufi_host_init(void)
return ESP_OK;
}
esp_err_t esp_blufi_host_deinit(void)
{
esp_err_t ret = ESP_OK;
ret = esp_blufi_profile_deinit();
if(ret != ESP_OK) {
return ret;
}
esp_blufi_btc_deinit();
ret = nimble_port_stop();
if (ret == 0) {
nimble_port_deinit();
}
return ret;
}
esp_err_t esp_blufi_gap_register_callback(void)
{
return ESP_OK;