From 9a4e17876e782f58577829e068d4005c9d4e9b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraj=20Andr=C3=A1ssy?= <10706773+JAndrassy@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:10:27 +0100 Subject: [PATCH] WiFi - static IP auto gw,mask,dns as in Arduino libraries (#9031) --- libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp | 16 ++++++++++++++++ libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index 048ccc560..dfea41298 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -339,6 +339,22 @@ bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress arg1, IPAddress a return true; } +bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress dns) { + + if (!local_ip.isSet()) + return config(INADDR_ANY, INADDR_ANY, INADDR_ANY); + + if (!local_ip.isV4()) + return false; + + IPAddress gw(local_ip); + gw[3] = 1; + if (!dns.isSet()) { + dns = gw; + } + return config(local_ip, dns, gw); +} + /** * Change DNS for static IP configuration * @param dns1 Static DNS server 1 diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h index c5b4d3862..62461dbae 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h @@ -46,6 +46,11 @@ class ESP8266WiFiSTAClass: public LwipIntf { //to detect Arduino arg order, and handle it correctly. Be aware that the Arduino default value handling doesn't //work here (see Arduino docs for gway/subnet defaults). In other words: at least 3 args must always be given. bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = INADDR_ANY, IPAddress dns2 = INADDR_ANY); + + // two and one parameter version. 2nd parameter is DNS like in Arduino + // IPv4 only + bool config(IPAddress local_ip, IPAddress dns = INADDR_ANY); + bool setDNS(IPAddress dns1, IPAddress dns2 = INADDR_ANY); bool reconnect();