esp32学习:
在scan例程中,调试sta模式下连接失败的原因:
1、一开始以为连接失败的话,会在conenct接口esp_wifi_connect()的返回值里返回原因
经过分析,这个接口一般返回的是0,及时是找不到ssid,或者密码错误
2、后来在event事件的SYSTEM_EVENT_STA_DISCONNECTED中发现,连接失败的原因在event时间成员里:
case SYSTEM_EVENT_STA_DISCONNECTED:
ESP_LOGI(TAG, "SYSTEM_EVENT_STA_DISCONNECTED");
ret = event->event_info.disconnected.reason;
ESP_LOGI(TAG, "wqy-->ret = %d", ret);
ESP_ERROR_CHECK(esp_wifi_connect());
break;
ret值是我自己调试添加的,通过获取event->event_info.disconnected.reason的值可以获取连接失败的返回值;
我让它连接不存在的ssid,返回值为201
返回值对应的原因:
REASON_UNSPECIFIED = 1,
REASON_AUTH_EXPIRE = 2,
REASON_AUTH_LEAVE = 3,
REASON_ASSOC_EXPIRE = 4,
REASON_ASSOC_TOOMANY = 5,
REASON_NOT_AUTHED = 6,
REASON_NOT_ASSOCED = 7,
REASON_ASSOC_LEAVE = 8,
REASON_ASSOC_NOT_AUTHED = 9,
REASON_DISASSOC_PWRCAP_BAD = 10, /* 11h */
REASON_DISASSOC_SUPCHAN_BAD = 11, /* 11h */
REASON_IE_INVALID = 13, /* 11i */
REASON_MIC_FAILURE = 14, /* 11i */
REASON_4WAY_HANDSHAKE_TIMEOUT = 15, /* 11i */
REASON_GROUP_KEY_UPDATE_TIMEOUT = 16, /* 11i */
REASON_IE_IN_4WAY_DIFFERS = 17, /* 11i */
REASON_GROUP_CIPHER_INVALID = 18, /* 11i */
REASON_PAIRWISE_CIPHER_INVALID = 19, /* 11i */
REASON_AKMP_INVALID = 20, /* 11i */
REASON_UNSUPP_RSN_IE_VERSION = 21, /* 11i */
REASON_INVALID_RSN_IE_CAP = 22, /* 11i */
REASON_802_1X_AUTH_FAILED = 23, /* 11i */
REASON_CIPHER_SUITE_REJECTED = 24, /* 11i */
REASON_BEACON_TIMEOUT = 200,
REASON_NO_AP_FOUND = 201,
REASON_AUTH_FAIL = 202,
REASON_ASSOC_FAIL = 203,
REASON_HANDSHAKE_TIMEOUT = 204,
在esp32里,现在的理解是,如果连接不存在的ssid,则会返回REASON_NO_AP_FOUND(201)
如果密码错误并不能由某个返回值来具体确认;
连接返回值说明的相关网址: