mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 18:57:19 +02:00
fix(esp_wifi): Removed unnecessary handlers to cleanup
This commit is contained in:
@ -15,6 +15,9 @@
|
|||||||
#ifdef CONFIG_ESP_WIFI_NAN_ENABLE
|
#ifdef CONFIG_ESP_WIFI_NAN_ENABLE
|
||||||
#include "apps_private/wifi_apps_private.h"
|
#include "apps_private/wifi_apps_private.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if CONFIG_ESP_WIFI_ENABLE_ROAMING_APP
|
||||||
|
#include "esp_roaming.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Purpose of this module is to provide basic wifi initialization setup for
|
// Purpose of this module is to provide basic wifi initialization setup for
|
||||||
@ -80,6 +83,12 @@ static void wifi_default_action_sta_start(void *arg, esp_event_base_t base, int3
|
|||||||
|
|
||||||
static void wifi_default_action_sta_stop(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
static void wifi_default_action_sta_stop(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_ESP_WIFI_ENABLE_ROAMING_APP
|
||||||
|
roam_disable_reconnect();
|
||||||
|
#ifdef CONFIG_ESP_WIFI_NETWORK_ASSISTED_ROAMING_IP_RENEW_SKIP
|
||||||
|
roaming_ongoing = false;
|
||||||
|
#endif
|
||||||
|
#endif /* CONFIG_ESP_WIFI_ENABLE_ROAMING_APP */
|
||||||
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
||||||
esp_netif_action_stop(s_wifi_netifs[WIFI_IF_STA], base, event_id, data);
|
esp_netif_action_stop(s_wifi_netifs[WIFI_IF_STA], base, event_id, data);
|
||||||
}
|
}
|
||||||
@ -87,12 +96,15 @@ static void wifi_default_action_sta_stop(void *arg, esp_event_base_t base, int32
|
|||||||
|
|
||||||
static void wifi_default_action_sta_connected(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
static void wifi_default_action_sta_connected(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
||||||
{
|
{
|
||||||
|
#if CONFIG_ESP_WIFI_ENABLE_ROAMING_APP
|
||||||
|
roam_sta_connected();
|
||||||
#ifdef CONFIG_ESP_WIFI_NETWORK_ASSISTED_ROAMING_IP_RENEW_SKIP
|
#ifdef CONFIG_ESP_WIFI_NETWORK_ASSISTED_ROAMING_IP_RENEW_SKIP
|
||||||
if (roaming_ongoing) {
|
if (roaming_ongoing) {
|
||||||
/* IP stack is already in ready state */
|
/* IP stack is already in ready state */
|
||||||
roaming_ongoing = false;
|
roaming_ongoing = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
||||||
esp_err_t ret;
|
esp_err_t ret;
|
||||||
@ -113,6 +125,8 @@ static void wifi_default_action_sta_connected(void *arg, esp_event_base_t base,
|
|||||||
|
|
||||||
static void wifi_default_action_sta_disconnected(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
static void wifi_default_action_sta_disconnected(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
||||||
{
|
{
|
||||||
|
#if CONFIG_ESP_WIFI_ENABLE_ROAMING_APP
|
||||||
|
roam_sta_disconnected(data);
|
||||||
#ifdef CONFIG_ESP_WIFI_NETWORK_ASSISTED_ROAMING_IP_RENEW_SKIP
|
#ifdef CONFIG_ESP_WIFI_NETWORK_ASSISTED_ROAMING_IP_RENEW_SKIP
|
||||||
wifi_event_sta_disconnected_t *disconn = data;
|
wifi_event_sta_disconnected_t *disconn = data;
|
||||||
if (disconn->reason == WIFI_REASON_ROAMING) {
|
if (disconn->reason == WIFI_REASON_ROAMING) {
|
||||||
@ -121,6 +135,7 @@ static void wifi_default_action_sta_disconnected(void *arg, esp_event_base_t bas
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
roaming_ongoing = false;
|
roaming_ongoing = false;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
if (s_wifi_netifs[WIFI_IF_STA] != NULL) {
|
||||||
esp_netif_action_disconnected(s_wifi_netifs[WIFI_IF_STA], base, event_id, data);
|
esp_netif_action_disconnected(s_wifi_netifs[WIFI_IF_STA], base, event_id, data);
|
||||||
|
@ -32,6 +32,8 @@ void roam_init_app(void);
|
|||||||
void roam_deinit_app(void);
|
void roam_deinit_app(void);
|
||||||
void roam_disable_reconnect(void);
|
void roam_disable_reconnect(void);
|
||||||
void roam_enable_reconnect(void);
|
void roam_enable_reconnect(void);
|
||||||
|
void roam_sta_connected(void);
|
||||||
|
void roam_sta_disconnected(void *disconn);
|
||||||
esp_err_t roam_get_config_params(struct roam_config *config);
|
esp_err_t roam_get_config_params(struct roam_config *config);
|
||||||
esp_err_t roam_set_config_params(struct roam_config *config);
|
esp_err_t roam_set_config_params(struct roam_config *config);
|
||||||
|
|
||||||
|
@ -54,16 +54,26 @@ static inline long time_diff_sec(struct timeval *a, struct timeval *b)
|
|||||||
return (a->tv_sec - b->tv_sec);
|
return (a->tv_sec - b->tv_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void disable_reconnect(void *ctx, void *data)
|
||||||
|
{
|
||||||
|
ESP_LOGD(ROAMING_TAG, "Disable roaming app reconnect");
|
||||||
|
g_roaming_app.allow_reconnect = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void enable_reconnect(void *ctx, void *data)
|
||||||
|
{
|
||||||
|
ESP_LOGD(ROAMING_TAG, "Enable roaming app reconnect");
|
||||||
|
g_roaming_app.allow_reconnect = true;
|
||||||
|
}
|
||||||
|
|
||||||
void roam_disable_reconnect(void)
|
void roam_disable_reconnect(void)
|
||||||
{
|
{
|
||||||
ESP_LOGD(ROAMING_TAG, "Switching off reconnect due to application trigerred disconnect");
|
eloop_register_timeout(0, 0, disable_reconnect, NULL, NULL);
|
||||||
g_roaming_app.allow_reconnect = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void roam_enable_reconnect(void)
|
void roam_enable_reconnect(void)
|
||||||
{
|
{
|
||||||
ESP_LOGD(ROAMING_TAG, "Switching on reconnect due to application trigerred reconnect");
|
eloop_register_timeout(0, 0, enable_reconnect, NULL, NULL);
|
||||||
g_roaming_app.allow_reconnect = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void roaming_app_get_ap_info(wifi_ap_record_t *ap_info)
|
static void roaming_app_get_ap_info(wifi_ap_record_t *ap_info)
|
||||||
@ -154,10 +164,8 @@ static void init_periodic_scan_roam_event(void)
|
|||||||
}
|
}
|
||||||
#endif /*PERIODIC_SCAN_ROAM_MONITORING*/
|
#endif /*PERIODIC_SCAN_ROAM_MONITORING*/
|
||||||
|
|
||||||
static void roaming_app_disconnected_event_handler(void* arg, esp_event_base_t event_base,
|
static void roaming_app_disconnected_event_handler(void *ctx, void *data)
|
||||||
int32_t event_id, void* event_data)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
#if PERIODIC_RRM_MONITORING
|
#if PERIODIC_RRM_MONITORING
|
||||||
g_roaming_app.periodic_rrm_active = false;
|
g_roaming_app.periodic_rrm_active = false;
|
||||||
#endif /*PERIODIC_RRM_MONITORING*/
|
#endif /*PERIODIC_RRM_MONITORING*/
|
||||||
@ -166,7 +174,7 @@ static void roaming_app_disconnected_event_handler(void* arg, esp_event_base_t e
|
|||||||
g_roaming_app.periodic_scan_active = false;
|
g_roaming_app.periodic_scan_active = false;
|
||||||
#endif /*PERIODIC_SCAN_MONITORING*/
|
#endif /*PERIODIC_SCAN_MONITORING*/
|
||||||
|
|
||||||
wifi_event_sta_disconnected_t *disconn = event_data;
|
wifi_event_sta_disconnected_t *disconn = data;
|
||||||
ESP_LOGD(ROAMING_TAG, "station got disconnected reason=%d", disconn->reason);
|
ESP_LOGD(ROAMING_TAG, "station got disconnected reason=%d", disconn->reason);
|
||||||
if (disconn->reason == WIFI_REASON_ROAMING) {
|
if (disconn->reason == WIFI_REASON_ROAMING) {
|
||||||
ESP_LOGD(ROAMING_TAG, "station roaming, do nothing");
|
ESP_LOGD(ROAMING_TAG, "station roaming, do nothing");
|
||||||
@ -185,16 +193,10 @@ static void roaming_app_disconnected_event_handler(void* arg, esp_event_base_t e
|
|||||||
#endif /*LEGACY_ROAM_ENABLED*/
|
#endif /*LEGACY_ROAM_ENABLED*/
|
||||||
esp_wifi_connect();
|
esp_wifi_connect();
|
||||||
}
|
}
|
||||||
|
os_free(disconn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void roaming_app_sta_stop_event_handler(void* arg, esp_event_base_t event_base,
|
static void roaming_app_connected_event_handler(void *ctx, void *data)
|
||||||
int32_t event_id, void* event_data)
|
|
||||||
{
|
|
||||||
g_roaming_app.allow_reconnect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void roaming_app_connected_event_handler(void* arg, esp_event_base_t event_base,
|
|
||||||
int32_t event_id, void* event_data)
|
|
||||||
{
|
{
|
||||||
roaming_app_get_ap_info(&g_roaming_app.current_bss.ap);
|
roaming_app_get_ap_info(&g_roaming_app.current_bss.ap);
|
||||||
g_roaming_app.config.scan_config.ssid = g_roaming_app.current_bss.ap.ssid;
|
g_roaming_app.config.scan_config.ssid = g_roaming_app.current_bss.ap.ssid;
|
||||||
@ -233,6 +235,25 @@ static void roaming_app_connected_event_handler(void* arg, esp_event_base_t even
|
|||||||
#endif /*LEGACY_ROAM_ENABLED*/
|
#endif /*LEGACY_ROAM_ENABLED*/
|
||||||
g_roaming_app.allow_reconnect = true;
|
g_roaming_app.allow_reconnect = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void roam_sta_connected(void)
|
||||||
|
{
|
||||||
|
eloop_register_timeout(0, 0, roaming_app_connected_event_handler, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void roam_sta_disconnected(void *data)
|
||||||
|
{
|
||||||
|
wifi_event_sta_disconnected_t *disconn = os_malloc(sizeof(*disconn));
|
||||||
|
|
||||||
|
if (!disconn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
os_memcpy(disconn, data, sizeof(*disconn));
|
||||||
|
if (eloop_register_timeout(0, 0, roaming_app_disconnected_event_handler, NULL, disconn) != 0) {
|
||||||
|
os_free(disconn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define MAX_NEIGHBOR_LEN 512
|
#define MAX_NEIGHBOR_LEN 512
|
||||||
#if PERIODIC_RRM_MONITORING
|
#if PERIODIC_RRM_MONITORING
|
||||||
static char * get_btm_neighbor_list(uint8_t *report, size_t report_len)
|
static char * get_btm_neighbor_list(uint8_t *report, size_t report_len)
|
||||||
@ -864,9 +885,6 @@ void roam_init_app(void)
|
|||||||
ESP_LOGE(ROAMING_TAG, "No roaming method enabled. Roaming app cannot be initialized");
|
ESP_LOGE(ROAMING_TAG, "No roaming method enabled. Roaming app cannot be initialized");
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, roaming_app_connected_event_handler, NULL));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, roaming_app_disconnected_event_handler, NULL));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_STOP, roaming_app_sta_stop_event_handler, NULL));
|
|
||||||
#if LOW_RSSI_ROAMING_ENABLED
|
#if LOW_RSSI_ROAMING_ENABLED
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_BSS_RSSI_LOW,
|
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_BSS_RSSI_LOW,
|
||||||
&roaming_app_rssi_low_handler, NULL));
|
&roaming_app_rssi_low_handler, NULL));
|
||||||
@ -891,10 +909,6 @@ void roam_deinit_app(void)
|
|||||||
ESP_LOGE(ROAMING_TAG, "No roaming trigger enabled. Roaming app cannot be de-initialized");
|
ESP_LOGE(ROAMING_TAG, "No roaming trigger enabled. Roaming app cannot be de-initialized");
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
/* Unregister Event handlers */
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, roaming_app_connected_event_handler));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, roaming_app_disconnected_event_handler));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_STOP, roaming_app_sta_stop_event_handler));
|
|
||||||
#if LOW_RSSI_ROAMING_ENABLED
|
#if LOW_RSSI_ROAMING_ENABLED
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_BSS_RSSI_LOW,
|
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_BSS_RSSI_LOW,
|
||||||
&roaming_app_rssi_low_handler));
|
&roaming_app_rssi_low_handler));
|
||||||
|
Reference in New Issue
Block a user