Advertisement
Guest User

WifiManager.pp

a guest
Jun 18th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.76 KB | None | 0 0
  1.  
  2. // Reference: https://github.com/copercini/esp32-iot-examples/blob/master/WiFi_nonBlocking/WiFi_nonBlocking.ino
  3.  
  4. #include "WifiManager.h"
  5. #include "WiFi.h"
  6. const char * APP_WIFI_STA_SSID = "my-wifi-ssid";
  7. const char * APP_WIFI_STA_PASS ="my-wifi-password";
  8. const char * APP_WIFI_AP_SSID = "my-device-name";
  9. String sta_ipv6;
  10. String ap_ipv6;
  11. volatile bool connected;
  12. void onWhenWifiConnects();
  13. void onWhenWifiOnDisconnects();
  14. void whileWifiIsConnectedLoop();
  15. void WiFiEvent(WiFiEvent_t event);
  16.  
  17. WifiManager::WifiManager()
  18. {
  19.     ESP_LOGW(TAG, "Start the constructor\n");
  20.     // Delete old configurations, if any
  21.     WiFi.disconnect(true);
  22.     // Wait some time
  23.     vTaskDelay(500);
  24.     connected = false;
  25.     WiFi.onEvent(WiFiEvent);
  26.     ESP_LOGW(TAG, "Finished with the constructor\n");
  27.    
  28. }
  29. void WifiManager::run()
  30. {
  31.  
  32. }
  33.  
  34. WifiManager::~WifiManager()
  35. {
  36.      
  37. }
  38. void WiFiEvent(WiFiEvent_t event)
  39. {
  40.     ESP_LOGW(TAG, "Runing WiFiEvent\n");
  41.     switch (event)
  42.     {
  43.     case SYSTEM_EVENT_WIFI_READY:
  44.         ESP_LOGW(TAG, "[WiFi-event] ESP32 WiFi ready\n");
  45.     case SYSTEM_EVENT_SCAN_DONE:
  46.         ESP_LOGW(TAG, "[WiFi-event] ESP32 finish scanning AP\n");
  47.     case SYSTEM_EVENT_STA_START:
  48.         //set sta hostname here
  49.         WiFi.setHostname(APP_WIFI_AP_SSID);
  50.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station start\n");
  51.     case SYSTEM_EVENT_AP_START:
  52.         ESP_LOGW(TAG, "[WiFi-event] ESP32 soft-AP start\n");
  53.         //can set ap hostname here
  54.         WiFi.softAPsetHostname(APP_WIFI_AP_SSID);
  55.         //enable ap ipv6 here
  56.         WiFi.softAPenableIpV6();
  57.     case SYSTEM_EVENT_STA_STOP:
  58.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station stop\n");
  59.     case SYSTEM_EVENT_STA_CONNECTED:
  60.         //enable sta ipv6 here
  61.         WiFi.enableIpV6();
  62.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station connected to AP\n");
  63.     case SYSTEM_EVENT_AP_STA_GOT_IP6:
  64.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station or ap or ethernet interface v6IP addr is preferred\n");
  65.         //both interfaces get the same event
  66.         sta_ipv6 = WiFi.localIPv6().toString();
  67.         ap_ipv6 = WiFi.softAPIPv6().toString();
  68.         break;
  69.     case SYSTEM_EVENT_STA_DISCONNECTED:
  70.         connected = false;
  71.         onWhenWifiOnDisconnects();
  72.         //TODO: Set the disconnected flag
  73.         //TODO: Reset-the ip address (clear the ip)
  74.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station disconnected from AP\n");
  75.     case SYSTEM_EVENT_STA_AUTHMODE_CHANGE:
  76.         ESP_LOGW(TAG, "[WiFi-event] The auth mode of AP connected by ESP32 station changed\n");
  77.     case SYSTEM_EVENT_STA_LOST_IP:
  78.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station lost IP and the IP is reset to 0\n");
  79.     case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
  80.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps succeeds in enrollee mode\n");
  81.     case SYSTEM_EVENT_STA_WPS_ER_FAILED:
  82.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps fails in enrollee mode\n");
  83.     case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT:
  84.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps timeout in enrollee mode\n");
  85.     case SYSTEM_EVENT_STA_WPS_ER_PIN:
  86.         ESP_LOGW(TAG, "[WiFi-event] ESP32 station wps pin code in enrollee mode\n");
  87.  
  88.     case SYSTEM_EVENT_ETH_START:
  89.         ESP_LOGW(TAG, "[WiFi-event] SP32 ethernet start\n");
  90.     case SYSTEM_EVENT_ETH_STOP:
  91.         ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet stop\n");
  92.     case SYSTEM_EVENT_ETH_CONNECTED:
  93.         ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet phy link up\n");
  94.     case SYSTEM_EVENT_ETH_DISCONNECTED:
  95.         ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet phy link down \n");
  96.     case SYSTEM_EVENT_ETH_GOT_IP:
  97.         ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet got IP from connected AP\n");
  98.     case SYSTEM_EVENT_MAX:
  99.         ESP_LOGW(TAG, "[WiFi-event] ESP32 ethernet got IP from connected AP\n");
  100.  
  101.     case SYSTEM_EVENT_AP_STOP:
  102.         ESP_LOGW(TAG, "[WiFi-event] ESP32 soft-AP stop \n");
  103.     case SYSTEM_EVENT_AP_STACONNECTED:
  104.         ESP_LOGW(TAG, "[WiFi-event] A station connected to ESP32 soft-AP \n");
  105.     case SYSTEM_EVENT_AP_STADISCONNECTED:
  106.         ESP_LOGW(TAG, "[WiFi-event] A station disconnected from ESP32 soft-AP\n");
  107.     case SYSTEM_EVENT_AP_PROBEREQRECVED:
  108.         ESP_LOGW(TAG, "[WiFi-event] Receive probe request packet in soft-AP interface \n");
  109.     case SYSTEM_EVENT_STA_GOT_IP:
  110.         ESP_LOGW(TAG, "[WiFi-event] event\n");
  111.         ESP_LOGW(TAG, "WiFi connected\n");
  112.         ESP_LOGW(TAG, "IP address: %f\n", WiFi.localIP());
  113.         connected = true;
  114.         onWhenWifiConnects();
  115.         // TODO: Set the connected flag
  116.         // TODO: Set the ip
  117.         break;
  118.     }
  119. }
  120. void onWhenWifiConnects()
  121. {
  122.     Serial.println("STA Connected");
  123.     Serial.print("STA SSID: ");
  124.     Serial.println(WiFi.SSID());
  125.     Serial.print("STA IPv4: ");
  126.     Serial.println(WiFi.localIP());
  127.     Serial.print("STA IPv6: ");
  128.     Serial.println(WiFi.localIPv6());
  129. }
  130. void onWhenWifiOnDisconnects()
  131. {
  132.     Serial.println("STA Disconnected");
  133.     delay(1000);
  134.     WiFi.begin(APP_WIFI_STA_SSID, APP_WIFI_STA_PASS);
  135. }
  136. void whileWifiIsConnectedLoop()
  137. {
  138.     Serial.print("RSSI: ");
  139.     Serial.println(WiFi.RSSI());
  140.     delay(1000);
  141. }
  142. bool WifiManager::isConnected()
  143. {
  144.     return connected;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement