diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 0ac483f..d4e1834 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -114,6 +114,7 @@ set(headers displays/menus/settingsmenu.h displays/menus/stationwifisettingsmenu.h displays/menus/statisticsmenu.h + displays/menus/taskmanagermenu.h displays/menus/tempomatmodesettingsmenu.h displays/menus/timersmenu.h displays/menus/timesettingsmenu.h @@ -330,6 +331,7 @@ set(sources displays/menus/settingsmenu.cpp displays/menus/stationwifisettingsmenu.cpp displays/menus/statisticsmenu.cpp + displays/menus/taskmanagermenu.cpp displays/menus/tempomatmodesettingsmenu.cpp displays/menus/timersmenu.cpp displays/menus/timesettingsmenu.cpp diff --git a/main/displays/menus/debugmenu.cpp b/main/displays/menus/debugmenu.cpp index f7cec17..c7a2cce 100644 --- a/main/displays/menus/debugmenu.cpp +++ b/main/displays/menus/debugmenu.cpp @@ -20,6 +20,7 @@ #include "debugcolorhelpers.h" #include "esptexthelpers.h" #include "displays/qrcodedebug.h" +#include "displays/menus/taskmanagermenu.h" #include "displays/menus/commanddebugmenu.h" #include "displays/menus/motorstatedebugmenu.h" #include "displays/menus/feedbackdebugmenu.h" @@ -48,6 +49,7 @@ using namespace espgui; DebugMenu::DebugMenu() { constructMenuItem(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, LoadSettingsAction>>(); constructMenuItem, SaveSettingsAction>>(); diff --git a/main/displays/menus/taskmanagermenu.cpp b/main/displays/menus/taskmanagermenu.cpp new file mode 100644 index 0000000..5d44948 --- /dev/null +++ b/main/displays/menus/taskmanagermenu.cpp @@ -0,0 +1,44 @@ +#include "taskmanagermenu.h" + +// 3rdparty lib includes +#include +#include +#include +#include +#include + +// local includes +#include "displays/menus/debugmenu.h" +#include "taskmanager.h" + +using namespace espgui; + +namespace { + +class TaskText : public virtual espgui::TextInterface +{ +public: + TaskText(const espcpputils::SchedulerTask &task) : m_task{task} {} + + std::string text() const override + { + const std::string_view name{m_task.name()}; + return fmt::format("{}{}&f &2{} &1{}ms", name.size() > 6 ? "&s" : "", name, m_task.callCount(), m_task.maxElapsed().count()); + } + +private: + const espcpputils::SchedulerTask &m_task; +}; +} // namespace + +TaskmanagerMenu::TaskmanagerMenu() +{ + for (const auto &task : schedulerTasks) + constructMenuItem>(task); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +void TaskmanagerMenu::back() +{ + switchScreen(); +} diff --git a/main/displays/menus/taskmanagermenu.h b/main/displays/menus/taskmanagermenu.h new file mode 100644 index 0000000..37c24d8 --- /dev/null +++ b/main/displays/menus/taskmanagermenu.h @@ -0,0 +1,14 @@ +#pragma once + +// local includes +#include "menudisplay.h" +#include "texts.h" + +class TaskmanagerMenu : + public espgui::MenuDisplay, + public espgui::StaticText +{ +public: + TaskmanagerMenu(); + void back() override; +}; diff --git a/main/main.cpp b/main/main.cpp index 9111943..91922d3 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -165,6 +165,8 @@ extern "C" void app_main() if (now - performance.lastTime >= 1000ms) { + sched_pushStats(false); + performance.last = performance.current; performance.current = 0; performance.lastTime = now; diff --git a/main/texts.cpp b/main/texts.cpp index 8ab3067..b70943a 100644 --- a/main/texts.cpp +++ b/main/texts.cpp @@ -541,8 +541,12 @@ char TEXT_REENABLE_MENUITEMS[] = "Show advanced"; char TEXT_SELECT_BRANCH[] = "Select Branch"; char TEXT_SELECT_BRANCH_CLEAR[] = "Clear Branch"; +//QrCodeDebug char TEXT_QRCODE_DEBUG[] = "QR Debug"; +// TaskmanagerMenu +char TEXT_TASKMANAGER[] = "Taskmanager"; + //GreenPassMenu char TEXT_GREENPASS[] = "Green Pass"; char TEXT_ADDCERT[] = "Add cert"; diff --git a/main/texts.h b/main/texts.h index 9a8db58..4223ee8 100644 --- a/main/texts.h +++ b/main/texts.h @@ -543,6 +543,9 @@ extern char TEXT_SELECT_BRANCH_CLEAR[]; //QrCodeDebug extern char TEXT_QRCODE_DEBUG[]; +// TaskmanagerMenu +extern char TEXT_TASKMANAGER[]; + //GreenPassMenu extern char TEXT_GREENPASS[]; extern char TEXT_ADDCERT[];