mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-13 14:51:21 +10:00
adds setSaveParamsCallback
clean up examples
This commit is contained in:
+38
-28
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user