You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
2.3 KiB
C++

4 years ago
#include "wlan.h"
4 years ago
#include "settings.h"
const char *deviceName = "paperdash-display";
RTC_DATA_ATTR int wifiFailedCount = 0;
4 years ago
void initClientMode(const char *ssid, const char *password);
void initAPMode();
4 years ago
void setupWlan()
{
Serial.println("setup Wlan");
WiFi.setHostname(deviceName);
4 years ago
// load wifi settings
4 years ago
String ssid = NVS.getString("wifi_ssid");
String password = NVS.getString("wifi_password");
4 years ago
// TODO count failed connecting wifiFailedCount <=3
if (!ssid.isEmpty() && !password.isEmpty()) // && wifiFailedCount <=3
4 years ago
{
// client mode
initClientMode(ssid.c_str(), password.c_str());
}
else
{
// ap mode
initAPMode();
}
Serial.println("setup Wlan - done");
4 years ago
}
4 years ago
void ___connectToNetwork()
{
uint8_t veces = 10;
WiFi.begin("ssid", "password");
Serial.println("Establishing connection to WiFi..");
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println(veces);
if (!veces--)
{
veces = 10;
WiFi.disconnect();
Serial.println("Wifi reset...");
delay(1000);
WiFi.begin("ssid", "password");
Serial.println("Establishing connection to WiFi..");
}
}
Serial.println("Connected to network");
}
4 years ago
void initClientMode(const char *ssid, const char *password)
{
4 years ago
uint8_t veces = 10;
long startMills = millis();
Serial.print(" Connecting to: ");
4 years ago
Serial.print(ssid);
// print try count
Serial.print(" (");
Serial.print(wifiFailedCount);
Serial.print("x)");
// connecting
WiFi.mode(WIFI_STA);
4 years ago
WiFi.begin(ssid, password);
4 years ago
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.println(veces);
if (!veces--)
{
veces = 10;
WiFi.disconnect();
Serial.println("Wifi reset...");
delay(500);
WiFi.begin(ssid, password);
Serial.println("Establishing connection to WiFi..");
}
}
/*
while (WiFi.waitForConnectResult() != WL_CONNECTED)
{
wifiFailedCount++;
Serial.println("Connection Failed! Rebooting...");
delay(100);
ESP.restart();
}
4 years ago
*/
4 years ago
Serial.println(" ...connected");
Serial.print(" IP address: ");
Serial.println(WiFi.localIP());
Serial.print(" connected in: ");
Serial.println(millis() - startMills);
4 years ago
}
4 years ago
void initAPMode()
{
Serial.println(" init AP (Access Point)");
4 years ago
4 years ago
WiFi.softAP("paperdash.io");
4 years ago
IPAddress IP = WiFi.softAPIP();
4 years ago
Serial.print(" AP IP address: ");
Serial.println(IP);
4 years ago
}
bool wlan_isConnected()
4 years ago
{
return WiFi.isConnected();
4 years ago
}