1
+ /*
2
+ * This sketch shows the WiFi event usage
3
+ *
4
+ */
5
+
6
+ /*
7
+ * WiFi Events
8
+
9
+ 0 ARDUINO_EVENT_WIFI_READY < ESP32 WiFi ready
10
+ 1 ARDUINO_EVENT_WIFI_SCAN_DONE < ESP32 finish scanning AP
11
+ 2 ARDUINO_EVENT_WIFI_STA_START < ESP32 station start
12
+ 3 ARDUINO_EVENT_WIFI_STA_STOP < ESP32 station stop
13
+ 4 ARDUINO_EVENT_WIFI_STA_CONNECTED < ESP32 station connected to AP
14
+ 5 ARDUINO_EVENT_WIFI_STA_DISCONNECTED < ESP32 station disconnected from AP
15
+ 6 ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE < the auth mode of AP connected by ESP32 station changed
16
+ 7 ARDUINO_EVENT_WIFI_STA_GOT_IP < ESP32 station got IP from connected AP
17
+ 8 ARDUINO_EVENT_WIFI_STA_LOST_IP < ESP32 station lost IP and the IP is reset to 0
18
+ 9 ARDUINO_EVENT_WPS_ER_SUCCESS < ESP32 station wps succeeds in enrollee mode
19
+ 10 ARDUINO_EVENT_WPS_ER_FAILED < ESP32 station wps fails in enrollee mode
20
+ 11 ARDUINO_EVENT_WPS_ER_TIMEOUT < ESP32 station wps timeout in enrollee mode
21
+ 12 ARDUINO_EVENT_WPS_ER_PIN < ESP32 station wps pin code in enrollee mode
22
+ 13 ARDUINO_EVENT_WIFI_AP_START < ESP32 soft-AP start
23
+ 14 ARDUINO_EVENT_WIFI_AP_STOP < ESP32 soft-AP stop
24
+ 15 ARDUINO_EVENT_WIFI_AP_STACONNECTED < a station connected to ESP32 soft-AP
25
+ 16 ARDUINO_EVENT_WIFI_AP_STADISCONNECTED < a station disconnected from ESP32 soft-AP
26
+ 17 ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED < ESP32 soft-AP assign an IP to a connected station
27
+ 18 ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED < Receive probe request packet in soft-AP interface
28
+ 19 ARDUINO_EVENT_WIFI_AP_GOT_IP6 < ESP32 ap interface v6IP addr is preferred
29
+ 19 ARDUINO_EVENT_WIFI_STA_GOT_IP6 < ESP32 station interface v6IP addr is preferred
30
+ 20 ARDUINO_EVENT_ETH_START < ESP32 ethernet start
31
+ 21 ARDUINO_EVENT_ETH_STOP < ESP32 ethernet stop
32
+ 22 ARDUINO_EVENT_ETH_CONNECTED < ESP32 ethernet phy link up
33
+ 23 ARDUINO_EVENT_ETH_DISCONNECTED < ESP32 ethernet phy link down
34
+ 24 ARDUINO_EVENT_ETH_GOT_IP < ESP32 ethernet got IP from connected AP
35
+ 19 ARDUINO_EVENT_ETH_GOT_IP6 < ESP32 ethernet interface v6IP addr is preferred
36
+ 25 ARDUINO_EVENT_MAX
37
+ */
38
+
39
+ #include < WiFi.h>
40
+
41
+ const char *ssid = " Wokwi-GUEST" ;
42
+ const char *password = " " ;
43
+
44
+ // WARNING: This function is called from a separate FreeRTOS task (thread)!
45
+ void WiFiEvent (WiFiEvent_t event) {
46
+ Serial.printf (" [WiFi-event] event: %d\n " , event);
47
+
48
+ switch (event) {
49
+ case ARDUINO_EVENT_WIFI_READY: Serial.println (" WiFi interface ready" ); break ;
50
+ case ARDUINO_EVENT_WIFI_SCAN_DONE: Serial.println (" Completed scan for access points" ); break ;
51
+ case ARDUINO_EVENT_WIFI_STA_START: Serial.println (" WiFi client started" ); break ;
52
+ case ARDUINO_EVENT_WIFI_STA_STOP: Serial.println (" WiFi clients stopped" ); break ;
53
+ case ARDUINO_EVENT_WIFI_STA_CONNECTED: Serial.println (" Connected to access point" ); break ;
54
+ case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: Serial.println (" Disconnected from WiFi access point" ); break ;
55
+ case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE: Serial.println (" Authentication mode of access point has changed" ); break ;
56
+ case ARDUINO_EVENT_WIFI_STA_GOT_IP:
57
+ Serial.print (" Obtained IP address: " );
58
+ Serial.println (WiFi.localIP ());
59
+ break ;
60
+ case ARDUINO_EVENT_WIFI_STA_LOST_IP: Serial.println (" Lost IP address and IP address is reset to 0" ); break ;
61
+ case ARDUINO_EVENT_WPS_ER_SUCCESS: Serial.println (" WiFi Protected Setup (WPS): succeeded in enrollee mode" ); break ;
62
+ case ARDUINO_EVENT_WPS_ER_FAILED: Serial.println (" WiFi Protected Setup (WPS): failed in enrollee mode" ); break ;
63
+ case ARDUINO_EVENT_WPS_ER_TIMEOUT: Serial.println (" WiFi Protected Setup (WPS): timeout in enrollee mode" ); break ;
64
+ case ARDUINO_EVENT_WPS_ER_PIN: Serial.println (" WiFi Protected Setup (WPS): pin code in enrollee mode" ); break ;
65
+ case ARDUINO_EVENT_WIFI_AP_START: Serial.println (" WiFi access point started" ); break ;
66
+ case ARDUINO_EVENT_WIFI_AP_STOP: Serial.println (" WiFi access point stopped" ); break ;
67
+ case ARDUINO_EVENT_WIFI_AP_STACONNECTED: Serial.println (" Client connected" ); break ;
68
+ case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED: Serial.println (" Client disconnected" ); break ;
69
+ case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED: Serial.println (" Assigned IP address to client" ); break ;
70
+ case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED: Serial.println (" Received probe request" ); break ;
71
+ case ARDUINO_EVENT_WIFI_AP_GOT_IP6: Serial.println (" AP IPv6 is preferred" ); break ;
72
+ case ARDUINO_EVENT_WIFI_STA_GOT_IP6: Serial.println (" STA IPv6 is preferred" ); break ;
73
+ case ARDUINO_EVENT_ETH_GOT_IP6: Serial.println (" Ethernet IPv6 is preferred" ); break ;
74
+ case ARDUINO_EVENT_ETH_START: Serial.println (" Ethernet started" ); break ;
75
+ case ARDUINO_EVENT_ETH_STOP: Serial.println (" Ethernet stopped" ); break ;
76
+ case ARDUINO_EVENT_ETH_CONNECTED: Serial.println (" Ethernet connected" ); break ;
77
+ case ARDUINO_EVENT_ETH_DISCONNECTED: Serial.println (" Ethernet disconnected" ); break ;
78
+ case ARDUINO_EVENT_ETH_GOT_IP: Serial.println (" Obtained IP address" ); break ;
79
+ default : break ;
80
+ }
81
+ }
82
+
83
+ // WARNING: This function is called from a separate FreeRTOS task (thread)!
84
+ void WiFiGotIP (WiFiEvent_t event, WiFiEventInfo_t info) {
85
+ Serial.println (" WiFi connected" );
86
+ Serial.println (" IP address: " );
87
+ Serial.println (IPAddress (info.got_ip .ip_info .ip .addr ));
88
+ }
89
+
90
+ void setup () {
91
+ Serial.begin (115200 );
92
+
93
+ // delete old config
94
+ WiFi.disconnect (true );
95
+
96
+ delay (1000 );
97
+
98
+ // Examples of different ways to register wifi events;
99
+ // these handlers will be called from another thread.
100
+ WiFi.onEvent (WiFiEvent);
101
+ WiFi.onEvent (WiFiGotIP, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_GOT_IP);
102
+ WiFiEventId_t eventID = WiFi.onEvent (
103
+ [](WiFiEvent_t event, WiFiEventInfo_t info) {
104
+ Serial.print (" WiFi lost connection. Reason: " );
105
+ Serial.println (info.wifi_sta_disconnected .reason );
106
+ },
107
+ WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED
108
+ );
109
+
110
+ // Remove WiFi event
111
+ Serial.print (" WiFi Event ID: " );
112
+ Serial.println (eventID);
113
+ // WiFi.removeEvent(eventID);
114
+
115
+ WiFi.begin (ssid, password);
116
+
117
+ Serial.println ();
118
+ Serial.println ();
119
+ Serial.println (" Wait for WiFi... " );
120
+ }
121
+
122
+ void loop () {
123
+ delay (1000 );
124
+ }
0 commit comments