adds setSaveParamsCallback

clean up examples
This commit is contained in:
tablatronix
2018-10-11 15:23:48 -05:00
parent 4f1196aa69
commit bef46b9e72
3 changed files with 65 additions and 62 deletions
+38 -28
View File
@@ -601,8 +601,8 @@ uint8_t WiFiManager::processConfigPortal(){
DEBUG_WM(F("Got IP Address:"));
DEBUG_WM(WiFi.localIP());
if ( _savecallback != NULL) {
_savecallback();
if ( _savewificallback != NULL) {
_savewificallback();
}
stopConfigPortal();
return WL_CONNECTED; // CONNECT SUCCESS
@@ -614,8 +614,8 @@ uint8_t WiFiManager::processConfigPortal(){
// do save callback
// @todo this is more of an exiting callback than a save, clarify when this should actually occur
// confirm or verify data was saved to make this more accurate callback
if ( _savecallback != NULL) {
_savecallback();
if ( _savewificallback != NULL) {
_savewificallback();
}
stopConfigPortal();
return WL_CONNECT_FAILED; // CONNECT FAIL
@@ -1330,18 +1330,8 @@ void WiFiManager::handleParamSave() {
DEBUG_WM(DEBUG_DEV,F("Method:"),server->method() == HTTP_GET ? (String)FPSTR(S_GET) : (String)FPSTR(S_POST));
handleRequest();
// @todo use new callback for before paramsaves
if ( _presavecallback != NULL) {
_presavecallback();
}
doParamSave();
// @todo use new callback for paramsaves
if ( _savecallback != NULL) {
_savecallback();
}
String page = getHTTPHead(FPSTR(S_titleparamsaved)); // @token titleparamsaved
page += FPSTR(HTTP_PARAMSAVED);
page += FPSTR(HTTP_END);
@@ -1353,13 +1343,18 @@ void WiFiManager::handleParamSave() {
}
void WiFiManager::doParamSave(){
// @todo use new callback for before paramsaves, is this really needed?
if ( _presavecallback != NULL) {
_presavecallback();
}
//parameters
if(_paramsCount > 0){
DEBUG_WM(DEBUG_VERBOSE,F("Parameters"));
DEBUG_WM(DEBUG_VERBOSE,FPSTR(D_HR));
for (int i = 0; i < _paramsCount; i++) {
if (_params[i] == NULL) {
break;
break; // @todo might not be needed anymore
}
//read parameter from server
String name = (String)FPSTR(S_parampre)+(String)i;
@@ -1376,6 +1371,11 @@ void WiFiManager::doParamSave(){
}
DEBUG_WM(DEBUG_VERBOSE,FPSTR(D_HR));
}
if ( _saveparamscallback != NULL) {
_saveparamscallback();
}
}
/**
@@ -2007,33 +2007,44 @@ void WiFiManager::setBreakAfterConfig(boolean shouldBreak) {
/**
* setAPCallback, set a callback when softap is started
* @access public
* @param {[type]} void (*func)(WiFiManager* myWiFiManager) [description]
* @param {[type]} void (*func)(WiFiManager* wminstance)
*/
void WiFiManager::setAPCallback( std::function<void(WiFiManager*)> func ) {
_apcallback = func;
}
/**
* setSaveConfigCallback, set a save config callback after closing configportal
* @todo only calls if configportal stopped
* @note calls only if wifi is saved or changed, or setBreakAfterConfig(true)
* @access public
* @param {[type]} void (*func)(void) [description]
* @param {[type]} void (*func)(void)
*/
void WiFiManager::setSaveConfigCallback( std::function<void()> func ) {
_savecallback = func;
_savewificallback = func;
}
//start up reset config callback
void WiFiManager::setConfigResetCallback(void(*func)(void)) {
/**
* setConfigResetCallback, set a callback to occur when a resetSettings() occurs
* @access public
* @param {[type]} void(*func)(void)
*/
void WiFiManager::setConfigResetCallback( std::function<void()> func ) {
_resetcallback = func;
}
//sets a custom element to add to head, like a new style tag
/**
* setPreSaveConfigCallback, set a pre save config callback after closing configportal
* @todo only calls if configportal stopped
* setSaveParamsCallback, set a save params callback on params save in wifi or params pages
* @access public
* @param {[type]} void (*func)(void) [description]
* @param {[type]} void (*func)(void)
*/
void WiFiManager::setSaveParamsCallback( std::function<void()> func ) {
_saveparamscallback = func;
}
/**
* setPreSaveConfigCallback, set a callback to fire before saving wifi or params
* @access public
* @param {[type]} void (*func)(void)
*/
void WiFiManager::setPreSaveConfigCallback( std::function<void()> func ) {
_presavecallback = func;
@@ -2049,10 +2060,9 @@ void WiFiManager::setCustomHeadElement(const char* element) {
_customHeadElement = element;
}
//if this is true, remove duplicated Access Points - defaut true
/**
* toggle wifiscan hiding of duplicate ssid names
* if enabled, then the webportal wifiscan page will show all aps
* if this is false, wifiscan will remove duplicat Access Points - defaut true
* @access public
* @param boolean removeDuplicates [true]
*/
+12 -5
View File
@@ -182,12 +182,16 @@ class WiFiManager
int getParametersCount();
// SET CALLBACKS
//called when AP mode and config portal is started
void setAPCallback( std::function<void(WiFiManager*)> func );
//called when settings reset have been triggered
void setConfigResetCallback(void(*func)(void));
//called when settings have been changed and connection was successful
void setConfigResetCallback( std::function<void()> func );
//called when wifi settings have been changed and connection was successful ( or setBreakAfterConfig(true) )
void setSaveConfigCallback( std::function<void()> func );
//called when settings have been changed and connection was successful
void setSaveParamsCallback( std::function<void()> func );
//called when settings before have been changed and connection was successful
void setPreSaveConfigCallback( std::function<void()> func );
@@ -277,7 +281,8 @@ class WiFiManager
#else
using WM_WebServer = ESP8266WebServer;
#endif
std::unique_ptr<WM_WebServer> server;
std::unique_ptr<WM_WebServer> server;
std::vector<uint8_t> _menuIds;
std::vector<const char *> _menuIdsDefault = {"wifi","info","exit"};
@@ -477,10 +482,12 @@ class WiFiManager
void DEBUG_WM(wm_debuglevel_t level, Generic text,Genericb textb);
// callbacks
// @todo use cb list (vector) maybe event ids, allow no return value
std::function<void(WiFiManager*)> _apcallback;
std::function<void()> _savecallback;
std::function<void()> _savewificallback;
std::function<void()> _presavecallback;
void (*_resetcallback)(void) = NULL; // @todo change to std func
std::function<void()> _saveparamscallback;
std::function<void()> _resetcallback;
template <class T>
auto optionalIPFromString(T *obj, const char *s) -> decltype( obj->fromString(s) ) {
@@ -7,6 +7,7 @@
const char* modes[] = { "NULL", "STA", "AP", "STA+AP" };
WiFiManager wm;
bool TEST_CP = true; // always start the configportal
char ssid[] = "*************"; // your network SSID (name)
char pass[] = "********"; // your network password
@@ -34,20 +35,24 @@ void debugchipid(){
// ESP32 Chip ID = 507726A4AE30
}
void saveCallback(){
Serial.println("saveCallback fired");
void saveWifiCallback(){
Serial.println("[CALLBACK] saveCallback fired");
}
//gets called when WiFiManager enters configuration mode
void configModeCallback (WiFiManager *myWiFiManager) {
Serial.println("configModeCallback fired");
Serial.println("[CALLBACK] configModeCallback fired");
// myWiFiManager->setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
// Serial.println(WiFi.softAPIP());
//if you used auto generated SSID, print it
// Serial.println(myWiFiManager->getConfigPortalSSID());
}
void saveParamCallback(){
Serial.println("[CALLBACK] saveParamCallback fired");
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
@@ -68,7 +73,6 @@ void setup() {
// wm.erase();
wm.setClass("invert");
wm.setAPCallback(configModeCallback);
//sets timeout until configuration portal gets turned off
//useful to make it all retry or go to sleep
@@ -77,16 +81,6 @@ void setup() {
// wm.setConnectTimeout(5);
// wm.setShowStaticFields(true);
// uint8_t menu[] = {wm.MENU_WIFI,wm.MENU_INFO,wm.MENU_PARAM,wm.MENU_CLOSE};
// wm.setMenu(menu);
// std::vector<WiFiManager::menu_page_t> menu = {wm.MENU_WIFI,wm.MENU_INFO,wm.MENU_PARAM,wm.MENU_CLOSE,wm.MENU_SEP,wm.MENU_ERASE,wm.MENU_EXIT};
// wm.setMenu(menu);
// std::vector<WiFiManager::menu_page_t> menu = {wm.MENU_WIFI,wm.MENU_INFO,wm.MENU_PARAM,wm.MENU_CLOSE,wm.MENU_SEP,wm.MENU_ERASE,wm.MENU_EXIT};
// wm.setMenu(menu);
WiFiManagerParameter custom_html("<p>This Is Custom HTML</p>");
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", "", 40);
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", "", 6);
@@ -95,7 +89,9 @@ void setup() {
WiFiManagerParameter custom_ipaddress("input_ip", "input IP", "", 15,"pattern='\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}'");
// callbacks
wm.setSaveConfigCallback(saveCallback);
wm.setAPCallback(configModeCallback);
wm.setSaveConfigCallback(saveWifiCallback);
wm.setSaveParamsCallback(saveParamCallback);
//add all your parameters here
wm.addParameter(&custom_html);
@@ -108,21 +104,11 @@ void setup() {
custom_html.setValue("test",4);
custom_token.setValue("test",4);
// MENU_WIFI = 0,
// MENU_WIFINOSCAN = 1,
// MENU_INFO = 2,
// MENU_PARAM = 3,
// MENU_CLOSE = 4,
// MENU_RESTART = 5,
// MENU_EXIT = 6,
// MENU_ERASE = 7,
// MENU_SEP = 8
// const char* menu[] = {"wifi","wifinoscan","info","param","close","sep","erase","restart","exit"};
// wm.setMenu(menu,9);
std::vector<const char *> menu = {"wifi","wifinoscan","info","param","close","sep","erase","restart","exit"};
wm.setMenu(menu);
// wm.setMenu(menu);
// set static sta ip
// wm.setSTAStaticIPConfig(IPAddress(10,0,1,99), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
@@ -152,10 +138,10 @@ void setup() {
if(!wm.autoConnect("AutoConnectAP")) {
Serial.println("failed to connect and hit timeout");
}
else {
else if(TEST_CP) {
// start configportal always
// wm.setConfigPortalTimeout(60);
// wm.startConfigPortal();
wm.setConfigPortalTimeout(60);
wm.startConfigPortal();
}
pinMode(TRIGGER_PIN, INPUT);