1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-21 10:26:06 +03:00

WiFi scanning fixes

This commit is contained in:
Ivan Grokhotkov 2014-12-09 10:23:50 +03:00
parent 2521c1e907
commit d54952a21a

View File

@ -72,7 +72,7 @@ int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase)
wifi_station_set_config(&conf); wifi_station_set_config(&conf);
wifi_station_connect(); wifi_station_connect();
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
wifi_station_dhcp_start(); wifi_station_dhcpc_start();
return 0; return 0;
} }
@ -230,6 +230,19 @@ int8_t ESP8266WiFiClass::scanNetworks()
disconnect(); disconnect();
} }
if (ESP8266WiFiClass::_scanResult)
{
bss_info* it = reinterpret_cast<bss_info*>(ESP8266WiFiClass::_scanResult);
ESP8266WiFiClass::_scanResult = 0;
ESP8266WiFiClass::_scanCount = 0;
while(it)
{
bss_info* next = STAILQ_NEXT(it, next);
os_free(it);
it = next;
}
}
struct scan_config config; struct scan_config config;
config.ssid = 0; config.ssid = 0;
config.bssid = 0; config.bssid = 0;
@ -245,7 +258,9 @@ void * ESP8266WiFiClass::_getScanInfoByIndex(int i)
return 0; return 0;
struct bss_info* it = reinterpret_cast<struct bss_info*>(ESP8266WiFiClass::_scanResult); struct bss_info* it = reinterpret_cast<struct bss_info*>(ESP8266WiFiClass::_scanResult);
for (; i; it = STAILQ_NEXT(it, next), --i); for (; i && it; --i)
it = STAILQ_NEXT(it, next);
if (!it) if (!it)
return 0; return 0;
@ -314,6 +329,7 @@ void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback
int ESP8266WiFiClass::hostByName(const char* aHostname, IPAddress& aResult) int ESP8266WiFiClass::hostByName(const char* aHostname, IPAddress& aResult)
{ {
ip_addr_t addr; ip_addr_t addr;
aResult = static_cast<uint32_t>(0);
err_t err = dns_gethostbyname(aHostname, &addr, &wifi_dns_found_callback, &aResult); err_t err = dns_gethostbyname(aHostname, &addr, &wifi_dns_found_callback, &aResult);
if (err == ERR_OK) if (err == ERR_OK)
{ {
@ -324,11 +340,12 @@ int ESP8266WiFiClass::hostByName(const char* aHostname, IPAddress& aResult)
esp_yield(); esp_yield();
// will return here when dns_found_callback fires // will return here when dns_found_callback fires
} }
else // probably an invalid hostname
{
aResult = static_cast<uint32_t>(0);
}
return (aResult != 0) ? 1 : 0; return (aResult != 0) ? 1 : 0;
} }
size_t ESP8266WiFiClass::_scanCount = 0;
void* ESP8266WiFiClass::_scanResult = 0;
ESP8266WiFiClass WiFi; ESP8266WiFiClass WiFi;