diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp index a95bd1f7d..b946d5bdf 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp @@ -1,23 +1,23 @@ /* - ESP8266WiFi.cpp - WiFi library for esp8266 + ESP8266WiFi.cpp - WiFi library for esp8266 - Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. - This file is part of the esp8266 core for Arduino environment. + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ #include "ESP8266WiFi.h" @@ -41,27 +41,20 @@ extern "C" { extern "C" void esp_schedule(); extern "C" void esp_yield(); -ESP8266WiFiClass::ESP8266WiFiClass() -: _smartConfigStarted(false) -, _smartConfigDone(false) -, _useStaticIp(false) -, _persistent(true) -{ +ESP8266WiFiClass::ESP8266WiFiClass() : + _smartConfigStarted(false), _smartConfigDone(false), _useStaticIp(false), _persistent(true) { uint8 m = wifi_get_opmode(); _useClientMode = (m & WIFI_STA); _useApMode = (m & WIFI_AP); - wifi_set_event_handler_cb((wifi_event_handler_cb_t)&ESP8266WiFiClass::_eventCallback); + wifi_set_event_handler_cb((wifi_event_handler_cb_t) &ESP8266WiFiClass::_eventCallback); } -void ESP8266WiFiClass::persistent(bool persistent) -{ +void ESP8266WiFiClass::persistent(bool persistent) { _persistent = persistent; } - -void ESP8266WiFiClass::mode(WiFiMode m) -{ - if(wifi_get_opmode() == (uint8)m) { +void ESP8266WiFiClass::mode(WiFiMode m) { + if(wifi_get_opmode() == (uint8) m) { return; } @@ -80,19 +73,17 @@ void ESP8266WiFiClass::mode(WiFiMode m) _mode(m); } -WiFiMode ESP8266WiFiClass::getMode() -{ - return (WiFiMode)wifi_get_opmode(); +WiFiMode ESP8266WiFiClass::getMode() { + return (WiFiMode) wifi_get_opmode(); } -void ESP8266WiFiClass::_mode(WiFiMode m) -{ - if(wifi_get_opmode() == (uint8)m) { +void ESP8266WiFiClass::_mode(WiFiMode m) { + if(wifi_get_opmode() == (uint8) m) { return; } ETS_UART_INTR_DISABLE(); - if (_persistent) + if(_persistent) wifi_set_opmode(m); else wifi_set_opmode_current(m); @@ -100,36 +91,32 @@ void ESP8266WiFiClass::_mode(WiFiMode m) } -static bool sta_config_equal(const station_config& lhs, const station_config& rhs) -{ - if (strcmp(reinterpret_cast(lhs.ssid), reinterpret_cast(rhs.ssid)) != 0) +static bool sta_config_equal(const station_config& lhs, const station_config& rhs) { + if(strcmp(reinterpret_cast(lhs.ssid), reinterpret_cast(rhs.ssid)) != 0) return false; - if (strcmp(reinterpret_cast(lhs.password), reinterpret_cast(rhs.password)) != 0) + if(strcmp(reinterpret_cast(lhs.password), reinterpret_cast(rhs.password)) != 0) return false; - if (lhs.bssid_set) { - if (!rhs.bssid_set) + if(lhs.bssid_set) { + if(!rhs.bssid_set) return false; - if (memcmp(lhs.bssid, rhs.bssid, 6) != 0) + if(memcmp(lhs.bssid, rhs.bssid, 6) != 0) return false; - } - else { - if (rhs.bssid_set) + } else { + if(rhs.bssid_set) return false; } return true; } -int ESP8266WiFiClass::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid) -{ +int ESP8266WiFiClass::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid) { return begin((const char*) ssid, (const char*) passphrase, channel, bssid); } -int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid) -{ +int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid) { _useClientMode = true; if(_useApMode) { @@ -153,13 +140,13 @@ int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t ch struct station_config conf; strcpy(reinterpret_cast(conf.ssid), ssid); - if (passphrase) { + if(passphrase) { strcpy(reinterpret_cast(conf.password), passphrase); } else { *conf.password = 0; } - if (bssid) { + if(bssid) { conf.bssid_set = 1; memcpy((void *) &conf.bssid[0], (void *) bssid, 6); } else { @@ -168,13 +155,13 @@ int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t ch struct station_config current_conf; wifi_station_get_config(¤t_conf); - if (sta_config_equal(current_conf, conf)) { + if(sta_config_equal(current_conf, conf)) { DEBUGV("sta config unchanged"); return status(); } ETS_UART_INTR_DISABLE(); - if (_persistent) + if(_persistent) wifi_station_set_config(&conf); else wifi_station_set_config_current(&conf); @@ -190,8 +177,7 @@ int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t ch return status(); } -int ESP8266WiFiClass::begin() -{ +int ESP8266WiFiClass::begin() { ETS_UART_INTR_DISABLE(); wifi_station_connect(); ETS_UART_INTR_ENABLE(); @@ -201,18 +187,16 @@ int ESP8266WiFiClass::begin() return status(); } -uint8_t ESP8266WiFiClass::waitForConnectResult(){ - if ((wifi_get_opmode() & 1) == 0)//1 and 3 have STA enabled - return WL_DISCONNECTED; - while (status() == WL_DISCONNECTED) - delay(100); - return status(); +uint8_t ESP8266WiFiClass::waitForConnectResult() { + if((wifi_get_opmode() & 1) == 0) //1 and 3 have STA enabled + return WL_DISCONNECTED; + while(status() == WL_DISCONNECTED) + delay(100); + return status(); } - // You will have to set the DNS-Server manually later since this will not enable DHCP2 -void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet) -{ +void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { struct ip_info info; info.ip.addr = static_cast(local_ip); info.gw.addr = static_cast(gateway); @@ -224,8 +208,7 @@ void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress s _useStaticIp = true; } -void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns) -{ +void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns) { struct ip_info info; info.ip.addr = static_cast(local_ip); info.gw.addr = static_cast(gateway); @@ -237,18 +220,17 @@ void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress s // Set DNS-Server ip_addr_t d; d.addr = static_cast(dns); - dns_setserver(0,&d); + dns_setserver(0, &d); _useStaticIp = true; } -int ESP8266WiFiClass::softAPdisconnect(bool wifioff) -{ +int ESP8266WiFiClass::softAPdisconnect(bool wifioff) { struct softap_config conf; *conf.ssid = 0; *conf.password = 0; ETS_UART_INTR_DISABLE(); - if (_persistent) + if(_persistent) wifi_softap_set_config(&conf); else wifi_softap_set_config_current(&conf); @@ -257,7 +239,7 @@ int ESP8266WiFiClass::softAPdisconnect(bool wifioff) if(wifioff) { _useApMode = false; - if( _useClientMode) { + if(_useClientMode) { // turn on STA _mode(WIFI_STA); } else { @@ -269,13 +251,12 @@ int ESP8266WiFiClass::softAPdisconnect(bool wifioff) return 0; } -int ESP8266WiFiClass::disconnect(bool wifioff) -{ +int ESP8266WiFiClass::disconnect(bool wifioff) { struct station_config conf; *conf.ssid = 0; *conf.password = 0; ETS_UART_INTR_DISABLE(); - if (_persistent) + if(_persistent) wifi_station_set_config(&conf); else wifi_station_set_config_current(&conf); @@ -297,28 +278,23 @@ int ESP8266WiFiClass::disconnect(bool wifioff) return 0; } -static bool softap_config_equal(const softap_config& lhs, const softap_config& rhs) -{ - if (strcmp(reinterpret_cast(lhs.ssid), reinterpret_cast(rhs.ssid)) != 0) +static bool softap_config_equal(const softap_config& lhs, const softap_config& rhs) { + if(strcmp(reinterpret_cast(lhs.ssid), reinterpret_cast(rhs.ssid)) != 0) return false; - if (strcmp(reinterpret_cast(lhs.password), reinterpret_cast(rhs.password)) != 0) + if(strcmp(reinterpret_cast(lhs.password), reinterpret_cast(rhs.password)) != 0) return false; - if (lhs.channel != rhs.channel) + if(lhs.channel != rhs.channel) return false; - if (lhs.ssid_hidden != rhs.ssid_hidden) + if(lhs.ssid_hidden != rhs.ssid_hidden) return false; return true; } - -void ESP8266WiFiClass::softAP(const char* ssid) -{ +void ESP8266WiFiClass::softAP(const char* ssid) { softAP(ssid, 0); } - -void ESP8266WiFiClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden) -{ +void ESP8266WiFiClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden) { _useApMode = true; if(_useClientMode) { // turn on AP+STA mode @@ -347,35 +323,30 @@ void ESP8266WiFiClass::softAP(const char* ssid, const char* passphrase, int chan conf.max_connection = 4; conf.beacon_interval = 100; - if (!passphrase || strlen(passphrase) == 0) - { + if(!passphrase || strlen(passphrase) == 0) { conf.authmode = AUTH_OPEN; *conf.password = 0; - } - else - { + } else { conf.authmode = AUTH_WPA2_PSK; strcpy(reinterpret_cast(conf.password), passphrase); } struct softap_config conf_current; wifi_softap_get_config(&conf_current); - if (softap_config_equal(conf, conf_current)) - { + if(softap_config_equal(conf, conf_current)) { DEBUGV("softap config unchanged"); return; } ETS_UART_INTR_DISABLE(); - if (_persistent) + if(_persistent) wifi_softap_set_config(&conf); else wifi_softap_set_config_current(&conf); ETS_UART_INTR_ENABLE(); } -void ESP8266WiFiClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) -{ +void ESP8266WiFiClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { struct ip_info info; info.ip.addr = static_cast(local_ip); info.gw.addr = static_cast(gateway); @@ -385,142 +356,120 @@ void ESP8266WiFiClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAdd wifi_softap_dhcps_start(); } -uint8_t* ESP8266WiFiClass::macAddress(uint8_t* mac) -{ +uint8_t* ESP8266WiFiClass::macAddress(uint8_t* mac) { wifi_get_macaddr(STATION_IF, mac); return mac; } -String ESP8266WiFiClass::macAddress(void) -{ +String ESP8266WiFiClass::macAddress(void) { uint8_t mac[6]; - char macStr[18] = {0}; + char macStr[18] = { 0 }; wifi_get_macaddr(STATION_IF, mac); - sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); return String(macStr); } -uint8_t* ESP8266WiFiClass::softAPmacAddress(uint8_t* mac) -{ +uint8_t* ESP8266WiFiClass::softAPmacAddress(uint8_t* mac) { wifi_get_macaddr(SOFTAP_IF, mac); return mac; } -String ESP8266WiFiClass::softAPmacAddress(void) -{ +String ESP8266WiFiClass::softAPmacAddress(void) { uint8_t mac[6]; - char macStr[18] = {0}; + char macStr[18] = { 0 }; wifi_get_macaddr(SOFTAP_IF, mac); - sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); return String(macStr); } -IPAddress ESP8266WiFiClass::localIP() -{ +IPAddress ESP8266WiFiClass::localIP() { struct ip_info ip; wifi_get_ip_info(STATION_IF, &ip); return IPAddress(ip.ip.addr); } -IPAddress ESP8266WiFiClass::softAPIP() -{ +IPAddress ESP8266WiFiClass::softAPIP() { struct ip_info ip; wifi_get_ip_info(SOFTAP_IF, &ip); return IPAddress(ip.ip.addr); } -IPAddress ESP8266WiFiClass::subnetMask() -{ +IPAddress ESP8266WiFiClass::subnetMask() { struct ip_info ip; wifi_get_ip_info(STATION_IF, &ip); return IPAddress(ip.netmask.addr); } -IPAddress ESP8266WiFiClass::gatewayIP() -{ +IPAddress ESP8266WiFiClass::gatewayIP() { struct ip_info ip; wifi_get_ip_info(STATION_IF, &ip); return IPAddress(ip.gw.addr); } -IPAddress ESP8266WiFiClass::dnsIP(int dns_no) -{ +IPAddress ESP8266WiFiClass::dnsIP(int dns_no) { ip_addr_t dns_ip = dns_getserver(dns_no); return IPAddress(dns_ip.addr); } -String ESP8266WiFiClass::SSID() const -{ +String ESP8266WiFiClass::SSID() const { static struct station_config conf; wifi_station_get_config(&conf); return String(reinterpret_cast(conf.ssid)); } -String ESP8266WiFiClass::psk() const -{ +String ESP8266WiFiClass::psk() const { static struct station_config conf; wifi_station_get_config(&conf); - return String(reinterpret_cast(conf.password)); + return String(reinterpret_cast(conf.password)); } -uint8_t* ESP8266WiFiClass::BSSID(void) -{ +uint8_t* ESP8266WiFiClass::BSSID(void) { static struct station_config conf; wifi_station_get_config(&conf); return reinterpret_cast(conf.bssid); } -String ESP8266WiFiClass::BSSIDstr(void) -{ +String ESP8266WiFiClass::BSSIDstr(void) { static struct station_config conf; - char mac[18] = {0}; + char mac[18] = { 0 }; wifi_station_get_config(&conf); - sprintf(mac,"%02X:%02X:%02X:%02X:%02X:%02X", conf.bssid[0], conf.bssid[1], conf.bssid[2], conf.bssid[3], conf.bssid[4], conf.bssid[5]); + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", conf.bssid[0], conf.bssid[1], conf.bssid[2], conf.bssid[3], conf.bssid[4], conf.bssid[5]); return String(mac); } - int32_t ESP8266WiFiClass::channel(void) { return wifi_get_channel(); } - int32_t ESP8266WiFiClass::RSSI(void) { return wifi_station_get_rssi(); } -extern "C" -{ - typedef STAILQ_HEAD(, bss_info) bss_info_head_t; +extern "C" { +typedef STAILQ_HEAD(, bss_info) +bss_info_head_t; } -void ESP8266WiFiClass::_scanDone(void* result, int status) -{ - if (status != OK) - { +void ESP8266WiFiClass::_scanDone(void* result, int status) { + if(status != OK) { ESP8266WiFiClass::_scanCount = 0; ESP8266WiFiClass::_scanResult = 0; - } - else - { + } else { int i = 0; bss_info_head_t* head = reinterpret_cast(result); - for (bss_info* it = STAILQ_FIRST(head); it; it = STAILQ_NEXT(it, next), ++i); + for(bss_info* it = STAILQ_FIRST(head); it; it = STAILQ_NEXT(it, next), ++i) + ; ESP8266WiFiClass::_scanCount = i; - if (i == 0) - { + if(i == 0) { ESP8266WiFiClass::_scanResult = 0; - } - else - { + } else { bss_info* copied_info = new bss_info[i]; i = 0; - for (bss_info* it = STAILQ_FIRST(head); it; it = STAILQ_NEXT(it, next), ++i) - { + for(bss_info* it = STAILQ_FIRST(head); it; it = STAILQ_NEXT(it, next), ++i) { memcpy(copied_info + i, it, sizeof(bss_info)); } @@ -550,10 +499,8 @@ int8_t ESP8266WiFiClass::scanComplete() { return WIFI_SCAN_FAILED; } -void ESP8266WiFiClass::scanDelete() -{ - if (ESP8266WiFiClass::_scanResult) - { +void ESP8266WiFiClass::scanDelete() { + if(ESP8266WiFiClass::_scanResult) { delete[] reinterpret_cast(ESP8266WiFiClass::_scanResult); ESP8266WiFiClass::_scanResult = 0; ESP8266WiFiClass::_scanCount = 0; @@ -561,8 +508,7 @@ void ESP8266WiFiClass::scanDelete() _scanComplete = false; } -int8_t ESP8266WiFiClass::scanNetworks(bool async, bool show_hidden) -{ +int8_t ESP8266WiFiClass::scanNetworks(bool async, bool show_hidden) { if(ESP8266WiFiClass::_scanStarted) { return WIFI_SCAN_RUNNING; } @@ -578,8 +524,7 @@ int8_t ESP8266WiFiClass::scanNetworks(bool async, bool show_hidden) } int status = wifi_station_get_connect_status(); - if (status != STATION_GOT_IP && status != STATION_IDLE) - { + if(status != STATION_GOT_IP && status != STATION_IDLE) { disconnect(); } @@ -607,142 +552,126 @@ int8_t ESP8266WiFiClass::scanNetworks(bool async, bool show_hidden) } -void * ESP8266WiFiClass::_getScanInfoByIndex(int i) -{ - if (!ESP8266WiFiClass::_scanResult || (size_t)i > ESP8266WiFiClass::_scanCount) - { +void * ESP8266WiFiClass::_getScanInfoByIndex(int i) { + if(!ESP8266WiFiClass::_scanResult || (size_t) i > ESP8266WiFiClass::_scanCount) { return 0; } return reinterpret_cast(ESP8266WiFiClass::_scanResult) + i; } -String ESP8266WiFiClass::SSID(uint8_t i) -{ +String ESP8266WiFiClass::SSID(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return ""; return String(reinterpret_cast(it->ssid)); } -uint8_t * ESP8266WiFiClass::BSSID(uint8_t i) -{ +uint8_t * ESP8266WiFiClass::BSSID(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return 0; return it->bssid; } -String ESP8266WiFiClass::BSSIDstr(uint8_t i) -{ - char mac[18] = {0}; +String ESP8266WiFiClass::BSSIDstr(uint8_t i) { + char mac[18] = { 0 }; struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return String(""); - sprintf(mac,"%02X:%02X:%02X:%02X:%02X:%02X", it->bssid[0], it->bssid[1], it->bssid[2], it->bssid[3], it->bssid[4], it->bssid[5]); + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", it->bssid[0], it->bssid[1], it->bssid[2], it->bssid[3], it->bssid[4], it->bssid[5]); return String(mac); } -int32_t ESP8266WiFiClass::channel(uint8_t i) -{ +int32_t ESP8266WiFiClass::channel(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return 0; return it->channel; } -bool ESP8266WiFiClass::isHidden(uint8_t i) -{ +bool ESP8266WiFiClass::isHidden(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return false; return (it->is_hidden != 0); } -bool ESP8266WiFiClass::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &isHidden) -{ +bool ESP8266WiFiClass::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &isHidden) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) - return false; + if(!it) + return false; - ssid = (const char*)it->ssid; - encType = encryptionType(i); - rssi = it->rssi; - bssid = it->bssid; // move ptr - channel = it->channel; - isHidden = (it->is_hidden != 0); + ssid = (const char*) it->ssid; + encType = encryptionType(i); + rssi = it->rssi; + bssid = it->bssid; // move ptr + channel = it->channel; + isHidden = (it->is_hidden != 0); - return true; + return true; } -int32_t ESP8266WiFiClass::RSSI(uint8_t i) -{ +int32_t ESP8266WiFiClass::RSSI(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return 0; return it->rssi; } -uint8_t ESP8266WiFiClass::encryptionType(uint8_t i) -{ +uint8_t ESP8266WiFiClass::encryptionType(uint8_t i) { struct bss_info* it = reinterpret_cast(_getScanInfoByIndex(i)); - if (!it) + if(!it) return -1; int authmode = it->authmode; - if (authmode == AUTH_OPEN) + if(authmode == AUTH_OPEN) return ENC_TYPE_NONE; - if (authmode == AUTH_WEP) + if(authmode == AUTH_WEP) return ENC_TYPE_WEP; - if (authmode == AUTH_WPA_PSK) + if(authmode == AUTH_WPA_PSK) return ENC_TYPE_TKIP; - if (authmode == AUTH_WPA2_PSK) + if(authmode == AUTH_WPA2_PSK) return ENC_TYPE_CCMP; - if (authmode == AUTH_WPA_WPA2_PSK) + if(authmode == AUTH_WPA_WPA2_PSK) return ENC_TYPE_AUTO; return -1; } -wl_status_t ESP8266WiFiClass::status() -{ +wl_status_t ESP8266WiFiClass::status() { int status = wifi_station_get_connect_status(); - if (status == STATION_GOT_IP) - return WL_CONNECTED; - else if (status == STATION_NO_AP_FOUND) - return WL_NO_SSID_AVAIL; - else if (status == STATION_CONNECT_FAIL || status == STATION_WRONG_PASSWORD) - return WL_CONNECT_FAILED; - else if (status == STATION_IDLE) - return WL_IDLE_STATUS; + if(status == STATION_GOT_IP) + return WL_CONNECTED; + else if(status == STATION_NO_AP_FOUND) + return WL_NO_SSID_AVAIL; + else if(status == STATION_CONNECT_FAIL || status == STATION_WRONG_PASSWORD) + return WL_CONNECT_FAILED; + else if(status == STATION_IDLE) + return WL_IDLE_STATUS; else - return WL_DISCONNECTED; + return WL_DISCONNECTED; } -void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg) -{ - if (ipaddr) +void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg) { + if(ipaddr) (*reinterpret_cast(callback_arg)) = ipaddr->addr; esp_schedule(); // resume the hostByName function } -int ESP8266WiFiClass::hostByName(const char* aHostname, IPAddress& aResult) -{ +int ESP8266WiFiClass::hostByName(const char* aHostname, IPAddress& aResult) { ip_addr_t addr; aResult = static_cast(0); err_t err = dns_gethostbyname(aHostname, &addr, &wifi_dns_found_callback, &aResult); - if (err == ERR_OK) - { + if(err == ERR_OK) { aResult = addr.addr; - } - else if (err == ERR_INPROGRESS) - { + } else if(err == ERR_INPROGRESS) { esp_yield(); // will return here when dns_found_callback fires } @@ -771,13 +700,12 @@ bool ESP8266WiFiClass::hostname(String aHostname) { //-------------------------------------------------------------- -void wifi_wps_status_cb(wps_cb_status status) -{ +void wifi_wps_status_cb(wps_cb_status status) { DEBUGV("wps cb status: %d\r\n", status); - switch (status) { + switch(status) { case WPS_CB_ST_SUCCESS: if(!wifi_wps_disable()) { - DEBUGV("wps disable failed\n"); + DEBUGV("wps disable failed\n"); } wifi_station_connect(); break; @@ -800,13 +728,13 @@ bool ESP8266WiFiClass::beginWPSConfig(void) { _useClientMode = true; - if(_useApMode) { - // turn on AP+STA mode - _mode(WIFI_AP_STA); - } else { - // turn on STA mode - _mode(WIFI_STA); - } + if(_useApMode) { + // turn on AP+STA mode + _mode(WIFI_AP_STA); + } else { + // turn on STA mode + _mode(WIFI_STA); + } disconnect(); @@ -841,11 +769,8 @@ bool ESP8266WiFiClass::beginWPSConfig(void) { //-------------------------------------------------------------- - - -void ESP8266WiFiClass::beginSmartConfig() -{ - if (_smartConfigStarted) +void ESP8266WiFiClass::beginSmartConfig() { + if(_smartConfigStarted) return; if(_useApMode) { @@ -863,27 +788,24 @@ void ESP8266WiFiClass::beginSmartConfig() smartconfig_start(reinterpret_cast(&ESP8266WiFiClass::_smartConfigCallback), 1); } -void ESP8266WiFiClass::stopSmartConfig() -{ - if (!_smartConfigStarted) +void ESP8266WiFiClass::stopSmartConfig() { + if(!_smartConfigStarted) return; smartconfig_stop(); _smartConfigStarted = false; } -bool ESP8266WiFiClass::smartConfigDone() -{ - if (!_smartConfigStarted) +bool ESP8266WiFiClass::smartConfigDone() { + if(!_smartConfigStarted) return false; return _smartConfigDone; } -void ESP8266WiFiClass::_smartConfigCallback(uint32_t st, void* result) -{ +void ESP8266WiFiClass::_smartConfigCallback(uint32_t st, void* result) { sc_status status = (sc_status) st; - if (status == SC_STATUS_LINK) { + if(status == SC_STATUS_LINK) { station_config* sta_conf = reinterpret_cast(result); wifi_station_set_config(sta_conf); @@ -891,13 +813,11 @@ void ESP8266WiFiClass::_smartConfigCallback(uint32_t st, void* result) wifi_station_connect(); WiFi._smartConfigDone = true; - } - else if (status == SC_STATUS_LINK_OVER) { + } else if(status == SC_STATUS_LINK_OVER) { WiFi.stopSmartConfig(); } } - //-------------------------------------------------------------- /** @@ -906,7 +826,7 @@ void ESP8266WiFiClass::_smartConfigCallback(uint32_t st, void* result) * @return bool */ bool ESP8266WiFiClass::setSleepMode(WiFiSleepType_t type) { - return wifi_set_sleep_type((sleep_type_t)type); + return wifi_set_sleep_type((sleep_type_t) type); } /** @@ -914,7 +834,7 @@ bool ESP8266WiFiClass::setSleepMode(WiFiSleepType_t type) { * @return sleep_type_t */ WiFiSleepType_t ESP8266WiFiClass::getSleepMode() { - return (WiFiSleepType_t)wifi_get_sleep_type(); + return (WiFiSleepType_t) wifi_get_sleep_type(); } /** @@ -923,7 +843,7 @@ WiFiSleepType_t ESP8266WiFiClass::getSleepMode() { * @return bool */ bool ESP8266WiFiClass::setPhyMode(WiFiPhyMode_t mode) { - return wifi_set_phy_mode((phy_mode_t)mode); + return wifi_set_phy_mode((phy_mode_t) mode); } /** @@ -931,28 +851,26 @@ bool ESP8266WiFiClass::setPhyMode(WiFiPhyMode_t mode) { * @return phy_mode_t */ WiFiPhyMode_t ESP8266WiFiClass::getPhyMode() { - return (WiFiPhyMode_t)wifi_get_phy_mode(); + return (WiFiPhyMode_t) wifi_get_phy_mode(); } //-------------------------------------------------------------- -void ESP8266WiFiClass::_eventCallback(void* arg) -{ +void ESP8266WiFiClass::_eventCallback(void* arg) { System_Event_t* event = reinterpret_cast(arg); DEBUGV("wifi evt: %d\r\n", event->event); - if (event->event == EVENT_STAMODE_DISCONNECTED) { + if(event->event == EVENT_STAMODE_DISCONNECTED) { WiFiClient::stopAll(); } } -void ESP8266WiFiClass::printDiag(Print& p) -{ - const char* modes[] = {"NULL", "STA", "AP", "STA+AP"}; +void ESP8266WiFiClass::printDiag(Print& p) { + const char* modes[] = { "NULL", "STA", "AP", "STA+AP" }; p.print("Mode: "); p.println(modes[wifi_get_opmode()]); - const char* phymodes[] = {"", "B", "G", "N"}; + const char* phymodes[] = { "", "B", "G", "N" }; p.print("PHY mode: "); p.println(phymodes[(int) wifi_get_phy_mode()]); @@ -995,5 +913,4 @@ bool ESP8266WiFiClass::_scanComplete = false; size_t ESP8266WiFiClass::_scanCount = 0; void* ESP8266WiFiClass::_scanResult = 0; - ESP8266WiFiClass WiFi; diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFi.h b/libraries/ESP8266WiFi/src/ESP8266WiFi.h index 5a7fe54c1..8e65af3f7 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFi.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFi.h @@ -1,23 +1,23 @@ /* - ESP8266WiFi.h - esp8266 Wifi support. - Based on WiFi.h from Ardiono WiFi shield library. - Copyright (c) 2011-2014 Arduino. All right reserved. - Modified by Ivan Grokhotkov, December 2014 + ESP8266WiFi.h - esp8266 Wifi support. + Based on WiFi.h from Ardiono WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ #ifndef WiFi_h #define WiFi_h @@ -25,7 +25,7 @@ #include extern "C" { - #include "include/wl_definitions.h" +#include "include/wl_definitions.h" } #include "IPAddress.h" @@ -36,11 +36,12 @@ extern "C" { #define WIFI_SCAN_RUNNING (-1) #define WIFI_SCAN_FAILED (-2) - // Note: // this enums need to be in sync with the SDK! -enum WiFiMode { WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3 }; +enum WiFiMode { + WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3 +}; typedef enum { WIFI_PHY_MODE_11B = 1, WIFI_PHY_MODE_11G = 2, WIFI_PHY_MODE_11N = 3 @@ -50,390 +51,375 @@ typedef enum { WIFI_NONE_SLEEP = 0, WIFI_LIGHT_SLEEP = 2, WIFI_MODEM_SLEEP = 3 } WiFiSleepType_t; +class ESP8266WiFiClass { + public: -class ESP8266WiFiClass -{ -public: + ESP8266WiFiClass(); - ESP8266WiFiClass(); + void persistent(bool persistent); - void persistent(bool persistent); + void mode(WiFiMode); + WiFiMode getMode(); - void mode(WiFiMode); - WiFiMode getMode(); + /** + * Start Wifi connection + * if passphrase is set the most secure supported mode will be automatically selected + * @param ssid const char* Pointer to the SSID string. + * @param passphrase const char * Optional. Passphrase. Valid characters in a passphrase must be between ASCII 32-126 (decimal). + * @param bssid uint8_t[6] Optional. BSSID / MAC of AP + * @param channel Optional. Channel of AP + * @return + */ + int begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL); + int begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL); - /** - * Start Wifi connection - * if passphrase is set the most secure supported mode will be automatically selected - * @param ssid const char* Pointer to the SSID string. - * @param passphrase const char * Optional. Passphrase. Valid characters in a passphrase must be between ASCII 32-126 (decimal). - * @param bssid uint8_t[6] Optional. BSSID / MAC of AP - * @param channel Optional. Channel of AP - * @return - */ - int begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL); - int begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL); + // Use sdk config to connect. + int begin(); - // Use sdk config to connect. - int begin(); + /* Wait for Wifi connection to reach a result + * returns the status reached or disconnect if STA is off + */ + uint8_t waitForConnectResult(); + /* Set up an open access point + * + * param ssid: Pointer to the SSID string. + */ + void softAP(const char* ssid); - /* Wait for Wifi connection to reach a result - * returns the status reached or disconnect if STA is off - */ - uint8_t waitForConnectResult(); + /* Set up a WPA2-secured access point + * + * param ssid: Pointer to the SSID string. + * param passphrase: Pointer to passphrase, 8 characters min. + * param channel: WiFi channel number, 1 - 13. + * param ssid_hidden: Network cloaking? 0 = broadcast SSID, 1 = hide SSID + */ + void softAP(const char* ssid, const char* passphrase, int channel = 1, int ssid_hidden = 0); - /* Set up an open access point - * - * param ssid: Pointer to the SSID string. - */ - void softAP(const char* ssid); + /* Change Ip configuration settings disabling the dhcp client + * + * param local_ip: Static ip configuration + * param gateway: Static gateway configuration + * param subnet: Static Subnet mask + */ + void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet); + /* Change Ip configuration settings disabling the dhcp client + * + * param local_ip: Static ip configuration + * param gateway: Static gateway configuration + * param subnet: Static Subnet mask + * param dns: Defined DNS + */ + void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns); - /* Set up a WPA2-secured access point - * - * param ssid: Pointer to the SSID string. - * param passphrase: Pointer to passphrase, 8 characters min. - * param channel: WiFi channel number, 1 - 13. - * param ssid_hidden: Network cloaking? 0 = broadcast SSID, 1 = hide SSID - */ - void softAP(const char* ssid, const char* passphrase, int channel = 1, int ssid_hidden = 0); + /* Configure access point + * + * param local_ip: access point IP + * param gateway: gateway IP + * param subnet: subnet mask + */ + void softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - * param gateway: Static gateway configuration - * param subnet: Static Subnet mask - */ - void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet); + /* + * Disconnect from the network (close AP) + * + * return: one value of wl_status_t enum + */ + int softAPdisconnect(bool wifioff = false); - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - * param gateway: Static gateway configuration - * param subnet: Static Subnet mask - * param dns: Defined DNS - */ - void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns); + /* + * Disconnect from the network + * + * return: one value of wl_status_t enum + */ + int disconnect(bool wifioff = false); - /* Configure access point - * - * param local_ip: access point IP - * param gateway: gateway IP - * param subnet: subnet mask - */ - void softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); + /* + * Get the station interface MAC address. + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + * return: String + */ + uint8_t* macAddress(uint8_t* mac); + String macAddress(void); - /* - * Disconnect from the network (close AP) - * - * return: one value of wl_status_t enum - */ - int softAPdisconnect(bool wifioff = false); + /* + * Get the softAP interface MAC address. + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + * return: String + */ + uint8_t* softAPmacAddress(uint8_t* mac); + String softAPmacAddress(void); - /* - * Disconnect from the network - * - * return: one value of wl_status_t enum - */ - int disconnect(bool wifioff = false); + /* + * Get the station interface IP address. + * + * return: Ip address value + */ + IPAddress localIP(); - /* - * Get the station interface MAC address. - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - * return: String - */ - uint8_t* macAddress(uint8_t* mac); - String macAddress(void); + /* + * Get the softAP interface IP address. + * + * return: Ip address value + */ + IPAddress softAPIP(); - /* - * Get the softAP interface MAC address. - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - * return: String - */ - uint8_t* softAPmacAddress(uint8_t* mac); - String softAPmacAddress(void); + /* + * Get the interface subnet mask address. + * + * return: subnet mask address value + */ + IPAddress subnetMask(); - /* - * Get the station interface IP address. - * - * return: Ip address value - */ - IPAddress localIP(); + /* + * Get the gateway ip address. + * + * return: gateway ip address value + */ + IPAddress gatewayIP(); - /* - * Get the softAP interface IP address. - * - * return: Ip address value - */ - IPAddress softAPIP(); + /* + * Get the DNS ip address. + * + * return: DNS ip address value + */ + IPAddress dnsIP(int dns_no = 0); - /* - * Get the interface subnet mask address. - * - * return: subnet mask address value - */ - IPAddress subnetMask(); + /* + * Return the current SSID associated with the network + * + * return: ssid string + */ + String SSID() const; - /* - * Get the gateway ip address. - * - * return: gateway ip address value - */ - IPAddress gatewayIP(); + /* + * Return the current pre shared key associated with the network + * + * return: psk string + */ + String psk() const; - /* - * Get the DNS ip address. - * - * return: DNS ip address value - */ - IPAddress dnsIP(int dns_no = 0); + /* + * Return the current bssid / mac associated with the network if configured + * + * return: bssid uint8_t * + */ + uint8_t *BSSID(void); - /* - * Return the current SSID associated with the network - * - * return: ssid string - */ - String SSID() const; + /* + * Return the current bssid / mac associated with the network if configured + * + * return: bssid string + */ + String BSSIDstr(void); - /* - * Return the current pre shared key associated with the network - * - * return: psk string - */ - String psk() const; + /* + * Return the current channel associated with the network + * + * return: channel + */ + int32_t channel(void); - /* - * Return the current bssid / mac associated with the network if configured - * - * return: bssid uint8_t * - */ - uint8_t *BSSID(void); + /* + * Return the current network RSSI. + * + * return: RSSI value + */ - /* - * Return the current bssid / mac associated with the network if configured - * - * return: bssid string - */ - String BSSIDstr(void); + int32_t RSSI(); - /* - * Return the current channel associated with the network - * - * return: channel - */ - int32_t channel(void); + /* + * called to get the scan state in Async mode + * + * return -1 if scan not fin + * return -2 if scan not triggered + */ + int8_t scanComplete(); - /* - * Return the current network RSSI. - * - * return: RSSI value - */ + /* + * delete last scan result from RAM + */ + void scanDelete(); - int32_t RSSI(); + /* + * Start scan WiFi networks available + * + * return: Number of discovered networks + */ + int8_t scanNetworks(bool async = false, bool show_hidden = false); + /* + * Return the SSID discovered during the network scan. + * + * param networkItem: specify from which network item want to get the information + * + * return: ssid string of the specified item on the networks scanned list + */ + String SSID(uint8_t networkItem); - /* - * called to get the scan state in Async mode - * - * return -1 if scan not fin - * return -2 if scan not triggered - */ - int8_t scanComplete(); + /* + * Return the encryption type of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list + */ + uint8_t encryptionType(uint8_t networkItem); - /* - * delete last scan result from RAM - */ - void scanDelete(); + /* + * Return the RSSI of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: signed value of RSSI of the specified item on the networks scanned list + */ + int32_t RSSI(uint8_t networkItem); - /* - * Start scan WiFi networks available - * - * return: Number of discovered networks - */ - int8_t scanNetworks(bool async = false, bool show_hidden = false); + /** + * return MAC / BSSID of scanned wifi + * @param networkItem specify from which network item want to get the information + * @return uint8_t * MAC / BSSID of scanned wifi + */ + uint8_t * BSSID(uint8_t networkItem); - /* - * Return the SSID discovered during the network scan. - * - * param networkItem: specify from which network item want to get the information - * - * return: ssid string of the specified item on the networks scanned list - */ - String SSID(uint8_t networkItem); + /** + * return MAC / BSSID of scanned wifi + * @param networkItem specify from which network item want to get the information + * @return String MAC / BSSID of scanned wifi + */ + String BSSIDstr(uint8_t networkItem); - /* - * Return the encryption type of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list - */ - uint8_t encryptionType(uint8_t networkItem); + /** + * return channel of scanned wifi + * @param networkItem specify from which network item want to get the information + * @return uint32_t channel of scanned wifi + */ + int32_t channel(uint8_t networkItem); - /* - * Return the RSSI of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: signed value of RSSI of the specified item on the networks scanned list - */ - int32_t RSSI(uint8_t networkItem); + /** + * return if the scanned wifi is Hidden (no SSID) + * @param networkItem specify from which network item want to get the information + * @return bool (true == hidden) + */ + bool isHidden(uint8_t networkItem); + /** + * loads all infos from a scanned wifi in to the ptr parameters + * @param networkItem uint8_t + * @param ssid const char** + * @param encryptionType uint8_t * + * @param RSSI int32_t * + * @param BSSID uint8_t ** + * @param channel int32_t * + * @param isHidden bool * + * @return (true if ok) + */ + bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden); - /** - * return MAC / BSSID of scanned wifi - * @param networkItem specify from which network item want to get the information - * @return uint8_t * MAC / BSSID of scanned wifi - */ - uint8_t * BSSID(uint8_t networkItem); + /* + * Return Connection status. + * + * return: one of the value defined in wl_status_t + */ + wl_status_t status(); - /** - * return MAC / BSSID of scanned wifi - * @param networkItem specify from which network item want to get the information - * @return String MAC / BSSID of scanned wifi - */ - String BSSIDstr(uint8_t networkItem); + /* + * Resolve the given hostname to an IP address. + * param aHostname: Name to be resolved + * param aResult: IPAddress structure to store the returned IP address + * result: 1 if aIPAddrString was successfully converted to an IP address, + * else error code + */ + int hostByName(const char* aHostname, IPAddress& aResult); - /** - * return channel of scanned wifi - * @param networkItem specify from which network item want to get the information - * @return uint32_t channel of scanned wifi - */ - int32_t channel(uint8_t networkItem); + /* + * Get ESP8266 station DHCP hostname + */ + String hostname(void); - /** - * return if the scanned wifi is Hidden (no SSID) - * @param networkItem specify from which network item want to get the information - * @return bool (true == hidden) - */ - bool isHidden(uint8_t networkItem); + /* + * Set ESP8266 station DHCP hostname + * hostname, max length:32 + */ + bool hostname(char* aHostname);bool hostname(const char* aHostname);bool hostname(String aHostname); - /** - * loads all infos from a scanned wifi in to the ptr parameters - * @param networkItem uint8_t - * @param ssid const char** - * @param encryptionType uint8_t * - * @param RSSI int32_t * - * @param BSSID uint8_t ** - * @param channel int32_t * - * @param isHidden bool * - * @return (true if ok) - */ - bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden); + /** + * WPS config + * so far only WPS_TYPE_PBC is supported (SDK 1.2.0) + */ + bool beginWPSConfig(void); + /* + * Output WiFi settings to an object derived from Print interface (like Serial). + * + */ + void printDiag(Print& dest); - /* - * Return Connection status. - * - * return: one of the value defined in wl_status_t - */ - wl_status_t status(); + /* + * Start SmartConfig + * + */ + void beginSmartConfig(); - /* - * Resolve the given hostname to an IP address. - * param aHostname: Name to be resolved - * param aResult: IPAddress structure to store the returned IP address - * result: 1 if aIPAddrString was successfully converted to an IP address, - * else error code - */ - int hostByName(const char* aHostname, IPAddress& aResult); + /* + * Query SmartConfig status, to decide when stop config + * + */ + bool smartConfigDone(); - /* - * Get ESP8266 station DHCP hostname - */ - String hostname(void); + /* + * Stop SmartConfig + * + */ + void stopSmartConfig(); - /* - * Set ESP8266 station DHCP hostname - * hostname, max length:32 - */ - bool hostname(char* aHostname); - bool hostname(const char* aHostname); - bool hostname(String aHostname); + friend class WiFiClient; + friend class WiFiServer; + /** + * set Sleep mode + * @param type WiFiPhyMode_t + * @return bool + */ + bool setSleepMode(WiFiSleepType_t type); - /** - * WPS config - * so far only WPS_TYPE_PBC is supported (SDK 1.2.0) - */ - bool beginWPSConfig(void); + /** + * get Sleep mode + * @return sleep_type_t + */ + WiFiSleepType_t getSleepMode(); - /* - * Output WiFi settings to an object derived from Print interface (like Serial). - * - */ - void printDiag(Print& dest); + /** + * set phy Mode + * @param mode phy_mode_t + * @return bool + */ + bool setPhyMode(WiFiPhyMode_t mode); - /* - * Start SmartConfig - * - */ - void beginSmartConfig(); + /** + * get phy Mode + * @return phy_mode_t + */ + WiFiPhyMode_t getPhyMode(); - /* - * Query SmartConfig status, to decide when stop config - * - */ - bool smartConfigDone(); + protected: + void _mode(WiFiMode); + static void _scanDone(void* result, int status); + void * _getScanInfoByIndex(int i); + static void _smartConfigCallback(uint32_t status, void* result); + static void _eventCallback(void *event);bool _smartConfigStarted;bool _smartConfigDone; - /* - * Stop SmartConfig - * - */ - void stopSmartConfig(); + bool _useApMode;bool _useClientMode;bool _useStaticIp;bool _persistent; - friend class WiFiClient; - friend class WiFiServer; + static bool _scanAsync; + static bool _scanStarted; + static bool _scanComplete; - /** - * set Sleep mode - * @param type WiFiPhyMode_t - * @return bool - */ - bool setSleepMode(WiFiSleepType_t type); - - /** - * get Sleep mode - * @return sleep_type_t - */ - WiFiSleepType_t getSleepMode(); - - /** - * set phy Mode - * @param mode phy_mode_t - * @return bool - */ - bool setPhyMode(WiFiPhyMode_t mode); - - /** - * get phy Mode - * @return phy_mode_t - */ - WiFiPhyMode_t getPhyMode(); - -protected: - void _mode(WiFiMode); - static void _scanDone(void* result, int status); - void * _getScanInfoByIndex(int i); - static void _smartConfigCallback(uint32_t status, void* result); - static void _eventCallback(void *event); - bool _smartConfigStarted; - bool _smartConfigDone; - - bool _useApMode; - bool _useClientMode; - bool _useStaticIp; - bool _persistent; - - static bool _scanAsync; - static bool _scanStarted; - static bool _scanComplete; - - static size_t _scanCount; - static void* _scanResult; + static size_t _scanCount; + static void* _scanResult; };