LoRa_APRS_iGate/src/TaskWifi.cpp

56 wiersze
1.6 KiB
C++
Czysty Zwykły widok Historia

#include <WiFi.h>
#include <logger.h>
2021-01-04 22:10:23 +00:00
#include "Task.h"
2021-05-23 21:28:03 +00:00
#include "TaskEth.h"
#include "TaskWifi.h"
#include "project_configuration.h"
WifiTask::WifiTask() : Task(TASK_WIFI, TaskWifi), _oldWifiStatus(WL_IDLE_STATUS) {
}
WifiTask::~WifiTask() {
}
2021-05-18 22:44:37 +00:00
bool WifiTask::setup(System &system) {
2021-07-15 19:45:44 +00:00
// Don't save WiFi configuration in flash
WiFi.persistent(false);
// Set WiFi to station mode
WiFi.mode(WIFI_STA);
2021-05-23 21:28:03 +00:00
WiFi.onEvent(WiFiEvent);
2021-05-18 22:44:37 +00:00
WiFi.setHostname(system.getUserConfig()->callsign.c_str());
2021-07-15 19:45:44 +00:00
if (system.getUserConfig()->network.DHCP == false)
2021-07-18 17:41:15 +00:00
WiFi.config(system.getUserConfig()->network.staticIP, system.getUserConfig()->network.gateway, system.getUserConfig()->network.subnet, system.getUserConfig()->network.dns1, system.getUserConfig()->network.dns2);
2021-07-15 19:45:44 +00:00
2021-05-18 22:44:37 +00:00
for (Configuration::Wifi::AP ap : system.getUserConfig()->wifi.APs) {
logPrintD("Looking for AP: ");
logPrintlnD(ap.SSID);
2021-05-18 23:05:34 +00:00
_wiFiMulti.addAP(ap.SSID.c_str(), ap.password.c_str());
}
return true;
}
2021-05-18 22:44:37 +00:00
bool WifiTask::loop(System &system) {
2021-05-18 23:05:34 +00:00
const uint8_t wifi_status = _wiFiMulti.run();
if (wifi_status != WL_CONNECTED) {
2021-05-18 22:44:37 +00:00
system.connectedViaWifiEth(false);
logPrintlnE("WiFi not connected!");
_oldWifiStatus = wifi_status;
_stateInfo = "WiFi not connected";
_state = Error;
return false;
} else if (wifi_status != _oldWifiStatus) {
logPrintD("IP address: ");
logPrintlnD(WiFi.localIP().toString());
_oldWifiStatus = wifi_status;
return false;
}
2021-05-18 22:44:37 +00:00
system.connectedViaWifiEth(true);
_stateInfo = WiFi.localIP().toString();
_state = Okay;
return true;
}