diff --git a/main/boards/common/blufi.cpp b/main/boards/common/blufi.cpp index bf4ab6f3..26c42249 100644 --- a/main/boards/common/blufi.cpp +++ b/main/boards/common/blufi.cpp @@ -114,6 +114,7 @@ Blufi::~Blufi() { esp_err_t Blufi::init() { esp_err_t ret; + inited_ = true; m_provisioned = false; m_deinited = false; @@ -136,21 +137,24 @@ esp_err_t Blufi::init() { } esp_err_t Blufi::deinit() { - if (m_deinited) { - return ESP_OK; - } - m_deinited = true; - esp_err_t ret; - ret = _host_deinit(); - if (ret) { - ESP_LOGE(BLUFI_TAG, "Host deinit failed: %s", esp_err_to_name(ret)); - } + esp_err_t ret = ESP_OK; + + if (inited_) { + if (m_deinited) { + return ESP_OK; + } + m_deinited = true; + ret = _host_deinit(); + if (ret) { + ESP_LOGE(BLUFI_TAG, "Host deinit failed: %s", esp_err_to_name(ret)); + } #if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED - ret = _controller_deinit(); - if (ret) { - ESP_LOGE(BLUFI_TAG, "Controller deinit failed: %s", esp_err_to_name(ret)); - } + ret = _controller_deinit(); + if (ret) { + ESP_LOGE(BLUFI_TAG, "Controller deinit failed: %s", esp_err_to_name(ret)); + } #endif + } return ret; } diff --git a/main/boards/common/blufi.h b/main/boards/common/blufi.h index 606769b5..39b84116 100644 --- a/main/boards/common/blufi.h +++ b/main/boards/common/blufi.h @@ -34,6 +34,8 @@ public: Blufi &operator=(const Blufi &) = delete; private: + bool inited_ = false; + Blufi(); ~Blufi();