diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-07-17 13:39:14 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-07-17 13:39:14 +1000 |
| commit | a3f48074fb2870535184e90f8aeda2e98c19d24e (patch) | |
| tree | f5174d12a42a89514315319f697e8d25700b12f3 /src/tangara/ui/ui_fsm.cpp | |
| parent | d8ce31e46b0dea356dd415b62f71c265bea54d2a (diff) | |
| download | tangara-fw-a3f48074fb2870535184e90f8aeda2e98c19d24e.tar.gz | |
Add a console command to dump a snapshot
Diffstat (limited to 'src/tangara/ui/ui_fsm.cpp')
| -rw-r--r-- | src/tangara/ui/ui_fsm.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/tangara/ui/ui_fsm.cpp b/src/tangara/ui/ui_fsm.cpp index 476732db..4f93fe61 100644 --- a/src/tangara/ui/ui_fsm.cpp +++ b/src/tangara/ui/ui_fsm.cpp @@ -13,6 +13,7 @@ #include <variant> #include "FreeRTOSConfig.h" +#include "draw/lv_draw_buf.h" #include "drivers/bluetooth.hpp" #include "lvgl.h" @@ -26,6 +27,9 @@ #include "freertos/projdefs.h" #include "lua.hpp" #include "luavgl.h" +#include "misc/lv_color.h" +#include "misc/lv_utils.h" +#include "others/snapshot/lv_snapshot.h" #include "tick/lv_tick.h" #include "tinyfsm.hpp" @@ -363,6 +367,28 @@ int UiState::PopScreen() { return sScreens.size(); } +void UiState::react(const Screenshot& ev) { + if (!sCurrentScreen) { + return; + } + ESP_LOGI(kTag, "taking snapshot"); + lv_draw_buf_t* buf = + lv_snapshot_take(sCurrentScreen->root(), LV_COLOR_FORMAT_RGB888); + if (!buf) { + ESP_LOGW(kTag, "snapshot failed"); + return; + } + ESP_LOGI(kTag, "writing to file"); + std::string fullpath = "//sdcard/" + ev.filename; + auto res = lv_draw_buf_save_to_file(buf, fullpath.c_str()); + lv_draw_buf_destroy(buf); + if (res == LV_RESULT_OK) { + ESP_LOGI(kTag, "write okay!"); + } else { + ESP_LOGE(kTag, "write failed!"); + } +} + void UiState::react(const system_fsm::KeyLockChanged& ev) { sDisplay->SetDisplayOn(!ev.locking); sInput->lock(ev.locking); |
