From d4be43588f27770a47403c698447b68cbaa1172a Mon Sep 17 00:00:00 2001 From: fvanroie Date: Fri, 6 May 2022 21:41:03 +0200 Subject: [PATCH] Set reload timeout depending on update type #300 --- src/sys/svc/hasp_http.cpp | 91 +++++++++++++-------------------------- 1 file changed, 31 insertions(+), 60 deletions(-) diff --git a/src/sys/svc/hasp_http.cpp b/src/sys/svc/hasp_http.cpp index eee9bd51..6f0348ff 100644 --- a/src/sys/svc/hasp_http.cpp +++ b/src/sys/svc/hasp_http.cpp @@ -89,7 +89,7 @@ const char MAIN_MENU_BUTTON[] PROGMEM = "" D_HTTP_MAIN_MENU ""; const char HTTP_DOCTYPE[] PROGMEM = ""; -const char HTTP_META_GO_BACK[] PROGMEM = ""; +const char HTTP_META_GO_BACK[] PROGMEM = ""; const char HTTP_HEADER[] PROGMEM = "%s"; const char HTTP_HEADER_END[] PROGMEM = "" @@ -210,7 +210,7 @@ static int webSendCached(int statuscode, const char* contenttype, const char* da return statuscode; } -static void webSendHeader(const char* nodename, uint32_t httpdatalength, bool gohome = false) +static void webSendHeader(const char* nodename, uint32_t httpdatalength, uint8_t gohome = 0) { { char buffer[64]; @@ -219,8 +219,12 @@ static void webSendHeader(const char* nodename, uint32_t httpdatalength, bool go uint32_t contentLength = strlen(haspDevice.get_version()); // version length contentLength += sizeof(HTTP_DOCTYPE) - 1; contentLength += sizeof(HTTP_HEADER) - 1 - 2 + strlen(nodename); // -2 for %s - // contentLength += sizeof(HTTP_SCRIPT) - 1; - if(gohome) contentLength += sizeof(HTTP_META_GO_BACK) - 1; + if(gohome > 0) { + snprintf_P(buffer, sizeof(buffer), HTTP_META_GO_BACK, gohome); + contentLength += strlen(buffer); // gohome + } else { + buffer[0] = '\0'; + } contentLength += sizeof(HTTP_HEADER_END) - 1; contentLength += sizeof(HTTP_FOOTER) - 1; contentLength += sizeof(HTTP_END) - 1; @@ -235,6 +239,7 @@ static void webSendHeader(const char* nodename, uint32_t httpdatalength, bool go #else webServer.send(200, ("text/html"), HTTP_DOCTYPE); // 122 #endif + webServer.sendContent(buffer); // gohome snprintf_P(buffer, sizeof(buffer), HTTP_HEADER, nodename); webServer.sendContent(buffer); // 17-2+len @@ -244,14 +249,12 @@ static void webSendHeader(const char* nodename, uint32_t httpdatalength, bool go // webServer.sendContent(HTTP_SCRIPT); // 131 // webServer.sendContent(HTTP_STYLE); // 487 // webServer.sendContent(HASP_STYLE); // 145 - if(gohome) webServer.sendContent(HTTP_META_GO_BACK); // 47 - webServer.sendContent(HTTP_HEADER_END); // 80 + webServer.sendContent(HTTP_HEADER_END); // 80 #else // webServer.sendContent_P(HTTP_SCRIPT); // 131 // webServer.sendContent_P(HTTP_STYLE); // 487 // webServer.sendContent_P(HASP_STYLE); // 145 - if(gohome) webServer.sendContent_P(HTTP_META_GO_BACK); // 47 - webServer.sendContent_P(HTTP_HEADER_END); // 80 + webServer.sendContent_P(HTTP_HEADER_END); // 80 #endif } @@ -334,7 +337,7 @@ static void webHandleRoot() httpMessage += F("" D_HTTP_REBOOT ""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -353,7 +356,7 @@ static void httpHandleReboot() httpMessage += F("
"); httpMessage = F(D_DISPATCH_REBOOT); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), true); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 6); webServer.sendContent(httpMessage); } webSendFooter(); @@ -415,7 +418,7 @@ static void webHandleScreenshot() httpMessage += F("" D_HTTP_NEXT_PAGE ""); httpMessage += FPSTR(MAIN_MENU_BUTTON); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -604,7 +607,7 @@ static void webHandleAbout() httpMessage += FPSTR(MAIN_MENU_BUTTON); httpMessage += "
"; - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -627,7 +630,7 @@ static void webHandleInfoJson() htmldata += "
"; htmldata += FPSTR(MAIN_MENU_BUTTON); - webSendHeader(haspDevice.get_hostname(), htmldata.length(), false); + webSendHeader(haspDevice.get_hostname(), htmldata.length(), 0); webServer.sendContent(htmldata); } webSendFooter(); @@ -702,16 +705,11 @@ static void webUpdateReboot() httpMessage += F("
"); httpMessage += F("Upload complete. Rebooting device, please wait..."); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), true); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 10); webServer.sendContent(httpMessage); } webSendFooter(); - - // Exectute Actions - { - // delay(250); - dispatch_reboot(true); // Save the current config - } + dispatch_reboot(true); // Save the current config } static void webHandleFirmwareUpload() @@ -1084,7 +1082,7 @@ static void webHandleConfig() httpMessage += F("" D_HTTP_FACTORY_RESET ""); httpMessage += FPSTR(MAIN_MENU_BUTTON); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1154,7 +1152,7 @@ static void webHandleMqttConfig() add_form_button(httpMessage, F(D_BACK_ICON D_HTTP_CONFIGURATION), F("/config")); httpMessage += ""; - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1259,7 +1257,7 @@ static void webHandleGuiConfig() add_form_button(httpMessage, F(D_BACK_ICON D_HTTP_CONFIGURATION), F("/config")); httpMessage += F(""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1324,7 +1322,7 @@ static void webHandleWifiConfig() httpMessage += F(""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1374,7 +1372,7 @@ static void webHandleHttpConfig() httpMessage += F("" D_HTTP_CONFIGURATION ""); httpMessage += F(""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1561,7 +1559,7 @@ static void webHandleGpioConfig() add_form_button(httpMessage, F(D_BACK_ICON D_HTTP_CONFIGURATION), F("/config")); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1642,7 +1640,7 @@ static void webHandleGpioOutput() httpMessage += PSTR("

"); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1733,7 +1731,7 @@ static void webHandleGpioInput() httpMessage += PSTR("

"); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1836,7 +1834,7 @@ static void webHandleDebugConfig() add_form_button(httpMessage, F(D_BACK_ICON D_HTTP_CONFIGURATION), F("/config")); httpMessage += F(""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -1968,7 +1966,7 @@ static void webHandleHaspConfig() httpMessage += FPSTR(MAIN_MENU_BUTTON); httpMessage += F(""); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -2032,7 +2030,7 @@ static void webHandleFirmware() httpMessage += F("

ESP update

Updating ESP firmware from: "); httpMessage += url; - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), true); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 30); webServer.sendContent(httpMessage); } @@ -2080,38 +2078,12 @@ static void webHandleFirmware() httpMessage += FPSTR(MAIN_MENU_BUTTON); - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), false); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), 0); webServer.sendContent(httpMessage); } webSendFooter(); } -//////////////////////////////////////////////////////////////////////////////////////////////////// -static void httpHandleEspFirmware() -{ // http://plate01/espfirmware - if(!httpIsAuthenticated(F("espfirmware"))) return; - if(!webServer.hasArg(F("url"))) return; - - const char* url = webServer.arg(F("url")).c_str(); - { - String httpMessage((char*)0); - httpMessage.reserve(HTTP_PAGE_SIZE); - httpMessage += F("

"); - httpMessage += haspDevice.get_hostname(); - httpMessage += F("


"); - - httpMessage += F("

ESP update

Updating ESP firmware from: "); - httpMessage += url; - - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), true); - webServer.sendContent(httpMessage); - } - webSendFooter(); - - LOG_TRACE(TAG_HTTP, F("Updating ESP firmware from: %s"), url); - dispatch_web_update(NULL, url, TAG_HTTP); -} - //////////////////////////////////////////////////////////////////////////////////////////////////// #if HASP_USE_CONFIG > 0 @@ -2161,7 +2133,7 @@ static void httpHandleResetConfig() add_form_button(httpMessage, F(D_BACK_ICON D_HTTP_CONFIGURATION), F("/config")); } - webSendHeader(haspDevice.get_hostname(), httpMessage.length(), resetConfirmed); + webSendHeader(haspDevice.get_hostname(), httpMessage.length(), resetConfirmed ? 10 : 0); webServer.sendContent(httpMessage); } webSendFooter(); @@ -2287,7 +2259,6 @@ void httpSetup() LOG_VERBOSE(TAG_HTTP, F("Total size: %s"), webServer.hostHeader().c_str()); }, webHandleFirmwareUpload); - // webServer.on(F("/espfirmware"), httpHandleEspFirmware); #endif #if HASP_USE_WIFI > 0