diff --git a/esp8266/esp8266.ino b/esp8266/esp8266.ino index 105d3c8b..17398822 100644 --- a/esp8266/esp8266.ino +++ b/esp8266/esp8266.ino @@ -167,4 +167,9 @@ uint8_t i,data; COMMAND::read_buffer_serial(sbuf, len); } } + if (web_interface->restartmodule) + { + ESP.restart(); + while (1){delay(1);}; + } } diff --git a/esp8266/webinterface.cpp b/esp8266/webinterface.cpp index 6a98d265..7238eccc 100644 --- a/esp8266/webinterface.cpp +++ b/esp8266/webinterface.cpp @@ -314,6 +314,8 @@ const char POLLING_TITLE[]PROGMEM ="Refresh Web page (s):"; const char POLLING_NAME[]PROGMEM ="Refresh printer status every :"; const char POLLING_ID[]PROGMEM ="POLLING"; const char TEXT_HTML[]PROGMEM ="text/html"; +const char RESTARTCMD [] PROGMEM =""; +const char RESTARTINGMSG [] PROGMEM = "
Restarting, please wait....
"; @@ -772,14 +774,14 @@ void handle_web_interface_configSys() } else buffer2send+=(PROGMEM2CHAR(FORM_SUBMIT)); - buffer2send+=(PROGMEM2CHAR(FORM_END)); - buffer2send+=(PROGMEM2CHAR(PANEL_END)); - buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); - web_interface->WebServer.send(200, "text/html", buffer2send); + buffer2send+=(PROGMEM2CHAR(FORM_END)); + buffer2send+=(PROGMEM2CHAR(PANEL_END)); if (msg_alert_success && !msg_alert_error) { - system_restart(); + buffer2send+= PROGMEM2CHAR(RESTARTCMD); } + buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); + web_interface->WebServer.send(200, "text/html", buffer2send); } void handle_web_interface_configAP() @@ -1136,14 +1138,14 @@ void handle_web_interface_configAP() else buffer2send+=(PROGMEM2CHAR(FORM_SUBMIT)); - buffer2send+=(PROGMEM2CHAR(FORM_END)); - buffer2send+=(PROGMEM2CHAR(PANEL_END)); - buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); - web_interface->WebServer.send(200, "text/html", buffer2send); - if (msg_alert_success && !msg_alert_error) + buffer2send+=(PROGMEM2CHAR(FORM_END)); + buffer2send+=(PROGMEM2CHAR(PANEL_END)); + if (msg_alert_success && !msg_alert_error) { - system_restart(); + buffer2send+=PROGMEM2CHAR(RESTARTCMD); } + buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); + web_interface->WebServer.send(200, "text/html", buffer2send); } @@ -1477,14 +1479,14 @@ void handle_web_interface_configSTA() else buffer2send+=(PROGMEM2CHAR(FORM_SUBMIT)); - buffer2send+=(PROGMEM2CHAR(FORM_END)); - buffer2send+=(PROGMEM2CHAR(PANEL_END)); - buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); - web_interface->WebServer.send(200, "text/html", buffer2send); + buffer2send+=(PROGMEM2CHAR(FORM_END)); + buffer2send+=(PROGMEM2CHAR(PANEL_END)); if (msg_alert_success && !msg_alert_error) { - system_restart(); + buffer2send+= PROGMEM2CHAR(RESTARTCMD); } + buffer2send+=(PROGMEM2CHAR(PAGE_BOTTOM)); + web_interface->WebServer.send(200, "text/html", buffer2send); } @@ -1713,6 +1715,12 @@ void handle_web_interface_status() } +void handle_restart() +{ + web_interface->WebServer.send(200,"text/html",PROGMEM2CHAR(RESTARTINGMSG)); + web_interface->restartmodule=true; +} + void handle_web_command() { if (web_interface->WebServer.hasArg(PROGMEM2CHAR(COMMAND_ID))) @@ -1784,6 +1792,7 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port) WebServer.on("/PRINTER",HTTP_ANY, handle_web_interface_printer); WebServer.on("/CMD",HTTP_ANY, handle_web_command); WebServer.on("/mincss.css",HTTP_GET, handle_css); + WebServer.on("/RESTART",HTTP_GET, handle_restart); #ifdef SSDP_FEATURE WebServer.on("/description.xml", HTTP_GET, handle_SSDP); #endif @@ -1793,6 +1802,7 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port) answer4M220="100"; answer4M221="100"; last_temp=system_get_time(); + restartmodule=false; } WEBINTERFACE_CLASS * web_interface; diff --git a/esp8266/webinterface.h b/esp8266/webinterface.h index 3afff371..61b8468d 100644 --- a/esp8266/webinterface.h +++ b/esp8266/webinterface.h @@ -45,6 +45,7 @@ class WEBINTERFACE_CLASS STORESTRINGS_CLASS error_msg; STORESTRINGS_CLASS info_msg; STORESTRINGS_CLASS status_msg; + bool restartmodule; private: };