From a7d15056d8ad75718542de2918a7266452f79be4 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Thu, 2 Jan 2025 21:18:45 +0100 Subject: [PATCH] Implemented Log app (#144) --- CMakeLists.txt | 1 + Documentation/pics/tactility-devices.webp | Bin 76306 -> 19786 bytes Tactility/Source/Tactility.cpp | 6 +- Tactility/Source/app/log/Log.cpp | 150 ++++++++++++++++++++++ TactilityCore/Source/Log.cpp | 91 +++++++++++-- TactilityCore/Source/Log.h | 36 ++++-- 6 files changed, 262 insertions(+), 22 deletions(-) create mode 100644 Tactility/Source/app/log/Log.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6be975ee..2232815f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ if (DEFINED ENV{ESP_IDF_VERSION}) add_compile_definitions(LV_CONF_PATH="${LVGL_CONFIG_FULL_PATH}/lv_conf_kconfig.h") idf_build_set_property(LINK_OPTIONS "-Wl,--wrap=esp_panic_handler" APPEND) + idf_build_set_property(LINK_OPTIONS "-Wl,--wrap=esp_log_write" APPEND) file(READ version.txt TACTILITY_VERSION) add_compile_definitions(TT_VERSION="${TACTILITY_VERSION}") diff --git a/Documentation/pics/tactility-devices.webp b/Documentation/pics/tactility-devices.webp index 4dea1a38988313ea57e5cf96fe67b07bb7e8421d..17f7b5507281f24bec11c466fdaff58e15d6c8c6 100644 GIT binary patch literal 19786 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%0Dn?LNw0~(tidD}4nFP(Nhjb~?e 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 z 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 system_apps = { &app::gpio::manifest, &app::i2cscanner::manifest, &app::i2csettings::manifest, - &app::inputdialog::manifest, &app::imageviewer::manifest, + &app::inputdialog::manifest, + &app::log::manifest, &app::settings::manifest, &app::selectiondialog::manifest, &app::systeminfo::manifest, diff --git a/Tactility/Source/app/log/Log.cpp b/Tactility/Source/app/log/Log.cpp new file mode 100644 index 00000000..a518ed37 --- /dev/null +++ b/Tactility/Source/app/log/Log.cpp @@ -0,0 +1,150 @@ +#include +#include +#include +#include "lvgl.h" +#include "lvgl/Style.h" +#include "lvgl/Toolbar.h" +#include "app/selectiondialog/SelectionDialog.h" +#include "service/loader/Loader.h" +#include "lvgl/LvglSync.h" + +#define TAG "text_viewer" + +namespace tt::app::log { + +struct LogAppData { + LogLevel filterLevel = LogLevelInfo; + lv_obj_t* labelWidget = nullptr; +}; + +static bool shouldShowLog(LogLevel filterLevel, LogLevel logLevel) { + if (filterLevel == LogLevelNone || logLevel == LogLevelNone) { + return false; + } else { + return filterLevel >= logLevel; + } +} + +static void setLogEntries(lv_obj_t* label) { + auto app = service::loader::getCurrentApp(); + if (app == nullptr) { + return; + } + auto data = std::static_pointer_cast(app->getData()); + auto filterLevel = data->filterLevel; + + unsigned int index; + auto* entries = copyLogEntries(index); + std::stringstream buffer; + if (entries != nullptr) { + for (unsigned int i = index; i < TT_LOG_ENTRY_COUNT; ++i) { + if (shouldShowLog(filterLevel, entries[i].level)) { + buffer << entries[i].message; + } + } + if (index != 0) { + for (unsigned int i = 0; i < index; ++i) { + if (shouldShowLog(filterLevel, entries[i].level)) { + buffer << entries[i].message; + } + } + } + delete entries; + if (!buffer.str().empty()) { + lv_label_set_text(label, buffer.str().c_str()); + } else { + lv_label_set_text(label, "No logs for the selected log level"); + } + } else { + lv_label_set_text(label, "Failed to load log"); + } +} + +static void onLevelFilterPressed(TT_UNUSED lv_event_t* event) { + std::vector items = { + "Verbose", + "Debug", + "Info", + "Warning", + "Error", + }; + app::selectiondialog::start("Log Level", items); +} + +static void updateViews() { + auto app = service::loader::getCurrentApp(); + if (app == nullptr) { + return; + } + auto data = std::static_pointer_cast(app->getData()); + assert(data != nullptr); + + if (lvgl::lock(100 / portTICK_PERIOD_MS)) { + setLogEntries(data->labelWidget); + lvgl::unlock(); + } +} + +static void onShow(AppContext& app, lv_obj_t* parent) { + auto data = std::static_pointer_cast(app.getData()); + + lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); + auto* toolbar = lvgl::toolbar_create(parent, app); + lvgl::toolbar_add_button_action(toolbar, LV_SYMBOL_EDIT, onLevelFilterPressed, nullptr); + + auto* wrapper = lv_obj_create(parent); + lv_obj_set_width(wrapper, LV_PCT(100)); + lv_obj_set_flex_grow(wrapper, 1); + lv_obj_set_flex_flow(wrapper, LV_FLEX_FLOW_COLUMN); + lvgl::obj_set_style_no_padding(wrapper); + lvgl::obj_set_style_bg_invisible(wrapper); + + data->labelWidget = lv_label_create(wrapper); + lv_obj_align(data->labelWidget, LV_ALIGN_CENTER, 0, 0); + setLogEntries(data->labelWidget); +} + +static void onStart(AppContext& app) { + auto data = std::make_shared(); + app.setData(data); +} + +static void onResult(AppContext& app, Result result, const Bundle& bundle) { + auto resultIndex = selectiondialog::getResultIndex(bundle); + auto data = std::static_pointer_cast(app.getData()); + if (result == ResultOk) { + switch (resultIndex) { + case 0: + data->filterLevel = LogLevelVerbose; + break; + case 1: + data->filterLevel = LogLevelDebug; + break; + case 2: + data->filterLevel = LogLevelInfo; + break; + case 3: + data->filterLevel = LogLevelWarning; + break; + case 4: + data->filterLevel = LogLevelError; + break; + default: + break; + } + } + + updateViews(); +} + +extern const AppManifest manifest = { + .id = "Log", + .name = "Log", + .icon = LV_SYMBOL_LIST, + .type = TypeSystem, + .onStart = onStart, + .onShow = onShow, + .onResult = onResult +}; + +} // namespace diff --git a/TactilityCore/Source/Log.cpp b/TactilityCore/Source/Log.cpp index 0b463985..04c9c96b 100644 --- a/TactilityCore/Source/Log.cpp +++ b/TactilityCore/Source/Log.cpp @@ -1,9 +1,60 @@ +#include "Mutex.h" +#include + +namespace tt { + +static LogEntry* logEntries = nullptr; +static unsigned int nextLogEntryIndex; +static Mutex logMutex; + +static void ensureLogEntriesExist() { + if (logEntries == nullptr) { + logEntries = new LogEntry[TT_LOG_ENTRY_COUNT]; + assert(logEntries != nullptr); + nextLogEntryIndex = 0; + } +} + +static void storeLog(LogLevel level, const char* format, va_list args) { + if (logMutex.lock(5 / portTICK_PERIOD_MS)) { + ensureLogEntriesExist(); + + logEntries[nextLogEntryIndex].level = level; + vsnprintf(logEntries[nextLogEntryIndex].message, TT_LOG_MESSAGE_SIZE, format, args); + + nextLogEntryIndex++; + if (nextLogEntryIndex == TT_LOG_ENTRY_COUNT) { + nextLogEntryIndex = 0; + } + + logMutex.unlock(); + } +} + +LogEntry* copyLogEntries(unsigned int& outIndex) { + if (logMutex.lock(5 / portTICK_PERIOD_MS)) { + auto* newEntries = new LogEntry[TT_LOG_ENTRY_COUNT]; + assert(newEntries != nullptr); + for (int i = 0; i < TT_LOG_ENTRY_COUNT; ++i) { + memcpy(&newEntries[i], &logEntries[i], sizeof(LogEntry)); + } + outIndex = nextLogEntryIndex; + logMutex.unlock(); + return newEntries; + } else { + return nullptr; + } +} + +} // namespace tt + #ifndef ESP_PLATFORM #include "Log.h" #include #include +#include namespace tt { @@ -17,7 +68,7 @@ static char toPrefix(LogLevel level) { return 'I'; case LogLevelDebug: return 'D'; - case LogLevelTrace: + case LogLevelVerbose: return 'T'; default: return '?'; @@ -34,7 +85,7 @@ static const char* toColour(LogLevel level) { return "\033[32m"; case LogLevelDebug: return "\033[1;37m"; - case LogLevelTrace: + case LogLevelVerbose: return "\033[37m"; default: return ""; @@ -66,22 +117,38 @@ static uint64_t getTimestamp() { } void log(LogLevel level, const char* tag, const char* format, ...) { - printf( - "%s%c (%lu) %s: ", - toColour(level), - toPrefix(level), - getTimestamp(), - tag - ); + std::stringstream buffer; + buffer << toColour(level) << toPrefix(level) << " (" << getTimestamp() << ") " << tag << " " << format << "\033[0m\n"; va_list args; va_start(args, format); - vprintf(format, args); + vprintf(buffer.str().c_str(), args); va_end(args); - printf("\033[0m\n"); + va_start(args, format); + tt::storeLog(level, buffer.str().c_str(), args); + va_end(args); } } // namespace -#endif \ No newline at end of file +#else // ESP_PLATFORM + +#include + +extern "C" { + +extern void __real_esp_log_write(esp_log_level_t level, const char* tag, const char* format, ...); + +void __wrap_esp_log_write(esp_log_level_t level, const char* tag, const char* format, ...) { + va_list args; + va_start(args, format); + tt::storeLog((tt::LogLevel)level, format, args); + esp_log_writev(level, tag, format, args); + va_end(args); +} + +} + +#endif + diff --git a/TactilityCore/Source/Log.h b/TactilityCore/Source/Log.h index 8a8e354d..be5b5650 100644 --- a/TactilityCore/Source/Log.h +++ b/TactilityCore/Source/Log.h @@ -2,6 +2,34 @@ #include "LogMessages.h" +#if CONFIG_SPIRAM_USE_MALLOC == 1 or not defined(ESP_PLATFORM) +#define TT_LOG_ENTRY_COUNT 200 +#define TT_LOG_MESSAGE_SIZE 128 +#else +#define TT_LOG_ENTRY_COUNT 50 +#define TT_LOG_MESSAGE_SIZE 50 +#endif + +namespace tt { + +enum LogLevel { + LogLevelNone, /*!< No log output */ + LogLevelError, /*!< Critical errors, software module can not recover on its own */ + LogLevelWarning, /*!< Error conditions from which recovery measures have been taken */ + LogLevelInfo, /*!< Information messages which describe normal flow of events */ + LogLevelDebug, /*!< Extra information which is not necessary for normal use (values, pointers, sizes, etc). */ + LogLevelVerbose /*!< Bigger chunks of debugging information, or frequent messages which can potentially flood the output. */ +}; + +struct LogEntry { + LogLevel level = LogLevelNone; + char message[TT_LOG_MESSAGE_SIZE] = { 0 }; +}; + +LogEntry* copyLogEntries(unsigned int& outIndex); + +} // namespace tt + #ifdef ESP_TARGET #include "esp_log.h" #else @@ -26,14 +54,6 @@ namespace tt { -typedef enum { - LogLevelError, - LogLevelWarning, - LogLevelInfo, - LogLevelDebug, - LogLevelTrace -} LogLevel; - void log(LogLevel level, const char* tag, const char* format, ...); } // namespace