From d5eb265f78bff9deb7063d10030a02d021c8c66c Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 12 Dec 2023 00:57:57 +0100 Subject: [PATCH] WiFi config(): warning for legacy idioms (#9050) --- cores/esp8266/LwipIntfDev.h | 5 ++++- doc/esp8266wifi/station-class.rst | 16 +++++++++------- libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cores/esp8266/LwipIntfDev.h b/cores/esp8266/LwipIntfDev.h index 7f8ae02291..daf63e935d 100644 --- a/cores/esp8266/LwipIntfDev.h +++ b/cores/esp8266/LwipIntfDev.h @@ -69,7 +69,10 @@ class LwipIntfDev: public LwipIntf, public RawDev const IPAddress& arg3 = IPADDR_NONE, const IPAddress& dns2 = IPADDR_NONE); // two and one parameter version. 2nd parameter is DNS like in Arduino. IPv4 only - boolean config(IPAddress local_ip, IPAddress dns = INADDR_ANY); + [[deprecated("It is discouraged to use this 1 or 2 parameters network configuration legacy " + "function config(ip[,dns]) as chosen defaults may not match the local network " + "configuration")]] boolean + config(IPAddress local_ip, IPAddress dns = INADDR_ANY); // default mac-address is inferred from esp8266's STA interface boolean begin(const uint8_t* macAddress = nullptr, const uint16_t mtu = DEFAULT_MTU); diff --git a/doc/esp8266wifi/station-class.rst b/doc/esp8266wifi/station-class.rst index 4c4bb9d5c3..30d9cf13f5 100644 --- a/doc/esp8266wifi/station-class.rst +++ b/doc/esp8266wifi/station-class.rst @@ -99,11 +99,11 @@ config Disable `DHCP `__ client (Dynamic Host Configuration Protocol) and set the IP configuration of station interface to user defined arbitrary values. The interface will be a static IP configuration instead of values provided by DHCP. -Note that to reenable DHCP, all three parameters as 0.0.0.0 (local_ip, gateway and subnet as ``INADDR_ANY``) must be passed back to config() and re-connecting is needed. +Note that to reenable DHCP, all three parameters (local_ip, gateway and subnet) as IPv4 ``0U`` (= 0.0.0.0) must be passed back to config() and re-connecting is needed. .. code:: cpp - WiFi.config(local_ip, gateway, subnet) + WiFi.config(local_ip, gateway, subnet) (for Arduino API portability, discouraged as chosen defaults may not match the local network configuration) WiFi.config(local_ip, gateway, subnet, dns1) WiFi.config(local_ip, gateway, subnet, dns1, dns2) @@ -122,16 +122,18 @@ The following IP configuration may be provided: (like e.g. *www.google.co.uk*) and translate them for us to IP addresses -For Arduino networking API compatibilty the ESP8266WiFi library supports for IPv4 additional versions of the ``config`` function. +For Arduino networking API compatibility, the ESP8266WiFi library supports IPv4-only additional versions of the ``config`` function: .. code:: cpp - WiFi.config(local_ip) - WiFi.config(local_ip, dns) - WiFi.config(local_ip, dns, gateway) + WiFi.config(local_ip) (for Arduino API portability, discouraged as chosen defaults may not match the local network configuration) + WiFi.config(local_ip, dns) (for Arduino API portability, discouraged as chosen defaults may not match the local network configuration) + WiFi.config(local_ip, dns, gateway) (for Arduino API portability, discouraged as chosen defaults may not match the local network configuration) WiFi.config(local_ip, dns, gateway, subnet) -Versions where some of ``dns``, ``gateway`` and ``subnet`` parameters are not specified use a default value. Default ``subnet`` is 255.255.255.0. Default ``gateway`` and ``dns`` are derived from ``local_ip`` by changing the last number to 1. To return to DHCP you can use ``WiFi.config(INADDR_NONE);``. +Versions where some of ``dns``, ``gateway`` and ``subnet`` parameters are not specified use a default value. Default ``subnet`` is 255.255.255.0. Default ``gateway`` and ``dns`` are derived from ``local_ip`` by changing the last number to 1. It is discouraged to use these default values as they may not apply to every network configuration. + +Reminder : To reenable DHCP you can use ``WiFi.config(0U, 0U, 0U);``. **Warning: The default values for dns, gateway and subnet may not match your router's settings.** Also please note, that ``config(local_ip, gateway)`` is not supported and ``WiFi.config(local_ip, gateway, subnet)`` doesn't set the DNS server IP. diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h index 62461dbaec..ad1b655a55 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h @@ -49,6 +49,7 @@ class ESP8266WiFiSTAClass: public LwipIntf { // two and one parameter version. 2nd parameter is DNS like in Arduino // IPv4 only + [[deprecated("It is discouraged to use this 1 or 2 parameters network configuration legacy function config(ip[,dns]) as chosen defaults may not match the local network configuration")]] bool config(IPAddress local_ip, IPAddress dns = INADDR_ANY); bool setDNS(IPAddress dns1, IPAddress dns2 = INADDR_ANY);