diff --git a/libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino b/libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino index 3dcba56eec2..960a27bc71c 100644 --- a/libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino +++ b/libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino @@ -82,8 +82,10 @@ void WiFiEvent(WiFiEvent_t event){ WiFi.enableIpV6(); break; case ARDUINO_EVENT_WIFI_STA_GOT_IP6: - Serial.print("STA IPv6: "); + Serial.print("STA Local IPv6: "); Serial.println(WiFi.localIPv6()); + Serial.print("STA Global IPv6: "); + Serial.println(WiFi.globalIPv6()); break; case ARDUINO_EVENT_WIFI_AP_GOT_IP6: Serial.print("AP IPv6: "); diff --git a/libraries/WiFi/src/WiFiSTA.cpp b/libraries/WiFi/src/WiFiSTA.cpp index 505940015f9..453e2fe355a 100644 --- a/libraries/WiFi/src/WiFiSTA.cpp +++ b/libraries/WiFi/src/WiFiSTA.cpp @@ -817,7 +817,7 @@ bool WiFiSTAClass::enableIpV6() } /** - * Get the station interface IPv6 address. +* Get the station interface local link IPv6 address. * @return IPv6Address */ IPv6Address WiFiSTAClass::localIPv6() @@ -832,6 +832,22 @@ IPv6Address WiFiSTAClass::localIPv6() return IPv6Address(addr.addr); } +/** +* Get the station interface global IPv6 address. + * @return IPv6Address + */ +IPv6Address WiFiSTAClass::globalIPv6() +{ + esp_ip6_addr_t addr; + if(WiFiGenericClass::getMode() == WIFI_MODE_NULL){ + return IPv6Address(); + } + if(esp_netif_get_ip6_global(get_esp_interface_netif(ESP_IF_WIFI_STA), &addr)) { + return IPv6Address(); + } + return IPv6Address(addr.addr); +} + bool WiFiSTAClass::_smartConfigStarted = false; bool WiFiSTAClass::_smartConfigDone = false; diff --git a/libraries/WiFi/src/WiFiSTA.h b/libraries/WiFi/src/WiFiSTA.h index 07f01922cef..9d1b3753bff 100644 --- a/libraries/WiFi/src/WiFiSTA.h +++ b/libraries/WiFi/src/WiFiSTA.h @@ -95,6 +95,7 @@ class WiFiSTAClass bool enableIpV6(); IPv6Address localIPv6(); + IPv6Address globalIPv6(); // STA WiFi info static wl_status_t status();