[WebUI] Stack memory tuning (#1610)

Reduce WebUI Stack by 800 Bytes during firmware upgrade
This commit is contained in:
Northern Man authored and GitHub committed 2023-04-19 10:57:58 -05:00
1 parent de07e46494
commit 7d80508fef
1 file changed
+33 -37
+33 -37
View File
@@ -74,7 +74,7 @@ extern unsigned long uptime();
const uint16_t LOG_BUFFER_SIZE = 6096;
uint32_t log_buffer_pointer;
void* log_buffer_mutex;
char log_buffer[LOG_BUFFER_SIZE]; // Log buffer in DRAM
char log_buffer[LOG_BUFFER_SIZE]; // Log buffer in HEAP
const uint16_t MAX_LOGSZ = LOG_BUFFER_SIZE - 96;
const uint16_t TOPSZ = 151; // Max number of characters in topic string
@@ -1030,7 +1030,7 @@ void handleUP() {
for (uint8_t i = 0; i < server.args(); i++) {
WEBUI_TRACE_LOG(F("handleUP Arg: %d, %s=%s" CR), i, server.argName(i).c_str(), server.arg(i).c_str());
}
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer;
DynamicJsonDocument jsonBuffer(JSON_MSG_BUFFER);
JsonObject WEBtoSYS = jsonBuffer.to<JsonObject>();
if (server.hasArg("o")) {
@@ -1038,26 +1038,15 @@ void handleUP() {
WEBtoSYS["version"] = "test";
WEBtoSYS["password"] = ota_pass;
char jsonChar[100];
serializeJson(modules, jsonChar, measureJson(modules) + 1);
char buffer[WEB_TEMPLATE_BUFFER_MAX_SIZE];
{
sendRestartPage();
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, header_html, (String(gateway_name) + " - Updating Firmware and Restart").c_str());
String response = String(buffer);
response += String(restart_script);
response += String(script);
response += String(style);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, reset_body, jsonChar, gateway_name, "Updating Firmware and Restart");
response += String(buffer);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, footer, OMG_VERSION);
response += String(buffer);
server.send(200, "text/html", response);
String output;
serializeJson(WEBtoSYS, output);
Log.notice(F("[WebUI] MQTTtoSYSupdate %s" CR), output.c_str());
}
delay(2000); // Wait for web page to be sent before
String topic = String(mqtt_topic) + String(gateway_name) + String(subjectMQTTtoSYSupdate);
String output;
serializeJson(WEBtoSYS, output);
Log.notice(F("[WebUI] MQTTtoSYSupdate %s" CR), output.c_str());
MQTTHttpsFWUpdate((char*)topic.c_str(), WEBtoSYS);
return;
} else if (server.hasArg("le")) {
@@ -1065,27 +1054,15 @@ void handleUP() {
if (le != 0) {
WEBtoSYS["version"] = (le == 1 ? "latest" : (le == 2 ? "dev" : "unknown"));
WEBtoSYS["password"] = ota_pass;
{
sendRestartPage();
char jsonChar[100];
serializeJson(modules, jsonChar, measureJson(modules) + 1);
char buffer[WEB_TEMPLATE_BUFFER_MAX_SIZE];
String output;
serializeJson(WEBtoSYS, output);
Log.notice(F("[WebUI] MQTTtoSYSupdate %s" CR), output.c_str());
}
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, header_html, (String(gateway_name) + " - Updating Firmware and Restart").c_str());
String response = String(buffer);
response += String(restart_script);
response += String(script);
response += String(style);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, reset_body, jsonChar, gateway_name, "Updating Firmware and Restart");
response += String(buffer);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, footer, OMG_VERSION);
response += String(buffer);
server.send(200, "text/html", response);
delay(2000); // Wait for web page to be sent before
String topic = String(mqtt_topic) + String(gateway_name) + String(subjectMQTTtoSYSupdate);
String output;
serializeJson(WEBtoSYS, output);
Log.notice(F("[WebUI] MQTTtoSYSupdate %s" CR), output.c_str());
MQTTHttpsFWUpdate((char*)topic.c_str(), WEBtoSYS);
return;
}
@@ -1107,6 +1084,25 @@ void handleUP() {
server.send(200, "text/html", response);
}
void sendRestartPage() {
char jsonChar[100];
serializeJson(modules, jsonChar, measureJson(modules) + 1);
char buffer[WEB_TEMPLATE_BUFFER_MAX_SIZE];
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, header_html, (String(gateway_name) + " - Updating Firmware and Restart").c_str());
String response = String(buffer);
response += String(restart_script);
response += String(script);
response += String(style);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, reset_body, jsonChar, gateway_name, "Updating Firmware and Restart");
response += String(buffer);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, footer, OMG_VERSION);
response += String(buffer);
server.send(200, "text/html", response);
delay(2000); // Wait for web page to be sent before
}
/**
* @brief /CS - Serial Console and Command Line
*