Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Reference: https://github.com/copercini/esp32-iot-examples/blob/master/WiFi_nonBlocking/WiFi_nonBlocking.ino
- #include "WifiManager.h"
- #include "WiFi.h"
- const char * APP_WIFI_STA_SSID = "my-wifi-ssid";
- const char * APP_WIFI_STA_PASS ="my-wifi-password";
- const char * APP_WIFI_AP_SSID = "my-device-name";
- String sta_ipv6;
- String ap_ipv6;
- volatile bool connected;
- void onWhenWifiConnects();
- void onWhenWifiOnDisconnects();
- void whileWifiIsConnectedLoop();
- void WiFiEvent(WiFiEvent_t event);
- WifiManager::WifiManager()
- {
- ESP_LOGW(TAG, "Start the constructor\n");
- // Delete old configurations, if any
- WiFi.disconnect(true);
- // Wait some time
- vTaskDelay(500);
- connected = false;
- WiFi.onEvent(WiFiEvent);
- ESP_LOGW(TAG, "Finished with the constructor\n");
- }
- void WifiManager::run()
- {
- }
- WifiManager::~WifiManager()
- {
- }
- void WiFiEvent(WiFiEvent_t event)
- {
- ESP_LOGW(TAG, "Runing WiFiEvent\n");
- switch (event)
- {
- case SYSTEM_EVENT_WIFI_READY:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 WiFi ready\n");
- case SYSTEM_EVENT_SCAN_DONE:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 finish scanning AP\n");
- case SYSTEM_EVENT_STA_START:
- //set sta hostname here
- WiFi.setHostname(APP_WIFI_AP_SSID);
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station start\n");
- case SYSTEM_EVENT_AP_START:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 soft-AP start\n");
- //can set ap hostname here
- WiFi.softAPsetHostname(APP_WIFI_AP_SSID);
- //enable ap ipv6 here
- WiFi.softAPenableIpV6();
- case SYSTEM_EVENT_STA_STOP:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station stop\n");
- case SYSTEM_EVENT_STA_CONNECTED:
- //enable sta ipv6 here
- WiFi.enableIpV6();
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station connected to AP\n");
- case SYSTEM_EVENT_AP_STA_GOT_IP6:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station or ap or ethernet interface v6IP addr is preferred\n");
- //both interfaces get the same event
- sta_ipv6 = WiFi.localIPv6().toString();
- ap_ipv6 = WiFi.softAPIPv6().toString();
- break;
- case SYSTEM_EVENT_STA_DISCONNECTED:
- connected = false;
- onWhenWifiOnDisconnects();
- //TODO: Set the disconnected flag
- //TODO: Reset-the ip address (clear the ip)
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station disconnected from AP\n");
- case SYSTEM_EVENT_STA_AUTHMODE_CHANGE:
- ESP_LOGW(TAG, "[WiFi-event] The auth mode of AP connected by ESP32 station changed\n");
- case SYSTEM_EVENT_STA_LOST_IP:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station lost IP and the IP is reset to 0\n");
- case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps succeeds in enrollee mode\n");
- case SYSTEM_EVENT_STA_WPS_ER_FAILED:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps fails in enrollee mode\n");
- case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps timeout in enrollee mode\n");
- case SYSTEM_EVENT_STA_WPS_ER_PIN:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps pin code in enrollee mode\n");
- case SYSTEM_EVENT_ETH_START:
- ESP_LOGW(TAG, "[WiFi-event] SP32 ethernet start\n");
- case SYSTEM_EVENT_ETH_STOP:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet stop\n");
- case SYSTEM_EVENT_ETH_CONNECTED:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet phy link up\n");
- case SYSTEM_EVENT_ETH_DISCONNECTED:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet phy link down \n");
- case SYSTEM_EVENT_ETH_GOT_IP:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet got IP from connected AP\n");
- case SYSTEM_EVENT_MAX:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet got IP from connected AP\n");
- case SYSTEM_EVENT_AP_STOP:
- ESP_LOGW(TAG, "[WiFi-event] ESP32 soft-AP stop \n");
- case SYSTEM_EVENT_AP_STACONNECTED:
- ESP_LOGW(TAG, "[WiFi-event] A station connected to ESP32 soft-AP \n");
- case SYSTEM_EVENT_AP_STADISCONNECTED:
- ESP_LOGW(TAG, "[WiFi-event] A station disconnected from ESP32 soft-AP\n");
- case SYSTEM_EVENT_AP_PROBEREQRECVED:
- ESP_LOGW(TAG, "[WiFi-event] Receive probe request packet in soft-AP interface \n");
- case SYSTEM_EVENT_STA_GOT_IP:
- ESP_LOGW(TAG, "[WiFi-event] event\n");
- ESP_LOGW(TAG, "WiFi connected\n");
- ESP_LOGW(TAG, "IP address: %f\n", WiFi.localIP());
- connected = true;
- onWhenWifiConnects();
- // TODO: Set the connected flag
- // TODO: Set the ip
- break;
- }
- }
- void onWhenWifiConnects()
- {
- Serial.println("STA Connected");
- Serial.print("STA SSID: ");
- Serial.println(WiFi.SSID());
- Serial.print("STA IPv4: ");
- Serial.println(WiFi.localIP());
- Serial.print("STA IPv6: ");
- Serial.println(WiFi.localIPv6());
- }
- void onWhenWifiOnDisconnects()
- {
- Serial.println("STA Disconnected");
- delay(1000);
- WiFi.begin(APP_WIFI_STA_SSID, APP_WIFI_STA_PASS);
- }
- void whileWifiIsConnectedLoop()
- {
- Serial.print("RSSI: ");
- Serial.println(WiFi.RSSI());
- delay(1000);
- }
- bool WifiManager::isConnected()
- {
- return connected;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement