Skip to content

Commit 7839de0

Browse files
committed
Merge pull request #378 from chadouming/esp8266
Add function overload to config to include DNS
2 parents 2c42f1d + 7daa6c6 commit 7839de0

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

libraries/ESP8266WiFi/src/ESP8266WiFi.cpp

+25-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ extern "C" void esp_yield();
4040
ESP8266WiFiClass::ESP8266WiFiClass()
4141
: _useApMode(false)
4242
, _useClientMode(false)
43+
, _useStaticIp(false)
4344
{
4445
}
4546

@@ -100,7 +101,8 @@ int ESP8266WiFiClass::begin(const char* ssid, const char *passphrase, int32_t ch
100101
wifi_set_channel(channel);
101102
}
102103

103-
wifi_station_dhcpc_start();
104+
if(!_useStaticIp)
105+
wifi_station_dhcpc_start();
104106
return status();
105107
}
106108

@@ -112,6 +114,8 @@ uint8_t ESP8266WiFiClass::waitForConnectResult(){
112114
return status();
113115
}
114116

117+
118+
// You will have to set the DNS-Server manually later since this will not enable DHCP
115119
void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet)
116120
{
117121
struct ip_info info;
@@ -121,6 +125,26 @@ void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress s
121125

122126
wifi_station_dhcpc_stop();
123127
wifi_set_ip_info(STATION_IF, &info);
128+
129+
_useStaticIp = true;
130+
}
131+
132+
void ESP8266WiFiClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns)
133+
{
134+
struct ip_info info;
135+
info.ip.addr = static_cast<uint32_t>(local_ip);
136+
info.gw.addr = static_cast<uint32_t>(gateway);
137+
info.netmask.addr = static_cast<uint32_t>(subnet);
138+
139+
wifi_station_dhcpc_stop();
140+
wifi_set_ip_info(STATION_IF, &info);
141+
142+
// Set DNS-Server
143+
ip_addr_t d;
144+
d.addr = static_cast<uint32_t>(dns);
145+
dns_setserver(0,&d);
146+
147+
_useStaticIp = true;
124148
}
125149

126150
int ESP8266WiFiClass::disconnect()

libraries/ESP8266WiFi/src/ESP8266WiFi.h

+11-2
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ class ESP8266WiFiClass
7575
*/
7676
void softAP(const char* ssid, const char* passphrase, int channel = 1);
7777

78-
7978
/* Change Ip configuration settings disabling the dhcp client
8079
*
8180
* param local_ip: Static ip configuration
@@ -84,6 +83,15 @@ class ESP8266WiFiClass
8483
*/
8584
void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet);
8685

86+
/* Change Ip configuration settings disabling the dhcp client
87+
*
88+
* param local_ip: Static ip configuration
89+
* param gateway: Static gateway configuration
90+
* param subnet: Static Subnet mask
91+
* param dns: Defined DNS
92+
*/
93+
void config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns);
94+
8795
/* Configure access point
8896
*
8997
* param local_ip: access point IP
@@ -310,7 +318,8 @@ class ESP8266WiFiClass
310318

311319
bool _useApMode;
312320
bool _useClientMode;
313-
321+
bool _useStaticIp;
322+
314323
static size_t _scanCount;
315324
static void* _scanResult;
316325

0 commit comments

Comments
 (0)