-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWifiManager.cpp
More file actions
59 lines (47 loc) · 1.5 KB
/
WifiManager.cpp
File metadata and controls
59 lines (47 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "WifiManager.h"
#include "APServer.h"
SINGLETON_CPP(WifiManager)
WifiManager::WifiManager(){
configuration = singleton(Configuration);
configuration->addObserver(this);
setup();
}
void WifiManager::setup(){
connected = false;
this->connect();
}
void WifiManager::connect(){
disconnect();
APServer* ap = singleton(APServer);
WiFi.begin(configuration->Wifi->ssid.c_str(),configuration->Wifi->password.c_str());
WiFi.mode(WIFI_STA);
Serial.println("Attempting to connect to SSID " + configuration->Wifi->ssid + "... password=" + configuration->Wifi->password + " " + String(configuration->Wifi->password.length()));
while ( WiFi.status() != WL_CONNECTED) {
LOOP_UNTIL(2000){
yield();
ap->handleClient(); /* allow connections to AP, in case someone needs to change ssid */
}
}
if (!connected){ /* to not print twice in case of connection from the AP */
connected = true;
Serial.println("Connected to wifi");
configuration->Wifi->ip = ipToString(WiFi.localIP());
printWifiStatus();
ssid = configuration->Wifi->ssid;
password = configuration->Wifi->password;
}
}
void WifiManager::disconnect(){
WiFi.disconnect();
connected = false;
}
void WifiManager::configurationChanged(){
String lastSSID = ssid;
String lastPassword = password;
if ((configuration->Wifi->ssid != lastSSID) || (configuration->Wifi->password != lastPassword)){
Serial.println("WifiManager::configurationChanged()");
setup();
}
}
WifiManager::~WifiManager(){
}