diff --git a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c index 9f71aeb98d..a647d4e4a8 100644 --- a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c +++ b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c @@ -976,6 +976,7 @@ int wps_finish(void) if (config == NULL) { system_event_t evt; evt.event_id = SYSTEM_EVENT_STA_WPS_ER_FAILED; + evt.event_info.sta_er_fail_reason = WPS_FAIL_REASON_NORMAL; esp_wifi_send_event_internal(&evt); return ESP_FAIL; } @@ -1253,6 +1254,7 @@ out: system_event_t evt; evt.event_id = SYSTEM_EVENT_STA_WPS_ER_FAILED; + evt.event_info.sta_er_fail_reason = WPS_FAIL_REASON_NORMAL; esp_wifi_send_event_internal(&evt); return ret; @@ -1505,6 +1507,7 @@ void wifi_station_wps_success_internal(void) { system_event_t evt; evt.event_id = SYSTEM_EVENT_STA_WPS_ER_SUCCESS; + evt.event_info.sta_er_success.ap_cred_cnt = 1; struct wps_sm *sm = gWpsSm; int i; @@ -1520,10 +1523,8 @@ void wifi_station_wps_success_internal(void) os_memcpy(evt.event_info.sta_er_success.ap_cred[i].passphrase, sm->key[i], sm->key_len[i]); } - esp_wifi_send_event_internal(&evt); - } else { - esp_wifi_send_event_internal(&evt); } + esp_wifi_send_event_internal(&evt); } void wifi_station_wps_success(void) diff --git a/examples/wifi/wps/main/wps.c b/examples/wifi/wps/main/wps.c index ed99100fde..b513c7c9b2 100644 --- a/examples/wifi/wps/main/wps.c +++ b/examples/wifi/wps/main/wps.c @@ -88,7 +88,7 @@ static void wifi_event_handler(void* arg, esp_event_base_t event_base, (wifi_event_sta_wps_er_success_t *)event_data; int i; - if (evt) { + if (evt && evt->ap_cred_cnt > 1) { s_ap_creds_num = evt->ap_cred_cnt; for (i = 0; i < s_ap_creds_num; i++) { memcpy(wps_ap_creds[i].sta.ssid, evt->ap_cred[i].ssid,