BLEBeaconScan / my_wifi.h /
352ff3a 5 years ago
1 contributor
88 lines | 2.302kb
#ifndef _MY_WIFI_H
#define _MY_WIFI_H

#include <WiFi.h>
#include <WiFiClient.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[]={
  {"kawifi", "g7i9a1n14d4o15r18"},
  {"ActilityBackup", "ActilitY@PLQ!"},
  {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