Renamed WifiSettings to NetworkSettings and implemented first ethernet initialization
This commit is contained in:
parent
9edd35444d
commit
c7aa22ce6c
@ -2,11 +2,12 @@
|
||||
#pragma once
|
||||
|
||||
#include <DNSServer.h>
|
||||
#include <WiFi.h>
|
||||
#include <memory>
|
||||
|
||||
class WiFiSettingsClass {
|
||||
class NetworkSettingsClass {
|
||||
public:
|
||||
WiFiSettingsClass();
|
||||
NetworkSettingsClass();
|
||||
void init();
|
||||
void loop();
|
||||
void applyConfig();
|
||||
@ -17,6 +18,7 @@ private:
|
||||
void setHostname();
|
||||
void setStaticIp();
|
||||
void setupMode();
|
||||
void NetworkEvent(WiFiEvent_t event);
|
||||
bool adminEnabled = true;
|
||||
bool forceDisconnection = false;
|
||||
int adminTimeoutCounter = 0;
|
||||
@ -30,4 +32,4 @@ private:
|
||||
bool dnsServerStatus = false;
|
||||
};
|
||||
|
||||
extern WiFiSettingsClass WiFiSettings;
|
||||
extern NetworkSettingsClass NetworkSettings;
|
||||
@ -4,7 +4,7 @@
|
||||
*/
|
||||
#include "MqttSettings.h"
|
||||
#include "Configuration.h"
|
||||
#include "WiFiSettings.h"
|
||||
#include "NetworkSettings.h"
|
||||
#include <AsyncMqttClient.h>
|
||||
#include <Ticker.h>
|
||||
#include <WiFi.h>
|
||||
@ -54,7 +54,7 @@ void MqttSettingsClass::performConnect()
|
||||
willTopic = getPrefix() + config.Mqtt_LwtTopic;
|
||||
mqttClient.setWill(willTopic.c_str(), 2, config.Mqtt_Retain, config.Mqtt_LwtValue_Offline);
|
||||
|
||||
clientId = WiFiSettings.getApName();
|
||||
clientId = NetworkSettings.getApName();
|
||||
mqttClient.setClientId(clientId.c_str());
|
||||
|
||||
mqttClient.connect();
|
||||
|
||||
@ -2,24 +2,66 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Thomas Basler and others
|
||||
*/
|
||||
#include "WiFiSettings.h"
|
||||
#include "NetworkSettings.h"
|
||||
#include "Configuration.h"
|
||||
#include "defaults.h"
|
||||
#include <WiFi.h>
|
||||
#ifdef OPENDTU_ETHERNET
|
||||
#include <ETH.h>
|
||||
#endif
|
||||
|
||||
WiFiSettingsClass::WiFiSettingsClass()
|
||||
NetworkSettingsClass::NetworkSettingsClass()
|
||||
: apIp(192, 168, 4, 1)
|
||||
, apNetmask(255, 255, 255, 0)
|
||||
{
|
||||
dnsServer.reset(new DNSServer());
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::init()
|
||||
void NetworkSettingsClass::init()
|
||||
{
|
||||
using namespace std::placeholders;
|
||||
|
||||
WiFi.onEvent(std::bind(&NetworkSettingsClass::NetworkEvent, this, _1));
|
||||
setupMode();
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::setupMode()
|
||||
void NetworkSettingsClass::NetworkEvent(WiFiEvent_t event)
|
||||
{
|
||||
switch (event) {
|
||||
#ifdef OPENDTU_ETHERNET
|
||||
case ARDUINO_EVENT_ETH_START:
|
||||
Serial.println("ETH start");
|
||||
ETH.setHostname("esp32-ethernet");
|
||||
break;
|
||||
case ARDUINO_EVENT_ETH_STOP:
|
||||
Serial.println("ETH stop");
|
||||
break;
|
||||
case ARDUINO_EVENT_ETH_CONNECTED:
|
||||
Serial.println("ETH connected");
|
||||
ETH.config(INADDR_NONE, INADDR_NONE, INADDR_NONE, INADDR_NONE);
|
||||
break;
|
||||
case ARDUINO_EVENT_ETH_GOT_IP:
|
||||
Serial.println("ETH got IP");
|
||||
break;
|
||||
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
||||
Serial.println("ETH disconnected");
|
||||
break;
|
||||
#endif
|
||||
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
|
||||
Serial.println("WiFi connected");
|
||||
break;
|
||||
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
||||
Serial.println("WiFi disconnected");
|
||||
break;
|
||||
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
||||
Serial.println("WiFi got ip");
|
||||
break;
|
||||
default:
|
||||
Serial.printf("Event: %d\n", event);
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsClass::setupMode()
|
||||
{
|
||||
if (adminEnabled) {
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
@ -34,16 +76,19 @@ void WiFiSettingsClass::setupMode()
|
||||
dnsServerStatus = false;
|
||||
WiFi.mode(WIFI_STA);
|
||||
}
|
||||
#ifdef OPENDTU_ETHERNET
|
||||
ETH.begin();
|
||||
#endif
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::enableAdminMode()
|
||||
void NetworkSettingsClass::enableAdminMode()
|
||||
{
|
||||
adminEnabled = true;
|
||||
adminTimeoutCounter = 0;
|
||||
setupMode();
|
||||
}
|
||||
|
||||
String WiFiSettingsClass::getApName()
|
||||
String NetworkSettingsClass::getApName()
|
||||
{
|
||||
uint32_t chipId = 0;
|
||||
for (int i = 0; i < 17; i += 8) {
|
||||
@ -52,7 +97,7 @@ String WiFiSettingsClass::getApName()
|
||||
return String(ACCESS_POINT_NAME + String(chipId));
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::loop()
|
||||
void NetworkSettingsClass::loop()
|
||||
{
|
||||
if (millis() - lastTimerCall > 1000) {
|
||||
adminTimeoutCounter++;
|
||||
@ -101,7 +146,7 @@ void WiFiSettingsClass::loop()
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::applyConfig()
|
||||
void NetworkSettingsClass::applyConfig()
|
||||
{
|
||||
setHostname();
|
||||
if (!strcmp(Configuration.get().WiFi_Ssid, "")) {
|
||||
@ -121,7 +166,7 @@ void WiFiSettingsClass::applyConfig()
|
||||
setStaticIp();
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::setHostname()
|
||||
void NetworkSettingsClass::setHostname()
|
||||
{
|
||||
Serial.print(F("Setting Hostname... "));
|
||||
if (strcmp(Configuration.get().WiFi_Hostname, "")) {
|
||||
@ -135,7 +180,7 @@ void WiFiSettingsClass::setHostname()
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiSettingsClass::setStaticIp()
|
||||
void NetworkSettingsClass::setStaticIp()
|
||||
{
|
||||
if (!Configuration.get().WiFi_Dhcp) {
|
||||
Serial.print(F("Configuring WiFi STA static IP... "));
|
||||
@ -149,4 +194,4 @@ void WiFiSettingsClass::setStaticIp()
|
||||
}
|
||||
}
|
||||
|
||||
WiFiSettingsClass WiFiSettings;
|
||||
NetworkSettingsClass NetworkSettings;
|
||||
@ -6,7 +6,7 @@
|
||||
#include "ArduinoJson.h"
|
||||
#include "AsyncJson.h"
|
||||
#include "Configuration.h"
|
||||
#include "WiFiSettings.h"
|
||||
#include "NetworkSettings.h"
|
||||
#include "helper.h"
|
||||
|
||||
void WebApiNetworkClass::init(AsyncWebServer* server)
|
||||
@ -39,7 +39,7 @@ void WebApiNetworkClass::onNetworkStatus(AsyncWebServerRequest* request)
|
||||
root[F("sta_mac")] = WiFi.macAddress();
|
||||
root[F("sta_rssi")] = WiFi.RSSI();
|
||||
root[F("ap_status")] = ((WiFi.getMode() & WIFI_AP) != 0);
|
||||
root[F("ap_ssid")] = WiFiSettings.getApName();
|
||||
root[F("ap_ssid")] = NetworkSettings.getApName();
|
||||
root[F("ap_ip")] = WiFi.softAPIP().toString();
|
||||
root[F("ap_mac")] = WiFi.softAPmacAddress();
|
||||
root[F("ap_stationnum")] = WiFi.softAPgetStationNum();
|
||||
@ -199,6 +199,6 @@ void WebApiNetworkClass::onNetworkAdminPost(AsyncWebServerRequest* request)
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
|
||||
WiFiSettings.enableAdminMode();
|
||||
WiFiSettings.applyConfig();
|
||||
NetworkSettings.enableAdminMode();
|
||||
NetworkSettings.applyConfig();
|
||||
}
|
||||
@ -9,7 +9,7 @@
|
||||
#include "MqttSettings.h"
|
||||
#include "NtpSettings.h"
|
||||
#include "WebApi.h"
|
||||
#include "WiFiSettings.h"
|
||||
#include "NetworkSettings.h"
|
||||
#include "defaults.h"
|
||||
#include <Arduino.h>
|
||||
#include <LittleFS.h>
|
||||
@ -55,9 +55,9 @@ void setup()
|
||||
|
||||
// Initialize WiFi
|
||||
Serial.print(F("Initialize WiFi... "));
|
||||
WiFiSettings.init();
|
||||
NetworkSettings.init();
|
||||
Serial.println(F("done"));
|
||||
WiFiSettings.applyConfig();
|
||||
NetworkSettings.applyConfig();
|
||||
|
||||
// Initialize NTP
|
||||
Serial.print(F("Initialize NTP... "));
|
||||
@ -100,7 +100,7 @@ void setup()
|
||||
|
||||
void loop()
|
||||
{
|
||||
WiFiSettings.loop();
|
||||
NetworkSettings.loop();
|
||||
yield();
|
||||
Hoymiles.loop();
|
||||
yield();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user