Merge branch 'feature/wifi_merge_libs_to_master' into 'master'

esp_wifi: merge esp32s2beta WiFi library and fix WiFi deinit memory leak bug

See merge request espressif/esp-idf!6531
This commit is contained in:
Jiang Jiang Jian 2019-10-31 20:56:39 +08:00
commit 02a756015d
12 changed files with 56 additions and 20 deletions

11
.gitmodules vendored
View file

@ -67,14 +67,6 @@
path = examples/build_system/cmake/import_lib/main/lib/tinyxml2
url = ../../leethomason/tinyxml2.git
[submodule "components/esp_wifi/lib_esp32"]
path = components/esp_wifi/lib_esp32
url = ../../espressif/esp32-wifi-lib.git
[submodule "components/esp_wifi/lib_esp32s2beta"]
path = components/esp_wifi/lib_esp32s2beta
url = ../../espressif/esp32-wifi-lib.git
[submodule "components/bt/host/nimble/nimble"]
path = components/bt/host/nimble/nimble
url = ../../espressif/esp-nimble.git
@ -83,3 +75,6 @@
path = components/cbor/tinycbor
url = ../../intel/tinycbor.git
[submodule "components/esp_wifi/lib"]
path = components/esp_wifi/lib
url = ../../espressif/esp32-wifi-lib.git

View file

@ -1,4 +1,4 @@
# Submodules normally added in component.mk, but fully qualified
# paths can be added at this level (we need binary librtc to be
# available to link bootloader).
COMPONENT_SUBMODULES += $(IDF_PATH)/components/esp_wifi/lib_esp32
COMPONENT_SUBMODULES += $(IDF_PATH)/components/esp_wifi/lib

View file

@ -20,7 +20,7 @@ idf_component_register(SRCS "src/coexist.c"
LDFRAGMENTS "${ldfragments}")
idf_build_get_property(build_dir BUILD_DIR)
target_link_libraries(${COMPONENT_LIB} PUBLIC "-L ${CMAKE_CURRENT_SOURCE_DIR}/lib_${idf_target}")
target_link_libraries(${COMPONENT_LIB} PUBLIC "-L ${CMAKE_CURRENT_SOURCE_DIR}/lib/${idf_target}")
if(link_binary_libs)
if(CONFIG_IDF_TARGET_ESP32)
@ -39,7 +39,7 @@ if(link_binary_libs)
foreach(blob ${blobs})
add_library(${blob} STATIC IMPORTED)
set_property(TARGET ${blob} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib_${idf_target}/lib${blob}.a)
set_property(TARGET ${blob} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/${idf_target}/lib${blob}.a)
target_link_libraries(${COMPONENT_LIB} PUBLIC ${blob})
foreach(_blob ${blobs})

View file

@ -7,14 +7,14 @@ COMPONENT_SRCDIRS := src
ifndef CONFIG_ESP32_NO_BLOBS
LIBS := core rtc net80211 pp smartconfig coexist espnow phy mesh
COMPONENT_ADD_LDFLAGS += -L$(COMPONENT_PATH)/lib_$(IDF_TARGET) \
COMPONENT_ADD_LDFLAGS += -L$(COMPONENT_PATH)/lib/$(IDF_TARGET) \
$(addprefix -l,$(LIBS))
COMPONENT_ADD_LDFRAGMENTS += linker.lf
COMPONENT_SUBMODULES += lib_$(IDF_TARGET)
COMPONENT_SUBMODULES += lib
ALL_LIB_FILES := $(patsubst %,$(COMPONENT_PATH)/lib_$(IDF_TARGET)/lib%.a,$(LIBS))
ALL_LIB_FILES := $(patsubst %,$(COMPONENT_PATH)/lib/$(IDF_TARGET)/lib%.a,$(LIBS))
COMPONENT_ADD_LINKER_DEPS += $(ALL_LIB_FILES)
endif

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
*

@ -0,0 +1 @@
Subproject commit d38f75b16016636734eb747e0706c9f62d3d5e93

@ -1 +0,0 @@
Subproject commit 1d830bc2433b6e166d23329c612db6b86aabc59b

@ -1 +0,0 @@
Subproject commit 8ea1c651254560c59f816c9d16aa71322dcd15e5

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

View file

@ -54,6 +54,16 @@ const mesh_crypto_funcs_t g_wifi_default_mesh_crypto_funcs;
*/
esp_err_t esp_supplicant_init(void);
/**
* @brief Supplicant deinitialization
*
* @return
* - ESP_OK : succeed
* - others: failed
*/
esp_err_t esp_supplicant_deinit(void);
/**
* @}
*/

View file

@ -232,7 +232,7 @@ int esp_supplicant_init(void)
return ESP_OK;
}
bool wpa_hook_deinit(void)
int esp_supplicant_deinit(void)
{
return esp_wifi_unregister_wpa_cb_internal();
}

View file

@ -83,9 +83,9 @@ build_template_app:
- export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS}
# Check if there are any stray printf/ets_printf references in WiFi libs
- pushd ../components/esp_wifi/lib_esp32
- test $(xtensa-esp32-elf-nm *.a | grep -w printf | wc -l) -eq 0
- test $(xtensa-esp32-elf-nm *.a | grep -w ets_printf | wc -l) -eq 0
- pushd ../components/esp_wifi/lib
- for dir in esp32 esp32s2beta; do test $(xtensa-esp32-elf-nm $dir/*.a | grep -w printf | wc -l) -eq 0; done;
- for dir in esp32 esp32s2beta; do test $(xtensa-esp32-elf-nm $dir/*.a | grep -w ets_printf | wc -l) -eq 0; done;
- popd
build_ssc: