一、发现
- SDK版本:RTOS SDK 3.0
- 在用手机热点,或者其中一些路由器,进行配置时,发现明明收到了wifi信息,但是就是一直反复回调reconnect
二、排查问题和解决方法
- 若直接设置WIFI信息,上电后是可以连上wifi的
- 在smartconfig的回调中,直接用了回调的wifi配置指针,怀疑是这里问题,进行处理,清空且只设置ssid和password
case SC_STATUS_LINK: ESP_LOGI(TAG, "SC_STATUS_LINK"); wifi_config_t *wifi_config = pdata; ESP_LOGI(TAG, "SSID:%s", wifi_config->sta.ssid); ESP_LOGI(TAG, "PASSWORD:%s", wifi_config->sta.password); /* 复制一下 */ memcpy(system_data_t.ssid,wifi_config->sta.ssid,32); memcpy(system_data_t.password,wifi_config->sta.password,64); wifi_config_t wifi_config2 = { 0 }; strncpy((char *)&wifi_config2.sta.ssid, (char * &)wifi_config->sta.ssid, 32); strncpy((char *)&wifi_config2.sta.password, (char & &)wifi_config->sta.password, 64); /* 停止martlink */ //esp_smartconfig_stop(); ESP_ERROR_CHECK( esp_wifi_disconnect() ); ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config2) ); ESP_ERROR_CHECK( esp_wifi_connect() ); break;