Browse Source

Remove old c style callback and use c++ callback. This enable the use of lambda with capture. (#96)

Jonathan Dumaresq 3 năm trước cách đây
mục cha
commit
0a0cedc8ee
2 tập tin đã thay đổi với 6 bổ sung6 xóa
  1. 2 2
      src/ESPAsyncWiFiManager.cpp
  2. 4 4
      src/ESPAsyncWiFiManager.h

+ 2 - 2
src/ESPAsyncWiFiManager.cpp

@@ -1267,13 +1267,13 @@ boolean AsyncWiFiManager::captivePortal(AsyncWebServerRequest *request)
 }
 
 // start up config portal callback
-void AsyncWiFiManager::setAPCallback(void (*func)(AsyncWiFiManager *myAsyncWiFiManager))
+void AsyncWiFiManager::setAPCallback(std::function<void(AsyncWiFiManager *)> func)
 {
   _apcallback = func;
 }
 
 // start up save config callback
-void AsyncWiFiManager::setSaveConfigCallback(void (*func)(void))
+void AsyncWiFiManager::setSaveConfigCallback(std::function<void()> func)
 {
   _savecallback = func;
 }

+ 4 - 4
src/ESPAsyncWiFiManager.h

@@ -172,9 +172,9 @@ public:
                             IPAddress dns1 = (uint32_t)0x00000000,
                             IPAddress dns2 = (uint32_t)0x00000000);
   // called when AP mode and config portal is started
-  void setAPCallback(void (*func)(AsyncWiFiManager *));
+  void setAPCallback(std::function<void(AsyncWiFiManager *)>);
   // called when settings have been changed and connection was successful
-  void setSaveConfigCallback(void (*func)(void));
+  void setSaveConfigCallback(std::function<void()> func);
   //adds a custom parameter
   void addParameter(AsyncWiFiManagerParameter *p);
   // if this is set, it will exit after config, even if connection is unsucessful
@@ -280,8 +280,8 @@ private:
 
   boolean _tryConnectDuringConfigPortal = true;
 
-  void (*_apcallback)(AsyncWiFiManager *) = NULL;
-  void (*_savecallback)(void) = NULL;
+  std::function<void(AsyncWiFiManager *)> _apcallback;
+  std::function<void()> _savecallback;
 
   AsyncWiFiManagerParameter *_params[WIFI_MANAGER_MAX_PARAMS];