mirror of
https://github.com/lora-aprs/LoRa_APRS_iGate.git
synced 2026-04-20 22:05:09 +00:00
Merge pull request #102 from dg0tm/feature-84
[WIP] Static IP für W-Lan / ETH closing #84
This commit is contained in:
commit
0e476174d2
4 changed files with 62 additions and 3 deletions
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "Task.h"
|
||||
#include "TaskEth.h"
|
||||
#include "project_configuration.h"
|
||||
|
||||
volatile bool eth_connected = false;
|
||||
|
||||
|
|
@ -19,7 +20,13 @@ void WiFiEvent(WiFiEvent_t event) {
|
|||
logPrintI("WiFi MAC: ");
|
||||
logPrintI(WiFi.macAddress());
|
||||
logPrintI(", IPv4: ");
|
||||
logPrintlnI(WiFi.localIP().toString());
|
||||
logPrintI(WiFi.localIP().toString());
|
||||
logPrintI(", Gateway: ");
|
||||
logPrintI(WiFi.gatewayIP().toString());
|
||||
logPrintI(", DNS1: ");
|
||||
logPrintI(WiFi.dnsIP().toString());
|
||||
logPrintI(", DNS2: ");
|
||||
logPrintlnI(WiFi.dnsIP(1).toString());
|
||||
break;
|
||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
||||
logPrintlnW("WiFi Disconnected");
|
||||
|
|
@ -39,8 +46,12 @@ void WiFiEvent(WiFiEvent_t event) {
|
|||
logPrintI(ETH.macAddress());
|
||||
logPrintI(", IPv4: ");
|
||||
logPrintI(ETH.localIP().toString());
|
||||
logPrintI(", DNS: ");
|
||||
logPrintI(", Gateway: ");
|
||||
logPrintI(ETH.gatewayIP().toString());
|
||||
logPrintI(", DNS1: ");
|
||||
logPrintI(ETH.dnsIP().toString());
|
||||
logPrintI(", DNS2: ");
|
||||
logPrintI(ETH.dnsIP(1).toString());
|
||||
if (ETH.fullDuplex()) {
|
||||
logPrintI(", FULL_DUPLEX");
|
||||
}
|
||||
|
|
@ -89,6 +100,10 @@ bool EthTask::setup(System &system) {
|
|||
delay(200);
|
||||
digitalWrite(ETH_NRST, 1);
|
||||
|
||||
if (!system.getUserConfig()->network.DHCP) {
|
||||
ETH.config(system.getUserConfig()->network.staticIP, system.getUserConfig()->network.gateway, system.getUserConfig()->network.subnet, system.getUserConfig()->network.dns1, system.getUserConfig()->network.dns2);
|
||||
}
|
||||
|
||||
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,19 @@ WifiTask::~WifiTask() {
|
|||
}
|
||||
|
||||
bool WifiTask::setup(System &system) {
|
||||
// Don't save WiFi configuration in flash
|
||||
WiFi.persistent(false);
|
||||
|
||||
// Set WiFi to station mode
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
WiFi.onEvent(WiFiEvent);
|
||||
WiFi.setHostname(system.getUserConfig()->callsign.c_str());
|
||||
|
||||
if (!system.getUserConfig()->network.DHCP) {
|
||||
WiFi.config(system.getUserConfig()->network.staticIP, system.getUserConfig()->network.gateway, system.getUserConfig()->network.subnet, system.getUserConfig()->network.dns1, system.getUserConfig()->network.dns2);
|
||||
}
|
||||
|
||||
for (Configuration::Wifi::AP ap : system.getUserConfig()->wifi.APs) {
|
||||
logPrintD("Looking for AP: ");
|
||||
logPrintlnD(ap.SSID);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,15 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen
|
|||
if (data.containsKey("callsign"))
|
||||
conf.callsign = data["callsign"].as<String>();
|
||||
|
||||
if (data.containsKey("network") && data["network"].containsKey("DHCP")) {
|
||||
conf.network.DHCP = data["network"]["DHCP"];
|
||||
conf.network.staticIP.fromString(data["network"]["staticIP"].as<String>());
|
||||
conf.network.subnet.fromString(data["network"]["subnet"].as<String>());
|
||||
conf.network.gateway.fromString(data["network"]["gateway"].as<String>());
|
||||
conf.network.dns1.fromString(data["network"]["dns1"].as<String>());
|
||||
conf.network.dns2.fromString(data["network"]["dns2"].as<String>());
|
||||
}
|
||||
|
||||
JsonArray aps = data["wifi"]["AP"].as<JsonArray>();
|
||||
for (JsonVariant v : aps) {
|
||||
Configuration::Wifi::AP ap;
|
||||
|
|
@ -63,7 +72,17 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen
|
|||
|
||||
void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &conf, DynamicJsonDocument &data) {
|
||||
data["callsign"] = conf.callsign;
|
||||
JsonArray aps = data["wifi"].createNestedArray("AP");
|
||||
|
||||
if (!conf.network.DHCP) {
|
||||
data["network"]["DHCP"] = conf.network.DHCP;
|
||||
data["network"]["staticIP"] = conf.network.staticIP.toString();
|
||||
data["network"]["subnet"] = conf.network.subnet.toString();
|
||||
data["network"]["gateway"] = conf.network.gateway.toString();
|
||||
data["network"]["dns1"] = conf.network.dns1.toString();
|
||||
data["network"]["dns2"] = conf.network.dns2.toString();
|
||||
}
|
||||
|
||||
JsonArray aps = data["wifi"].createNestedArray("AP");
|
||||
for (Configuration::Wifi::AP ap : conf.wifi.APs) {
|
||||
JsonObject v = aps.createNestedObject();
|
||||
v["SSID"] = ap.SSID;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,19 @@
|
|||
|
||||
class Configuration {
|
||||
public:
|
||||
class Network {
|
||||
public:
|
||||
Network() : DHCP(true) {
|
||||
}
|
||||
|
||||
bool DHCP;
|
||||
IPAddress staticIP;
|
||||
IPAddress subnet;
|
||||
IPAddress gateway;
|
||||
IPAddress dns1;
|
||||
IPAddress dns2;
|
||||
};
|
||||
|
||||
class Wifi {
|
||||
public:
|
||||
class AP {
|
||||
|
|
@ -93,6 +106,7 @@ public:
|
|||
Configuration() : callsign("NOCALL-10"), board(""), ntpServer("pool.ntp.org"){};
|
||||
|
||||
String callsign;
|
||||
Network network;
|
||||
Wifi wifi;
|
||||
Beacon beacon;
|
||||
APRS_IS aprs_is;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue