From 174bb615e644b04e2787d2d0eea5b20086c2775a Mon Sep 17 00:00:00 2001 From: Chris Marrin Date: Sat, 7 Apr 2018 09:13:48 -0700 Subject: [PATCH] Changed setAPCallback and setSaveConfigCallback to take std::function params This allows Predicates and Lambdas to be passed. Still allows bare function pointers so this patch is fully backward compatible. Tested on WiFiManager examples for backward compatibility and on my own project (OfficeClock) for handling lambdas with captured variables --- WiFiManager.cpp | 6 +++--- WiFiManager.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index aabbe8d..e687c1c 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1809,17 +1809,17 @@ void WiFiManager::setBreakAfterConfig(boolean shouldBreak) { * @access public * @param {[type]} void (*func)(WiFiManager* myWiFiManager) [description] */ -void WiFiManager::setAPCallback( void (*func)(WiFiManager* myWiFiManager) ) { +void WiFiManager::setAPCallback( std::function func ) { _apcallback = func; } - + /** * setSaveConfigCallback, set a save config callback after closing configportal * @todo only calls if configportal stopped * @access public * @param {[type]} void (*func)(void) [description] */ -void WiFiManager::setSaveConfigCallback( void (*func)(void) ) { +void WiFiManager::setSaveConfigCallback( std::function func ) { _savecallback = func; } diff --git a/WiFiManager.h b/WiFiManager.h index 6763833..bc760c9 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -177,9 +177,9 @@ class WiFiManager //sets config for a static IP with DNS void setSTAStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn, IPAddress dns); //called when AP mode and config portal is started - void setAPCallback( void (*func)(WiFiManager*) ); + void setAPCallback( std::function func ); //called when settings have been changed and connection was successful - void setSaveConfigCallback( void (*func)(void) ); + void setSaveConfigCallback( std::function func ); //adds a custom parameter, returns false on failure bool addParameter(WiFiManagerParameter *p); //if this is set, it will exit after config, even if connection is unsuccessful. @@ -418,8 +418,8 @@ class WiFiManager void DEBUG_WM(wm_debuglevel_t level, Generic text,Genericb textb); // callbacks - void (*_apcallback)(WiFiManager*) = NULL; - void (*_savecallback)(void) = NULL; + std::function _apcallback; + std::function _savecallback; template auto optionalIPFromString(T *obj, const char *s) -> decltype( obj->fromString(s) ) {