diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index aae7aec7d2..fe355671eb 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -498,6 +498,23 @@ IPAddress ESP8266WiFiSTAClass::gatewayIP() { return IPAddress(ip.gw.addr); } +/** + * Get the broadcast ip address. + * @return IPAddress broadcastIP + */ +IPAddress ESP8266WiFiSTAClass::broadcastIP() { + struct ip_info ip; + wifi_get_ip_info(STATION_IF, &ip); + IPAddress subnetMask(ip.netmask.addr); + IPAddress gatewayIP(ip.gw.addr); + + IPAddress broadcastIp; + for (int i = 0; i < 4; i++) + broadcastIp[i] = ~subnetMask[i] | gatewayIP[i]; + + return broadcastIp; +} + /** * Get the DNS ip address. * @param dns_no diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h index f8c352cca7..8cb37e21e5 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h @@ -67,6 +67,7 @@ class ESP8266WiFiSTAClass { IPAddress subnetMask(); IPAddress gatewayIP(); + IPAddress broadcastIP(); IPAddress dnsIP(uint8_t dns_no = 0); String hostname();