fix(wifi): fixed blufi connect wep or wpa ap fail issue

This commit is contained in:
muhaidong
2024-12-23 15:49:37 +08:00
parent 9389bde893
commit e699e8a4ed
2 changed files with 48 additions and 3 deletions

View File

@ -7,4 +7,30 @@ menu "Example Configuration"
help help
WiFi connection maximum retry, from 0 to 255. WiFi connection maximum retry, from 0 to 255.
choice EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD
prompt "WiFi Scan auth mode threshold"
default ESP_WIFI_AUTH_WPA2_PSK
help
The weakest authmode to accept in the scan mode.
This value defaults to ESP_WIFI_AUTH_WPA2_PSK in case password is present and ESP_WIFI_AUTH_OPEN is used.
Please select ESP_WIFI_AUTH_WEP/ESP_WIFI_AUTH_WPA_PSK in case AP is operating in WEP/WPA mode.
config ESP_WIFI_AUTH_OPEN
bool "OPEN"
config ESP_WIFI_AUTH_WEP
bool "WEP"
config ESP_WIFI_AUTH_WPA_PSK
bool "WPA PSK"
config ESP_WIFI_AUTH_WPA2_PSK
bool "WPA2 PSK"
config ESP_WIFI_AUTH_WPA_WPA2_PSK
bool "WPA/WPA2 PSK"
config ESP_WIFI_AUTH_WPA3_PSK
bool "WPA3 PSK"
config ESP_WIFI_AUTH_WPA2_WPA3_PSK
bool "WPA2/WPA3 PSK"
config ESP_WIFI_AUTH_WAPI_PSK
bool "WAPI PSK"
endchoice
endmenu endmenu

View File

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Unlicense OR CC0-1.0 * SPDX-License-Identifier: Unlicense OR CC0-1.0
*/ */
@ -37,6 +37,24 @@
#define EXAMPLE_INVALID_REASON 255 #define EXAMPLE_INVALID_REASON 255
#define EXAMPLE_INVALID_RSSI -128 #define EXAMPLE_INVALID_RSSI -128
#if CONFIG_ESP_WIFI_AUTH_OPEN
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_OPEN
#elif CONFIG_ESP_WIFI_AUTH_WEP
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WEP
#elif CONFIG_ESP_WIFI_AUTH_WPA_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA_PSK
#elif CONFIG_ESP_WIFI_AUTH_WPA2_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_PSK
#elif CONFIG_ESP_WIFI_AUTH_WPA_WPA2_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA_WPA2_PSK
#elif CONFIG_ESP_WIFI_AUTH_WPA3_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA3_PSK
#elif CONFIG_ESP_WIFI_AUTH_WPA2_WPA3_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_WPA3_PSK
#elif CONFIG_ESP_WIFI_AUTH_WAPI_PSK
#define EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WAPI_PSK
#endif
static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t *param); static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t *param);
#define WIFI_LIST_NUM 10 #define WIFI_LIST_NUM 10
@ -313,7 +331,7 @@ static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_para
ESP_ERROR_CHECK( esp_wifi_set_mode(param->wifi_mode.op_mode) ); ESP_ERROR_CHECK( esp_wifi_set_mode(param->wifi_mode.op_mode) );
break; break;
case ESP_BLUFI_EVENT_REQ_CONNECT_TO_AP: case ESP_BLUFI_EVENT_REQ_CONNECT_TO_AP:
BLUFI_INFO("BLUFI requset wifi connect to AP\n"); BLUFI_INFO("BLUFI request wifi connect to AP\n");
/* there is no wifi callback when the device has already connected to this wifi /* there is no wifi callback when the device has already connected to this wifi
so disconnect wifi before connection. so disconnect wifi before connection.
*/ */
@ -321,7 +339,7 @@ static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_para
example_wifi_connect(); example_wifi_connect();
break; break;
case ESP_BLUFI_EVENT_REQ_DISCONNECT_FROM_AP: case ESP_BLUFI_EVENT_REQ_DISCONNECT_FROM_AP:
BLUFI_INFO("BLUFI requset wifi disconnect from AP\n"); BLUFI_INFO("BLUFI request wifi disconnect from AP\n");
esp_wifi_disconnect(); esp_wifi_disconnect();
break; break;
case ESP_BLUFI_EVENT_REPORT_ERROR: case ESP_BLUFI_EVENT_REPORT_ERROR:
@ -372,6 +390,7 @@ static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_para
case ESP_BLUFI_EVENT_RECV_STA_PASSWD: case ESP_BLUFI_EVENT_RECV_STA_PASSWD:
strncpy((char *)sta_config.sta.password, (char *)param->sta_passwd.passwd, param->sta_passwd.passwd_len); strncpy((char *)sta_config.sta.password, (char *)param->sta_passwd.passwd, param->sta_passwd.passwd_len);
sta_config.sta.password[param->sta_passwd.passwd_len] = '\0'; sta_config.sta.password[param->sta_passwd.passwd_len] = '\0';
sta_config.sta.threshold.authmode = EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD;
esp_wifi_set_config(WIFI_IF_STA, &sta_config); esp_wifi_set_config(WIFI_IF_STA, &sta_config);
BLUFI_INFO("Recv STA PASSWORD %s\n", sta_config.sta.password); BLUFI_INFO("Recv STA PASSWORD %s\n", sta_config.sta.password);
break; break;