Backbone for saving settings

Save Baud Rate is first setting to be changed to test the logic
This commit is contained in:
luc 2015-05-18 21:45:56 +08:00
parent 14a959c810
commit 3cb636f416

View File

@ -31,8 +31,9 @@ extern "C" {
#define LIMIT_BUFFER 2500
const char PAGE_HEAD[] PROGMEM = "<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" \
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Wifi Configuration</title>" \
const char PAGE_HEAD_1[] PROGMEM = "<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" \
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n";
const char PAGE_HEAD_2[] PROGMEM = "<title>Wifi Configuration</title>" \
"<link rel=\"stylesheet\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\">\n</head>\n<body>"\
" <div class=\"container theme-showcase\" role=\"main\">";
const char NAV_START[] PROGMEM = "<nav class=\"navbar navbar-inverse\">\n<div class=\"container\">\n";
@ -50,7 +51,7 @@ const char NAV_RIGHT_PART[] PROGMEM = "<p class=\"navbar-text navbar-right\">&n
const char NAV_END[] PROGMEM = "</div>\n</nav>";
const char PAGE_BOTTOM[] PROGMEM = "</body>\n</html>" ;
const char PAGE_BOTTOM[] PROGMEM = "</body>\n</html>\n" ;
const char PANEL_TOP[] PROGMEM = "<div class=\"panel panel-default\">\n<div class=\"panel-heading\">\n<h3 class=\"panel-title\">";
const char PANEL_START[] PROGMEM ="</h3>\n</div>\n<div class=\"panel-body\">";
@ -76,7 +77,42 @@ const char TD_E[] PROGMEM = "</td>\n";
const char TBODY_E[] PROGMEM = "</tbody>\n";
const char T404_PAGE[] PROGMEM = "<H1>Page not found!</H1><BR>Please try <a href=http://";
const char T404_PAGE_2[] PROGMEM = ">here</a>";
const char FORM_START[] PROGMEM = "<div class=\"col-sm-10\"><form METHOD=POST>\n";
const char FORM_END[] PROGMEM = "</form></div>\n";
const char FORM_INPUT_1[] PROGMEM = "<div class=\"form-group\">\b<label for=\"";
const char FORM_INPUT_1_ERROR[] PROGMEM = "<div class=\"form-group has-error\">\b<label for=\"";
const char FORM_INPUT_2[] PROGMEM = "\">";
const char FORM_INPUT_3[] PROGMEM = "</label><BR>\n<input type=\"text\" class=\"form-control\" id=\"";
const char FORM_INPUT_4[] PROGMEM = "\" name=\"";
const char FORM_INPUT_5[] PROGMEM = "\"placeholder=\"";
const char FORM_INPUT_6[] PROGMEM = "\" value=\"";
const char FORM_INPUT_7[] PROGMEM = "\"style=\"width: auto;\"></div>\n";
const char FORM_SELECT_1[] PROGMEM = "</label><BR>\n<select name=\"";
const char FORM_SELECT_2[] PROGMEM = "\" id=\"";
const char FORM_SELECT_3[] PROGMEM = "\" class=\"form-control\" style=\"width:auto;\">\n";
const char FORM_SELECT_END[] PROGMEM = "</select></div>\n";
const char FORM_OPTION_1[] PROGMEM = "<option value=\"";
const char FORM_OPTION_2[] PROGMEM = "\" ";
const char FORM_OPTION_3[] PROGMEM = " >";
const char FORM_OPTION_4[] PROGMEM = "</option>\n";
const char FORM_SUBMIT[] PROGMEM = "<BR><HR><input type=\"submit\" class=\"btn btn-primary\" name=\"SUBMIT\" value=\"Apply\">\n";
const char ALERT_SUCCESS[] PROGMEM = "<div class=\"alert alert-success\" role=\"alert\">\n";
const char ALERT_ERROR[] PROGMEM = "<div class=\"alert alert-danger\" role=\"alert\">\n";
const char DIV_E[] PROGMEM = "</div>\n";
const char BAUD_RATE[] PROGMEM = "BAUD_RATE";
const char REFRESH_1_5[] PROGMEM ="<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=http://";
const char REFRESH_1_15[] PROGMEM ="<META HTTP-EQUIV=\"Refresh\" CONTENT=\"15; URL=http://";
const char REFRESH_2[] PROGMEM ="\">";
#define REFRESH5(ip) web_interface.add4send(REFRESH_1_5);web_interface.add4send(ip);web_interface.add4send(REFRESH_2);
#define REFRESH15(ip) web_interface.add4send(REFRESH_1_15);web_interface.add4send(ip);web_interface.add4send(REFRESH_2);
#define MSG_SUCCESS(msg) web_interface.add4send(ALERT_SUCCESS);web_interface.add4send(msg);web_interface.add4send(DIV_E);
#define MSG_ERROR(msg) web_interface.add4send(ALERT_ERROR);web_interface.add4send(msg);web_interface.add4send(DIV_E);
#define OPTION(value, selected,content) web_interface.add4send(FORM_OPTION_1);web_interface.add4send(value);web_interface.add4send(FORM_OPTION_2);web_interface.add4send(selected);web_interface.add4send(FORM_OPTION_3);web_interface.add4send(content);web_interface.add4send(FORM_OPTION_4);
#define SELECT_START(id,label,name) web_interface.add4send(FORM_INPUT_1);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_2);web_interface.add4send(label);web_interface.add4send(FORM_SELECT_1);web_interface.add4send(name);web_interface.add4send(FORM_SELECT_2);web_interface.add4send(id);web_interface.add4send(FORM_SELECT_3);
#define SELECT_START_ERROR(id,label,name) web_interface.add4send(FORM_INPUT_1_ERROR);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_2);web_interface.add4send(label);web_interface.add4send(FORM_SELECT_1);web_interface.add4send(name);web_interface.add4send(FORM_SELECT_2);web_interface.add4send(id);web_interface.add4send(FORM_SELECT_3);
#define SELECT_END web_interface.add4send(FORM_SELECT_END);
#define INPUT_TEXT( id,label, name,placeholder,value) web_interface.add4send(FORM_INPUT_1);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_2);web_interface.add4send(label);web_interface.add4send(FORM_INPUT_3);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_4);web_interface.add4send(name);web_interface.add4send(FORM_INPUT_5);web_interface.add4send(placeholder);web_interface.add4send(FORM_INPUT_6);web_interface.add4send(value);web_interface.add4send(FORM_INPUT_7);
#define INPUT_TEXT_ERROR( id,label, name,placeholder,value) web_interface.add4send(FORM_INPUT_1_ERROR);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_2);web_interface.add4send(label);web_interface.add4send(FORM_INPUT_3);web_interface.add4send(id);web_interface.add4send(FORM_INPUT_4);web_interface.add4send(name);web_interface.add4send(FORM_INPUT_5);web_interface.add4send(placeholder);web_interface.add4send(FORM_INPUT_6);web_interface.add4send(value);web_interface.add4send(FORM_INPUT_7);
#define LABEL( title, value) web_interface.add4send(LABEL_START); web_interface.add4send(title);web_interface.add4send(LABEL_COLOR);web_interface.add4send(value);web_interface.add4send(LABEL_END);web_interface.add4send(BR);
#define LABEL_UNITS(title, value,units) web_interface.add4send(LABEL_START); web_interface.add4send(title);web_interface.add4send(LABEL_COLOR);web_interface.add4send(value);web_interface.add4send(units);web_interface.add4send(LABEL_END);web_interface.add4send(BR);
#define TH_ENTRY(entry) web_interface.add4send(TH_S);web_interface.add4send(entry);web_interface.add4send(TH_E);
@ -94,7 +130,8 @@ void handle_web_interface_root()
uint8_t mac [WL_MAC_ADDR_LENGTH];
if (wifi_get_opmode()==WIFI_STA ) IP=wifi_config.ip2str(WiFi.localIP());
else IP=wifi_config.ip2str(WiFi.softAPIP());
web_interface.add4send(PAGE_HEAD);
web_interface.add4send(PAGE_HEAD_1);
web_interface.add4send(PAGE_HEAD_2);
//top bar
web_interface.add4send(NAV_START);
web_interface.add4send(NAV_LEFT_PART1) ;
@ -133,7 +170,7 @@ void handle_web_interface_root()
//LABEL(sbuf,F("Boot mode: "),String(system_get_boot_mode())) //no meaning so far
LABEL(F("Boot version: "),String(system_get_boot_version()).c_str())
istatus=0;
if (!CONFIG::read_buffer(EP_BAUD_RATE, (byte *)&istatus , BAUD_LENGH))istatus=0;;
if (!CONFIG::read_buffer(EP_BAUD_RATE, (byte *)&istatus , BAUD_LENGH))istatus=0;
LABEL(F("Baud rate: "),String(istatus).c_str())
web_interface.add4send(PANEL_END);
//access point
@ -247,24 +284,104 @@ void handle_web_interface_root()
void handle_web_interface_configSys()
{
String IP;
if (wifi_get_opmode()==WIFI_STA ) IP=wifi_config.ip2str(WiFi.localIP());
else IP=wifi_config.ip2str(WiFi.softAPIP());
web_interface.add4send(PAGE_HEAD);
String stmp,smsg;
int istatus=0;
bool msg_alert_error=false;
bool msg_alert_success=false;
int ibaud=0;
//check is it is a submission or a display
if (web_interface.WebServer.hasArg(F("SUBMIT")))
{ //is there a baude rate
if (web_interface.WebServer.hasArg(BAUD_RATE))
{ //is value correct ?
ibaud = atoi(web_interface.WebServer.arg(BAUD_RATE).c_str());
if (!(ibaud==9600 || ibaud==19200|| ibaud==38400|| ibaud==57600|| ibaud==115200|| ibaud==230400))
{
msg_alert_error=true;
smsg=F("Error in query!!");
}
}
else
{
msg_alert_error=true;
smsg=F("Error in query!!");
}
//if no error apply the changes
if (msg_alert_error!=true)
{
if(!CONFIG::write_buffer(EP_BAUD_RATE,(const byte *)&ibaud,BAUD_LENGH))
{
msg_alert_error=true;
smsg=F("Error in writing changes!!");
}
else
if (!msg_alert_error)
{
msg_alert_success=true;
smsg=F("Change saved, restarting module...");
}
}
}
if (!CONFIG::read_buffer(EP_BAUD_RATE, (byte *)&istatus , BAUD_LENGH))istatus=0;
if (wifi_get_opmode()==WIFI_STA ) stmp=wifi_config.ip2str(WiFi.localIP());
else stmp=wifi_config.ip2str(WiFi.softAPIP());
web_interface.add4send(PAGE_HEAD_1);
web_interface.add4send(PAGE_HEAD_2);
web_interface.add4send(NAV_START) ;
web_interface.add4send(NAV_LEFT_PART1) ;
web_interface.add4send(NAV_LEFT_PART2a) ;
web_interface.add4send(IP.c_str());
web_interface.add4send(stmp.c_str());
web_interface.add4send(NAV_LEFT_PART2b);
web_interface.add4send(NAV_ELEMENT_ACTIVE) ;
web_interface.add4send(NAV_LEFT_PART3a) ;
web_interface.add4send(IP.c_str());
web_interface.add4send(stmp.c_str());
web_interface.add4send(NAV_LEFT_PART3b) ;
web_interface.add4send(NAV_RIGHT_PART) ;
web_interface.add4send(NAV_END) ;
web_interface.add4send("<div>Configuration</div>");
web_interface.add4send(PAGE_BOTTOM);
web_interface.add4send(PANEL_TOP);
web_interface.add4send(F("System"));
web_interface.add4send(PANEL_START);
web_interface.add4send(FORM_START);
SELECT_START(F("SYS1"),F("Baud rate"),F("BAUD_RATE"))
if (istatus==9600)stmp = F("selected");
else stmp="";
OPTION(F("9600"), stmp.c_str(),F("9600"))
if (istatus==19200)stmp = F("selected");
else stmp="";
OPTION(F("19200"), stmp.c_str(),F("19200"))
if (istatus==38400)stmp = F("selected");
else stmp="";
OPTION(F("38400"), stmp.c_str(),F("38400"))
if (istatus==57600)stmp = F("selected");
else stmp="";
OPTION(F("57600"), stmp.c_str(),F("57600"))
if (istatus==115200)stmp = F("selected");
else stmp="";
OPTION(F("115200"), stmp.c_str(),F("115200"))
if (istatus==230400)stmp = F("selected");
else stmp="";
OPTION(F("230400"), stmp.c_str(),F("230400"))
SELECT_END
web_interface.add4send(FORM_SUBMIT);
web_interface.add4send(FORM_END);
web_interface.add4send(PANEL_END);
if(msg_alert_error)
{
MSG_ERROR(smsg.c_str())
}
if(msg_alert_success)
{
MSG_SUCCESS(smsg.c_str())
}
web_interface.add4send(PAGE_BOTTOM);
web_interface.flushbuffer();
if (msg_alert_success && !msg_alert_error)
{
system_restart();
}
}
void handle_not_found()