@@ -219,6 +219,26 @@ IPAddress Mycila::ESPConnect::getIPAddress(Mycila::ESPConnect::Mode mode) const
219
219
}
220
220
}
221
221
222
+ IPAddress Mycila::ESPConnect::getIPv6Address (Mycila::ESPConnect::Mode mode) const {
223
+ #ifndef ESP8266
224
+ const wifi_mode_t wifiMode = WiFi.getMode ();
225
+ switch (mode) {
226
+ case Mycila::ESPConnect::Mode::AP:
227
+ return IN6ADDR_ANY;
228
+ case Mycila::ESPConnect::Mode::STA:
229
+ return wifiMode == WIFI_MODE_STA ? WiFi.globalIPv6 () : IN6ADDR_ANY;
230
+ #ifdef ESPCONNECT_ETH_SUPPORT
231
+ case Mycila::ESPConnect::Mode::ETH:
232
+ return ETH.linkUp () ? ETH.globalIPv6 () : IN6ADDR_ANY;
233
+ #endif
234
+ default :
235
+ return IN6ADDR_ANY;
236
+ }
237
+ #else
238
+ return IPAddress ();
239
+ #endif
240
+ }
241
+
222
242
ESPCONNECT_STRING Mycila::ESPConnect::getWiFiSSID () const {
223
243
switch (WiFi.getMode ()) {
224
244
case WIFI_MODE_AP:
@@ -558,6 +578,9 @@ void Mycila::ESPConnect::_startSTA() {
558
578
WiFi.setAutoReconnect (true );
559
579
560
580
WiFi.mode (WIFI_STA);
581
+ #ifndef ESP8266
582
+ WiFi.enableIPv6 ();
583
+ #endif
561
584
562
585
#ifndef ESPCONNECT_ETH_SUPPORT
563
586
if (_config.ipConfig .ip ) {
@@ -812,16 +835,26 @@ void Mycila::ESPConnect::_onWiFiEvent(WiFiEvent_t event) {
812
835
#endif
813
836
814
837
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
815
- if (_state == Mycila::ESPConnect::State::NETWORK_CONNECTING || _state == Mycila::ESPConnect::State::NETWORK_RECONNECTING) {
816
- LOGD (TAG, " [%s] WiFiEvent: ARDUINO_EVENT_WIFI_STA_GOT_IP" , getStateName ());
817
- _lastTime = -1 ;
838
+ LOGD (TAG, " [%s] WiFiEvent: ARDUINO_EVENT_WIFI_STA_GOT_IP: %s" , getStateName (), WiFi.localIP ().toString ().c_str ());
818
839
#ifndef ESPCONNECT_NO_MDNS
819
- MDNS.begin (_config.hostname .c_str ());
840
+ MDNS.begin (_config.hostname .c_str ());
820
841
#endif
842
+ if (_state == Mycila::ESPConnect::State::NETWORK_CONNECTING || _state == Mycila::ESPConnect::State::NETWORK_RECONNECTING) {
843
+ _lastTime = -1 ;
821
844
_setState (Mycila::ESPConnect::State::NETWORK_CONNECTED);
822
845
}
823
846
break ;
824
847
848
+ #ifndef ESP8266
849
+ case ARDUINO_EVENT_WIFI_STA_GOT_IP6:
850
+ LOGD (TAG, " [%s] WiFiEvent: ARDUINO_EVENT_WIFI_STA_GOT_IP6: %s" , getStateName (), WiFi.globalIPv6 ().toString ().c_str ());
851
+ if (_state == Mycila::ESPConnect::State::NETWORK_CONNECTING || _state == Mycila::ESPConnect::State::NETWORK_RECONNECTING) {
852
+ _lastTime = -1 ;
853
+ _setState (Mycila::ESPConnect::State::NETWORK_CONNECTED);
854
+ }
855
+ break ;
856
+ #endif
857
+
825
858
case ARDUINO_EVENT_WIFI_STA_LOST_IP:
826
859
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
827
860
if (event == ARDUINO_EVENT_WIFI_STA_DISCONNECTED) {
0 commit comments