1 contributor
#ifndef _MY_WIFI_H
#define _MY_WIFI_H
#include <ESP8266WiFi.h>
//-----------------------------------------------------------------------------------
//Wifi Constants
//-----------------------------------------------------------------------------------
String WiFiIP;
typedef struct _ssid_list_t {
const char* ssid;
const char* password;
} ssid_list_t;
//#define _TEST
#ifndef _TEST
static int currentAPIndex = -1;
const int MAX_CNX_RETRIES = 20;
ssid_list_t aplist[]={
{"wifi1", "pass1"},
{"wifi2", "pass2"},
{"wifi3", "pass3"},
{NULL,NULL}
};
#else
const int MAX_CNX_RETRIES = 1;
ssid_list_t aplist[]={
{"Phony", "phonyaccount"},
{NULL,NULL}
};
#endif //_TEST
byte WiFiConnect() {
WiFiIP = "No IP";
//WiFi.disconnect(true);
//delay(2000);
//WiFi.mode(WIFI_STA);
//WiFi.setAutoConnect(true);
byte i = 0;
while(aplist[i].ssid!= NULL) {
WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.disconnect(true);
delay(1000);
WiFi.softAPdisconnect(true);
delay(1000);
Serial.print("WIFI status = ");
Serial.println(WiFi.getMode());
WiFi.begin(aplist[i].ssid, aplist[i].password);
byte count = 0;
Serial.print("WiFiConnect: Connecting to ");
Serial.print(aplist[i].ssid);
draw(aplist[i].ssid, -1, -1, -1);
while(WiFi.status() != WL_CONNECTED && count < MAX_CNX_RETRIES)
{
count ++;
#ifdef BLINK_FLASH
digitalWrite(LED_BUILTIN, 3);
delay(500);
digitalWrite(LED_BUILTIN, 0);
delay(500);
#else
delay(500);
#endif //BLINK_FLASH
Serial.print(".");
draw(aplist[i].ssid, NOLOGO, -1, 100*count/MAX_CNX_RETRIES);
}
if( WiFi.status() == WL_CONNECTED ) {
Serial.println("");
IPAddress ip = WiFi.localIP();
WiFiIP = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
Serial.println("WiFiConnect: "+WiFiIP);
currentAPIndex = i;
break;
}
if(WiFi.status() != WL_CONNECTED)
{
Serial.println("WiFiConnect: Failed");
}
i++;
}
digitalWrite(LED_BUILTIN, HIGH);
return (WiFi.status() == WL_CONNECTED) ? 1 : 0;
}
#endif //_MY_WIFI_H