mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
LwipIntfDev - config static IP auto gw,mask,dns as in Arduino libraries (#9040)
for 'modern' Ethernet libraries W5100lwIP, W5500lwIP and ENC28J60lwIP used without EthernetCompat
This commit is contained in:
parent
1efe5ee3fc
commit
9e73cf0021
@ -63,9 +63,14 @@ public:
|
||||
memset(&_netif, 0, sizeof(_netif));
|
||||
}
|
||||
|
||||
//The argument order for ESP is not the same as for Arduino. However, there is compatibility code under the hood
|
||||
//to detect Arduino arg order, and handle it correctly.
|
||||
boolean config(const IPAddress& local_ip, const IPAddress& arg1, const IPAddress& arg2,
|
||||
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);
|
||||
|
||||
// default mac-address is inferred from esp8266's STA interface
|
||||
boolean begin(const uint8_t* macAddress = nullptr, const uint16_t mtu = DEFAULT_MTU);
|
||||
void end();
|
||||
@ -209,6 +214,24 @@ boolean LwipIntfDev<RawDev>::config(const IPAddress& localIP, const IPAddress& g
|
||||
return true;
|
||||
}
|
||||
|
||||
template<class RawDev>
|
||||
boolean LwipIntfDev<RawDev>::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, gw, IPAddress(255, 255, 255, 0), dns);
|
||||
}
|
||||
|
||||
template<class RawDev>
|
||||
boolean LwipIntfDev<RawDev>::begin(const uint8_t* macAddress, const uint16_t mtu)
|
||||
{
|
||||
@ -336,9 +359,6 @@ template<class RawDev>
|
||||
void LwipIntfDev<RawDev>::end()
|
||||
{
|
||||
netif_remove(&_netif);
|
||||
ip_addr_copy(_netif.ip_addr, ip_addr_any); // to allow DHCP at next begin
|
||||
ip_addr_copy(_netif.netmask, ip_addr_any);
|
||||
ip_addr_copy(_netif.gw, ip_addr_any);
|
||||
_started = false;
|
||||
RawDev::end();
|
||||
}
|
||||
|
@ -86,6 +86,13 @@ public:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void end()
|
||||
{
|
||||
ip_addr_copy(LwipIntfDev<RawDev>::_netif.ip_addr,
|
||||
ip_addr_any); // to allow DHCP at next begin
|
||||
LwipIntfDev<RawDev>::end();
|
||||
}
|
||||
|
||||
HardwareStatus hardwareStatus() const
|
||||
{
|
||||
return _hardwareStatus;
|
||||
|
Loading…
x
Reference in New Issue
Block a user