mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-16 16:01:36 +10:00
change setmenu to take vector or array of strnig tokens
This commit is contained in:
+28
-17
@@ -152,7 +152,9 @@ WiFiManager::WiFiManager():WiFiManager(Serial) {
|
||||
}
|
||||
|
||||
void WiFiManager::WiFiManagerInit(){
|
||||
setMenu(_menuIdsDefault);
|
||||
if(_debug && _debugLevel > DEBUG_DEV) debugPlatformInfo();
|
||||
|
||||
_usermode = WiFi.getMode();
|
||||
WiFi.persistent(false); // disable persistent so scannetworks and mode switching do not cause overwrites
|
||||
|
||||
@@ -820,10 +822,8 @@ void WiFiManager::handleParam(){
|
||||
String WiFiManager::getMenuOut(){
|
||||
String page;
|
||||
|
||||
for(menu_page_t& v :_menuIds_v ){
|
||||
// DEBUG_WM("menuid:",(String)v);
|
||||
// if(v == MENU_END) break; // MENU_END
|
||||
if((v == MENU_PARAM) && (_paramsCount == 0)) continue; // no params set, omit params
|
||||
for(auto& v :_menuIds ){
|
||||
if(((String)v == "param") && (_paramsCount == 0)) continue; // no params set, omit params
|
||||
page += HTTP_PORTAL_MENU[v];
|
||||
}
|
||||
|
||||
@@ -1913,22 +1913,33 @@ void WiFiManager::setShowInfoErase(boolean enabled){
|
||||
* @since $dev
|
||||
* @param uint8_t menu[] array of menu ids
|
||||
*/
|
||||
void WiFiManager::setMenu(menu_page_t menu[], uint8_t size){
|
||||
int i;
|
||||
size_t n = size;
|
||||
for(i=0;i<sizeof(_menuIds);i++){
|
||||
if(menu[i] == MENU_PARAM) _paramsInWifi = false; // param auto flag
|
||||
if(i >= n) _menuIds[i] = MENU_END;
|
||||
else _menuIds[i] = menu[i];
|
||||
void WiFiManager::setMenu(const char * menu[], uint8_t size){
|
||||
_menuIds.clear();
|
||||
for(size_t i = 0; i < size; i++){
|
||||
for(size_t j = 0; j < _menuids_cnt; j++){
|
||||
if(menu[i] == _menutokens[j]){
|
||||
if((String)menu[i] == "param") _paramsInWifi = false; // param auto flag
|
||||
_menuIds.push_back(j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// @todo copy into vector if we keep this..
|
||||
// DEBUG_WM(getMenuOut());
|
||||
}
|
||||
|
||||
void WiFiManager::setMenu(std::vector<menu_page_t>& menu){
|
||||
_menuIds_v = menu;
|
||||
void WiFiManager::setMenu(std::vector<const char *>& menu){
|
||||
_menuIds.clear();
|
||||
for(auto v : menu ){
|
||||
for(size_t j = 0; j<_menuids_cnt; j++){
|
||||
if(v == _menutokens[j]){
|
||||
if((String)v == "param") _paramsInWifi = false; // param auto flag
|
||||
_menuIds.push_back(j);
|
||||
}
|
||||
}
|
||||
}
|
||||
// DEBUG_WM(getMenuOut());
|
||||
}
|
||||
|
||||
|
||||
// GETTERS
|
||||
|
||||
/**
|
||||
@@ -1988,12 +1999,12 @@ void WiFiManager::DEBUG_WM(wm_debuglevel_t level,Generic text,Genericb textb) {
|
||||
if(_debugLevel < level) return;
|
||||
|
||||
if (_debug) {
|
||||
if(_debugLevel > 3){
|
||||
if(_debugLevel >= DEBUG_MAX){
|
||||
_debugPort.print("MEM: ");
|
||||
_debugPort.println((String)ESP.getFreeHeap());
|
||||
}
|
||||
_debugPort.print("*WM: ");
|
||||
// _debugPort.print("["+(String)level+"] ");
|
||||
if(_debugLevel == DEBUG_DEV) _debugPort.print("["+(String)level+"] ");
|
||||
_debugPort.print(text);
|
||||
if(textb){
|
||||
_debugPort.print(" ");
|
||||
|
||||
+26
-25
@@ -128,19 +128,6 @@ class WiFiManager
|
||||
~WiFiManager();
|
||||
void WiFiManagerInit();
|
||||
|
||||
typedef enum {
|
||||
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,
|
||||
MENU_END = 255
|
||||
} menu_page_t;
|
||||
|
||||
// auto connect to saved wifi, or custom, and start config portal on failures
|
||||
boolean autoConnect();
|
||||
boolean autoConnect(char const *apName, char const *apPassword = NULL);
|
||||
@@ -223,8 +210,9 @@ class WiFiManager
|
||||
void setShowInfoErase(boolean enabled);
|
||||
// set custom menu
|
||||
|
||||
void setMenu(std::vector<menu_page_t>& menu);
|
||||
void setMenu(menu_page_t menu[], uint8_t size);
|
||||
// void setMenu(std::vector<menu_page_t>& menu);
|
||||
void setMenu(std::vector<const char*>& menu);
|
||||
void setMenu(const char* menu[], uint8_t size);
|
||||
|
||||
// get last connection result, includes autoconnect and wifisave
|
||||
uint8_t getLastConxResult();
|
||||
@@ -247,16 +235,21 @@ class WiFiManager
|
||||
#endif
|
||||
std::unique_ptr<WM_WebServer> server;
|
||||
|
||||
typedef enum {
|
||||
DEBUG_ERROR = 0,
|
||||
DEBUG_NOTIFY = 1, // default
|
||||
DEBUG_VERBOSE = 2,
|
||||
DEBUG_DEV = 3,
|
||||
DEBUG_MAX = 4
|
||||
} wm_debuglevel_t;
|
||||
int _menuids_cnt = 9;
|
||||
const char * const _menutokens[9] PROGMEM = {
|
||||
"wifi",
|
||||
"wifinoscan",
|
||||
"info",
|
||||
"param",
|
||||
"close",
|
||||
"restart",
|
||||
"exit",
|
||||
"erase",
|
||||
"sep"
|
||||
};
|
||||
|
||||
menu_page_t _menuIds[10] = {MENU_WIFI,MENU_INFO,MENU_EXIT,MENU_END};
|
||||
std::vector<menu_page_t> _menuIds_v = {MENU_WIFI,MENU_INFO,MENU_EXIT};
|
||||
std::vector<uint8_t> _menuIds;
|
||||
std::vector<const char *> _menuIdsDefault = {"wifi","info","exit"};
|
||||
|
||||
// ip configs @todo struct ?
|
||||
IPAddress _ap_static_ip;
|
||||
@@ -402,8 +395,16 @@ class WiFiManager
|
||||
WiFiManagerParameter** _params = NULL;
|
||||
|
||||
// debugging
|
||||
typedef enum {
|
||||
DEBUG_ERROR = 0,
|
||||
DEBUG_NOTIFY = 1, // default
|
||||
DEBUG_VERBOSE = 2,
|
||||
DEBUG_DEV = 3,
|
||||
DEBUG_MAX = 4
|
||||
} wm_debuglevel_t;
|
||||
|
||||
boolean _debug = true;
|
||||
uint8_t _debugLevel = DEBUG_NOTIFY;
|
||||
uint8_t _debugLevel = DEBUG_DEV;
|
||||
Stream& _debugPort; // debug output stream ref
|
||||
|
||||
template <typename Generic>
|
||||
|
||||
Reference in New Issue
Block a user