ESP8266wifi处理代码的bug记录

static ETSTimer WiFiLinker;
WifiCallback wifiCb = NULL;
static uint8_t wifiStatus = STATION_IDLE, lastWifiStatus = STATION_IDLE;
static void ICACHE_FLASH_ATTR wifi_check_ip(void *arg)
{
struct ip_info ipConfig;


os_timer_disarm(&WiFiLinker);
wifi_get_ip_info(STATION_IF, &ipConfig);
wifiStatus = wifi_station_get_connect_status();
if (wifiStatus == STATION_GOT_IP && ipConfig.ip.addr != 0)
{
os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL);
os_timer_arm(&WiFiLinker, 2000, 0);
}
else
{
if(wifi_station_get_connect_status() == STATION_WRONG_PASSWORD)
{
INFO("STATION_WRONG_PASSWORD\r\n");
wifi_station_connect();
}
else if(wifi_station_get_connect_status() == STATION_NO_AP_FOUND)
{
INFO("STATION_NO_AP_FOUND\r\n");
wifi_station_connect();
}
else if(wifi_station_get_connect_status() == STATION_CONNECT_FAIL)
{
INFO("STATION_CONNECT_FAIL\r\n");
wifi_station_connect();
}
else if(wifi_station_get_connect_status() == STATION_CONNECTING)
{
INFO("STATION_CONNECTING\r\n");
}
else
{
INFO("STATION_IDLE\r\n");
}


os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL);
os_timer_arm(&WiFiLinker, 500, 0);
}


os_printf("0:wifiStatus,lastWifiStatus:%d,%d\n",wifiStatus,lastWifiStatus);
if(wifiStatus != lastWifiStatus)
{
lastWifiStatus = wifiStatus;
if(wifiCb)
{
wifiCb(wifiStatus);
}
}
os_printf("1:wifiStatus,lastWifiStatus:%d,%d\n",wifiStatus,lastWifiStatus);

}



添加的部分:


引起调试信息的误解:连接状态也打印成了空闲状态。


猜你喜欢

转载自blog.csdn.net/qinrenzhi/article/details/80830729