esp_wifi: fix WiFi deinit memory leak

This commit is contained in:
liu zhifu
2019-10-24 17:11:30 +08:00
parent 9afba2abf5
commit b09624e89a
5 changed files with 44 additions and 2 deletions

View File

@@ -102,6 +102,23 @@ typedef enum {
*/
esp_err_t esp_wifi_init_internal(const wifi_init_config_t *config);
/**
* @brief Deinitialize Wi-Fi Driver
* Free resource for WiFi driver, such as WiFi control structure, RX/TX buffer,
* WiFi NVS structure among others.
*
* For the most part, you need not call this function directly. It gets called
* from esp_wifi_deinit().
*
* This function may be called, if you call esp_wifi_init_internal to initialize
* WiFi driver.
*
* @return
* - ESP_OK: succeed
* - others: refer to error code esp_err.h
*/
esp_err_t esp_wifi_deinit_internal(void);
/**
* @brief get whether the wifi driver is allowed to transmit data or not
*

View File

@@ -98,6 +98,21 @@ static void esp_wifi_set_debug_log(void)
}
esp_err_t esp_wifi_deinit(void)
{
esp_err_t err = ESP_OK;
esp_supplicant_deinit();
err = esp_wifi_deinit_internal();
if (err != ESP_OK) {
ESP_LOGE(TAG, "Failed to deinit Wi-Fi driver (0x%x)", err);
}
tcpip_adapter_clear_default_wifi_handlers();
return err;
}
esp_err_t esp_wifi_init(const wifi_init_config_t *config)
{
#ifdef CONFIG_PM_ENABLE