PersWiFiManager.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef PERSWIFIMANAGER_H
  2. #define PERSWIFIMANAGER_H
  3. #define WIFI_HTM_PROGMEM
  4. #if defined(ESP8266)
  5. #include <ESP8266WiFi.h>
  6. #include <ESP8266WebServer.h>
  7. #elif defined(ESP32)
  8. #include <WiFi.h>
  9. #include <WebServer.h>
  10. #else
  11. #error "Unknown board class"
  12. #endif
  13. #include <DNSServer.h>
  14. #define WIFI_CONNECT_TIMEOUT 30
  15. class PersWiFiManager {
  16. public:
  17. typedef std::function<void(void)> WiFiChangeHandlerFunction;
  18. #if defined(ESP8266)
  19. PersWiFiManager(ESP8266WebServer& s, DNSServer& d);
  20. #elif defined(ESP32)
  21. PersWiFiManager(WebServer& s, DNSServer& d);
  22. #endif
  23. bool attemptConnection(const String& ssid = "", const String& pass = "");
  24. void setupWiFiHandlers();
  25. bool begin(const String& ssid = "", const String& pass = "");
  26. void resetSettings();
  27. String getApSsid();
  28. String getSsid();
  29. void setApCredentials(const String& apSsid, const String& apPass = "");
  30. void setConnectNonBlock(bool b);
  31. void handleWiFi();
  32. void startApMode();
  33. void onConnect(WiFiChangeHandlerFunction fn);
  34. void onAp(WiFiChangeHandlerFunction fn);
  35. private:
  36. #if defined(ESP8266)
  37. ESP8266WebServer * _server;
  38. #elif defined(ESP32)
  39. WebServer * _server;
  40. #endif
  41. DNSServer * _dnsServer;
  42. String _apSsid, _apPass;
  43. bool _connectNonBlock;
  44. unsigned long _connectStartTime;
  45. bool _freshConnectionAttempt;
  46. WiFiChangeHandlerFunction _connectHandler;
  47. WiFiChangeHandlerFunction _apHandler;
  48. };//class
  49. #endif