From 30fb4fbad754acbc49d0b81fe193944847d4e311 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 8 Sep 2024 20:05:24 +0200 Subject: [PATCH] limit WebUI log to 25 if no psram --- src/web/WebLogService.cpp | 8 ++++++-- src/web/WebSettingsService.cpp | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp index e563400f8..92aed297d 100644 --- a/src/web/WebLogService.cpp +++ b/src/web/WebLogService.cpp @@ -75,12 +75,15 @@ size_t WebLogService::maximum_log_messages() const { void WebLogService::maximum_log_messages(size_t count) { maximum_log_messages_ = std::max((size_t)1, count); + if (limit_log_messages_ > maximum_log_messages_) { limit_log_messages_ = maximum_log_messages_; } + while (log_messages_.size() > maximum_log_messages_) { log_messages_.pop_front(); } + EMSESP::webSettingsService.update([&](WebSettings & settings) { settings.weblog_buffer = count; return StateUpdateResult::CHANGED; @@ -200,7 +203,7 @@ void WebLogService::fetchLog(AsyncWebServerRequest * request) { request->send(200); } -// sets the values like level after a POST +// sets the values after a POST void WebLogService::getSetValues(AsyncWebServerRequest * request, JsonVariant json) { if ((request->method() == HTTP_GET) || (!json.is())) { // GET - return the values @@ -209,12 +212,13 @@ void WebLogService::getSetValues(AsyncWebServerRequest * request, JsonVariant js root["level"] = log_level(); root["max_messages"] = maximum_log_messages(); root["compact"] = compact(); + root["psram"] = (EMSESP::system_.PSram() > 0); + response->setLength(); request->send(response); return; } - // POST - write the settings auto && body = json.as(); uuid::log::Level level = body["level"]; diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index 545467203..21a1ed54c 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -361,9 +361,15 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) { EMSESP::system_.bool_dashboard(settings.bool_dashboard); settings.weblog_level = root["weblog_level"] | EMSESP_DEFAULT_WEBLOG_LEVEL; - settings.weblog_buffer = root["weblog_buffer"] | EMSESP_DEFAULT_WEBLOG_BUFFER; settings.weblog_compact = root["weblog_compact"] | EMSESP_DEFAULT_WEBLOG_COMPACT; + // if no psram limit weblog buffer to 25 messages + if (EMSESP::system_.PSram() > 0) { + settings.weblog_buffer = root["weblog_buffer"] | EMSESP_DEFAULT_WEBLOG_BUFFER; + } else { + settings.weblog_buffer = root["weblog_buffer"] | 25; + } + // save the settings if (get_flags() == WebSettings::ChangeFlags::RESTART) { return StateUpdateResult::CHANGED_RESTART; // tell WebUI that a restart is needed