File tree 6 files changed +124
-0
lines changed
6 files changed +124
-0
lines changed Original file line number Diff line number Diff line change @@ -1720,6 +1720,71 @@ void setup()
1720
1720
void loop () {}
1721
1721
```
1722
1722
1723
+ ### ` WiFi.dnsIP() `
1724
+
1725
+ #### Description
1726
+
1727
+ Returns the DNS server IP address for the device.
1728
+
1729
+
1730
+ #### Syntax
1731
+
1732
+ ```
1733
+ WiFi.dnsIP()
1734
+ WiFi.dnsIP(n)
1735
+
1736
+ ```
1737
+
1738
+ #### Parameters
1739
+ optional parameter n for the number of the DNS server to get the second DNS serverv
1740
+
1741
+ #### Returns
1742
+ - the DNS server IP address for the device (IPAddress).
1743
+
1744
+ #### Example
1745
+
1746
+ ```
1747
+ #include <WiFiNINA.h>
1748
+
1749
+ #include "arduino_secrets.h"
1750
+ char ssid[] = SECRET_SSID;
1751
+ char pass[] = SECRET_PASS;
1752
+
1753
+ IPAddress emptyIP;
1754
+
1755
+ void setup() {
1756
+
1757
+ Serial.begin(115200);
1758
+ while (!Serial) {}
1759
+
1760
+ Serial.print("Attempting to connect to SSID: ");
1761
+ Serial.println(ssid);
1762
+ int status = WiFi.begin(ssid, pass);
1763
+ if ( status != WL_CONNECTED) {
1764
+ Serial.println("Couldn't get a WiFi connection");
1765
+ while(true);
1766
+ }
1767
+
1768
+ Serial.print("DHCP assigned DNS server: ");
1769
+ IPAddress dns1 = WiFi.dnsIP();
1770
+ if (dns1 == emptyIP) {
1771
+ Serial.println("not set");
1772
+ } else {
1773
+ dns1.printTo(Serial);
1774
+ Serial.println();
1775
+ IPAddress dns2 = WiFi.dnsIP(1);
1776
+ if (dns2 != emptyIP) {
1777
+ Serial.print("DNS server2: ");
1778
+ dns2.printTo(Serial);
1779
+ Serial.println();
1780
+ }
1781
+ }
1782
+
1783
+ }
1784
+
1785
+ void loop() {
1786
+ }
1787
+ ```
1723
1788
### ` WiFi.getTime() `
1724
1789
1725
1790
#### Description
Original file line number Diff line number Diff line change @@ -266,6 +266,16 @@ IPAddress WiFiClass::gatewayIP()
266
266
return ret;
267
267
}
268
268
269
+ IPAddress WiFiClass::dnsIP (int n)
270
+ {
271
+ if (n > 1 )
272
+ return IPAddress (0 ,0 ,0 ,0 );
273
+ IPAddress dnsip0;
274
+ IPAddress dnsip1;
275
+ WiFiDrv::getDNS (dnsip0, dnsip1);
276
+ return n ? dnsip1 : dnsip0;
277
+ }
278
+
269
279
const char * WiFiClass::SSID ()
270
280
{
271
281
return WiFiDrv::getCurrentSSID ();
Original file line number Diff line number Diff line change @@ -178,6 +178,14 @@ class WiFiClass
178
178
*/
179
179
IPAddress gatewayIP ();
180
180
181
+ /*
182
+ * Get the DNS server IP address.
183
+ * param n: index of the DNS server
184
+ * return: DNS server IP address value
185
+ * requires firmware version > 1.5.0
186
+ */
187
+ IPAddress dnsIP (int n = 0 );
188
+
181
189
/*
182
190
* Return the current SSID associated with the network
183
191
*
Original file line number Diff line number Diff line change @@ -418,6 +418,39 @@ void WiFiDrv::getIpAddress(IPAddress& ip)
418
418
ip = _gatewayIp;
419
419
}
420
420
421
+ void WiFiDrv::getDNS (IPAddress& dnsip0, IPAddress& dnsip1)
422
+ {
423
+ uint8_t ip0[WL_IPV4_LENGTH] = {0 };
424
+ uint8_t ip1[WL_IPV4_LENGTH] = {0 };
425
+
426
+ tParam params[PARAM_NUMS_2] = { {0 , (char *)ip0}, {0 , (char *)ip1}};
427
+
428
+ WAIT_FOR_SLAVE_SELECT ();
429
+
430
+ // Send Command
431
+ SpiDrv::sendCmd (GET_DNS_CONFIG_CMD, PARAM_NUMS_1);
432
+
433
+ uint8_t _dummy = DUMMY_DATA;
434
+ SpiDrv::sendParam (&_dummy, sizeof (_dummy), LAST_PARAM);
435
+
436
+ // pad to multiple of 4
437
+ SpiDrv::readChar ();
438
+ SpiDrv::readChar ();
439
+
440
+ SpiDrv::spiSlaveDeselect ();
441
+ // Wait the reply elaboration
442
+ SpiDrv::waitForSlaveReady ();
443
+ SpiDrv::spiSlaveSelect ();
444
+
445
+ // Wait for reply
446
+ SpiDrv::waitResponseParams (GET_DNS_CONFIG_CMD, PARAM_NUMS_2, params);
447
+
448
+ SpiDrv::spiSlaveDeselect ();
449
+
450
+ dnsip0 = ip0;
451
+ dnsip1 = ip1;
452
+ }
453
+
421
454
const char * WiFiDrv::getCurrentSSID ()
422
455
{
423
456
WAIT_FOR_SLAVE_SELECT ();
Original file line number Diff line number Diff line change @@ -181,6 +181,13 @@ class WiFiDrv
181
181
*/
182
182
static void getGatewayIP (IPAddress& ip);
183
183
184
+ /*
185
+ * Get the DNS servers IP addresses.
186
+ *
187
+ * return: copy the DNS servers IP addresses into IPAddress objects
188
+ */
189
+ static void getDNS (IPAddress& dnsip0, IPAddress& dnsip1);
190
+
184
191
/*
185
192
* Return the current SSID associated with the network
186
193
*
Original file line number Diff line number Diff line change 56
56
SET_AP_PASSPHRASE_CMD = 0x19 ,
57
57
SET_DEBUG_CMD = 0x1A ,
58
58
GET_TEMPERATURE_CMD = 0x1B ,
59
+ GET_DNS_CONFIG_CMD = 0x1E ,
59
60
GET_REASON_CODE_CMD = 0x1F ,
60
61
61
62
GET_CONN_STATUS_CMD = 0x20 ,
You can’t perform that action at this time.
0 commit comments