Formal description
[esp-clock.git] / net.cpp
1 #include "Clock.h"
2
3 bool isNetConnected = false;
4 const char* SSID;
5 const char* PSK;
6
7 const char* apMsg1 PROGMEM = "Активирована точка доступа ";
8 const char* apMsg2 PROGMEM = ", пароль ";
9 const char* apMsg3 PROGMEM = ", IP-адрес ";
10
11 void setupNet(bool AP) {
12   SSID = cfg.getCharValue(F("sta_ssid"));
13   PSK = cfg.getCharValue(F("sta_psk"));
14   if (SSID && SSID[0] && !AP) {
15     WiFi.mode(WIFI_STA);
16     WiFi.begin(SSID,PSK);
17     isApEnabled = false;
18     Serial.println(F("STA mode active"));
19   } else {
20     SSID = cfg.getCharValue(F("ap_ssid"));
21     PSK = cfg.getCharValue(F("ap_psk"));
22     if (!SSID || !SSID[0]) {
23       SSID = "WiFi Clock";
24     }
25     WiFi.mode(WIFI_AP);
26     WiFi.softAP(SSID,PSK);
27     Serial.println(F("AP mode active"));
28     isApEnabled = true;
29     String IP = WiFi.softAPIP().toString();
30     char buf[256];
31     strcpy_P(buf, apMsg1);
32     strcat(buf, SSID);
33     if (PSK && PSK[0]) {
34       strcat_P(buf, apMsg2);
35       strcat(buf, PSK);
36     }
37     strcat_P(buf, apMsg3);
38     strcat(buf, IP.c_str());
39     message(buf);
40   }
41 }
42
43 void tickNet() {
44   if (isApEnabled) {
45     if (WiFi.status() == WL_CONNECTED && !isNetConnected) {
46       isNetConnected = true;
47       Serial.print(F("Device connected to SSID ")); Serial.println(SSID);
48       message(F("Соединение установлено"));
49     } else if (WiFi.status() != WL_CONNECTED && isNetConnected) {
50       isNetConnected = false;
51       Serial.println(F("Network connection lost"));
52       message(F("Сеть потеряна"));
53     }
54   }
55 }