From 1573a8c4cde1cd9528b422b2dcc598e37ffe94a7 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 2 May 2024 19:12:26 +1000 Subject: WIP merge cyclically dependent components into one big component --- src/tangara/ui/lvgl_task.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/tangara/ui/lvgl_task.cpp (limited to 'src/tangara/ui/lvgl_task.cpp') diff --git a/src/tangara/ui/lvgl_task.cpp b/src/tangara/ui/lvgl_task.cpp new file mode 100644 index 00000000..51da0179 --- /dev/null +++ b/src/tangara/ui/lvgl_task.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2023 jacqueline + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include "lvgl_task.hpp" + +#include +#include +#include + +#include +#include +#include + +#include "core/lv_disp.h" +#include "core/lv_group.h" +#include "core/lv_indev.h" +#include "core/lv_obj.h" +#include "core/lv_obj_pos.h" +#include "core/lv_obj_tree.h" +#include "esp_log.h" +#include "event_queue.hpp" +#include "extra/themes/basic/lv_theme_basic.h" +#include "font/lv_font.h" +#include "freertos/portmacro.h" +#include "freertos/projdefs.h" +#include "freertos/timers.h" +#include "hal/gpio_types.h" +#include "hal/lv_hal_indev.h" +#include "hal/spi_types.h" +#include "lua.h" +#include "lv_api_map.h" +#include "lvgl/lvgl.h" +#include "lvgl_input_driver.hpp" +#include "misc/lv_color.h" +#include "misc/lv_style.h" +#include "misc/lv_timer.h" +#include "modal.hpp" +#include "tasks.hpp" +#include "touchwheel.hpp" +#include "ui_fsm.hpp" +#include "widgets/lv_label.h" + +#include "display.hpp" +#include "gpios.hpp" + +namespace ui { + +[[maybe_unused]] static const char* kTag = "ui_task"; + +UiTask::UiTask() {} + +UiTask::~UiTask() { + assert(false); +} + +auto UiTask::Main() -> void { + ESP_LOGI(kTag, "start ui task"); + lv_group_t* current_group = nullptr; + auto* events = events::queues::Ui(); + while (true) { + while (events->Service(0)) { + } + + std::shared_ptr screen = UiState::current_screen(); + if (screen != current_screen_ && screen != nullptr) { + lv_scr_load(screen->root()); + if (input_) { + lv_indev_set_group(input_->registration(), screen->group()); + } + current_screen_ = screen; + } + + if (input_ && current_screen_->group() != current_group) { + current_group = current_screen_->group(); + lv_indev_set_group(input_->registration(), current_group); + } + + TickType_t delay = lv_timer_handler(); + vTaskDelay(pdMS_TO_TICKS(std::clamp(delay, 0, 100))); + } +} + +auto UiTask::input(std::shared_ptr input) -> void { + input_ = input; +} + +auto UiTask::Start() -> UiTask* { + UiTask* ret = new UiTask(); + tasks::StartPersistent([=]() { ret->Main(); }); + return ret; +} + +} // namespace ui -- cgit v1.2.3 From 7d7f7755d17e1e0a2348d75d797097f166b70471 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 2 May 2024 21:41:56 +1000 Subject: start moving include files into subdirs --- src/tangara/ui/lvgl_task.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/tangara/ui/lvgl_task.cpp') diff --git a/src/tangara/ui/lvgl_task.cpp b/src/tangara/ui/lvgl_task.cpp index 51da0179..33c3667d 100644 --- a/src/tangara/ui/lvgl_task.cpp +++ b/src/tangara/ui/lvgl_task.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-only */ -#include "lvgl_task.hpp" +#include "ui/lvgl_task.hpp" #include #include @@ -21,7 +21,7 @@ #include "core/lv_obj_pos.h" #include "core/lv_obj_tree.h" #include "esp_log.h" -#include "event_queue.hpp" +#include "events/event_queue.hpp" #include "extra/themes/basic/lv_theme_basic.h" #include "font/lv_font.h" #include "freertos/portmacro.h" @@ -30,17 +30,17 @@ #include "hal/gpio_types.h" #include "hal/lv_hal_indev.h" #include "hal/spi_types.h" +#include "input/lvgl_input_driver.hpp" #include "lua.h" #include "lv_api_map.h" #include "lvgl/lvgl.h" -#include "lvgl_input_driver.hpp" #include "misc/lv_color.h" #include "misc/lv_style.h" #include "misc/lv_timer.h" -#include "modal.hpp" #include "tasks.hpp" #include "touchwheel.hpp" -#include "ui_fsm.hpp" +#include "ui/modal.hpp" +#include "ui/ui_fsm.hpp" #include "widgets/lv_label.h" #include "display.hpp" -- cgit v1.2.3 From 26eb580043ad176bdc58d996f30d470e1073ef00 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 2 May 2024 21:52:59 +1000 Subject: move driver includes into a subdir as well --- src/tangara/ui/lvgl_task.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/tangara/ui/lvgl_task.cpp') diff --git a/src/tangara/ui/lvgl_task.cpp b/src/tangara/ui/lvgl_task.cpp index 33c3667d..448aa261 100644 --- a/src/tangara/ui/lvgl_task.cpp +++ b/src/tangara/ui/lvgl_task.cpp @@ -20,6 +20,7 @@ #include "core/lv_obj.h" #include "core/lv_obj_pos.h" #include "core/lv_obj_tree.h" +#include "drivers/touchwheel.hpp" #include "esp_log.h" #include "events/event_queue.hpp" #include "extra/themes/basic/lv_theme_basic.h" @@ -38,13 +39,12 @@ #include "misc/lv_style.h" #include "misc/lv_timer.h" #include "tasks.hpp" -#include "touchwheel.hpp" #include "ui/modal.hpp" #include "ui/ui_fsm.hpp" #include "widgets/lv_label.h" -#include "display.hpp" -#include "gpios.hpp" +#include "drivers/display.hpp" +#include "drivers/gpios.hpp" namespace ui { -- cgit v1.2.3