From 32509433453d407b70057ab05340d123dd744daa Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sun, 11 Feb 2024 22:40:53 +0100 Subject: [PATCH] Screenshot app & service (#42) - Added screenshot app & service (PC-only for now) - Updated docs with screenshots and new device photo - Add fake statusbar icons for PC/sim build - added `lv_screenshot` library based on `lv_100ask_screenshot` from https://github.com/100askTeam/lv_lib_100ask - T-Deck WiFi is now allocated into SPI RAM - Created `tt_service_find()` to find services by their id --- CMakeLists.txt | 1 + README.md | 14 +- app-sim/src/main.c | 7 + docs/ideas.md | 2 + docs/pics/hello-world.png | Bin 5300 -> 0 bytes docs/pics/screenshot-desktop.png | Bin 0 -> 4013 bytes docs/pics/screenshot-display.png | Bin 0 -> 3432 bytes docs/pics/screenshot-files.png | Bin 0 -> 2982 bytes docs/pics/screenshot-helloworld.png | Bin 0 -> 2265 bytes docs/pics/screenshot-settings.png | Bin 0 -> 3157 bytes docs/pics/screenshot-systeminfo.png | Bin 0 -> 4045 bytes docs/pics/tactility-devices.jpg | Bin 0 -> 102307 bytes docs/pics/tactility-showcase.jpg | Bin 86036 -> 0 bytes libs/lv_screenshot/CMakeLists.txt | 30 +++ libs/lv_screenshot/LICENSE-original | 21 ++ libs/lv_screenshot/README.md | 12 ++ libs/lv_screenshot/private/save_bmp.h | 14 ++ libs/lv_screenshot/private/save_png.h | 14 ++ libs/lv_screenshot/src/lv_screenshot.c | 67 +++++++ libs/lv_screenshot/src/lv_screenshot.h | 21 ++ libs/lv_screenshot/src/save_bmp.c | 93 +++++++++ libs/lv_screenshot/src/save_png.c | 11 ++ sdkconfig.board.lilygo_tdeck | 1 + tactility/CMakeLists.txt | 2 + tactility/src/apps/screenshot/screenshot.c | 29 +++ tactility/src/apps/screenshot/screenshot_ui.c | 169 ++++++++++++++++ tactility/src/apps/screenshot/screenshot_ui.h | 22 +++ tactility/src/service_registry.c | 8 + tactility/src/service_registry.h | 2 + .../src/services/screenshot/screenshot.c | 133 +++++++++++++ .../src/services/screenshot/screenshot.h | 36 ++++ .../src/services/screenshot/screenshot_task.c | 183 ++++++++++++++++++ .../src/services/screenshot/screenshot_task.h | 36 ++++ tactility/src/tactility.c | 8 + 34 files changed, 934 insertions(+), 2 deletions(-) delete mode 100644 docs/pics/hello-world.png create mode 100644 docs/pics/screenshot-desktop.png create mode 100644 docs/pics/screenshot-display.png create mode 100644 docs/pics/screenshot-files.png create mode 100644 docs/pics/screenshot-helloworld.png create mode 100644 docs/pics/screenshot-settings.png create mode 100644 docs/pics/screenshot-systeminfo.png create mode 100644 docs/pics/tactility-devices.jpg delete mode 100644 docs/pics/tactility-showcase.jpg create mode 100644 libs/lv_screenshot/CMakeLists.txt create mode 100644 libs/lv_screenshot/LICENSE-original create mode 100644 libs/lv_screenshot/README.md create mode 100644 libs/lv_screenshot/private/save_bmp.h create mode 100644 libs/lv_screenshot/private/save_png.h create mode 100644 libs/lv_screenshot/src/lv_screenshot.c create mode 100644 libs/lv_screenshot/src/lv_screenshot.h create mode 100644 libs/lv_screenshot/src/save_bmp.c create mode 100644 libs/lv_screenshot/src/save_png.c create mode 100644 tactility/src/apps/screenshot/screenshot.c create mode 100644 tactility/src/apps/screenshot/screenshot_ui.c create mode 100644 tactility/src/apps/screenshot/screenshot_ui.h create mode 100644 tactility/src/services/screenshot/screenshot.c create mode 100644 tactility/src/services/screenshot/screenshot.h create mode 100644 tactility/src/services/screenshot/screenshot_task.c create mode 100644 tactility/src/services/screenshot/screenshot_task.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 149c523f..d1003b4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,7 @@ endif() project(tactility-root) add_subdirectory(libs/mlib) +add_subdirectory(libs/lv_screenshot) add_subdirectory(tactility) add_subdirectory(tactility-core) diff --git a/README.md b/README.md index d838c92d..20073c26 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,17 @@ It provides an application framework that is based on code from the [Flipper Zer **Status: Alpha** -![Tactility shown on a Lilygo T-Deck device and on PC](docs/pics/tactility-showcase.jpg) +Tactility features a desktop that can launch apps: + +![screenshot of desktop app](docs/pics/screenshot-desktop.png) ![screenshot of files app](docs/pics/screenshot-files.png) ![screenshot of system info app](docs/pics/screenshot-systeminfo.png) + +Through the Settings app you can connect to Wi-Fi or change the display settings: + +![screenshot of settings app](docs/pics/screenshot-settings.png) ![screenshot of display settings app](docs/pics/screenshot-display.png) + +Play with the built-in apps or build your own! Use one of the supported devices or set up the drivers for your own hardware platform. + +![photo of devices running Tactility](docs/pics/tactility-devices.jpg) Noteworthy features: - Touch UI capabilities (via LVGL) with support for input devices such as on-device trackball or keyboard. @@ -51,7 +61,7 @@ const AppManifest hello_world_app = { }; ``` -![hello world app](docs/pics/hello-world.png) +![hello world app screenshot](docs/pics/screenshot-helloworld.png) ## Supported Hardware diff --git a/app-sim/src/main.c b/app-sim/src/main.c index fdc13e4b..1ccbec1f 100644 --- a/app-sim/src/main.c +++ b/app-sim/src/main.c @@ -1,7 +1,9 @@ #include "hello_world/hello_world.h" #include "tactility.h" +#include "assets.h" #include "FreeRTOS.h" +#include "ui/statusbar.h" #define TAG "main" @@ -18,4 +20,9 @@ void app_main() { }; tt_init(&config); + + // Note: this is just to test the statusbar as Wi-Fi + // and sd card apps are not available for PC + tt_statusbar_icon_add(TT_ASSETS_ICON_SDCARD_ALERT); + tt_statusbar_icon_add(TT_ASSETS_ICON_WIFI_OFF); } diff --git a/docs/ideas.md b/docs/ideas.md index 995055a9..52c7179e 100644 --- a/docs/ideas.md +++ b/docs/ideas.md @@ -7,6 +7,8 @@ - Try out Waveshare S3 120MHz mode for PSRAM (see "enabling 120M PSRAM is necessary" in [docs](https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-4.3#Other_Notes)) - T-Deck has random sdcard SPI crashes due to sharing bus with screen SPI: make it use the LVGL lock for sdcard operations? - Wi-Fi connect app should show info about connection result +- Check service/app id on registration to see if it is a duplicate id +- Fix screenshot app on ESP32: it currently blocks when allocating memory # Core Ideas - Make a HAL? It would mainly be there to support PC development. It's a lot of effort for supporting what's effectively a dev-only feature. diff --git a/docs/pics/hello-world.png b/docs/pics/hello-world.png deleted file mode 100644 index f4651fb3764ab82be331111ad6ccefd72dff5c46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5300 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 diff --git a/docs/pics/screenshot-desktop.png b/docs/pics/screenshot-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..cc62f3e6036dbc041ab4f01b89c450a9076e6461 GIT binary patch literal 4013 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 AKL7v# literal 0 HcmV?d00001 diff --git a/docs/pics/screenshot-display.png b/docs/pics/screenshot-display.png new file mode 100644 index 0000000000000000000000000000000000000000..313165f1e522ac327f6d0047bdc88ff464ea0153 GIT binary patch literal 3432 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 DGtZjp literal 0 HcmV?d00001 diff --git a/docs/pics/screenshot-files.png b/docs/pics/screenshot-files.png new file mode 100644 index 0000000000000000000000000000000000000000..1865e3923f89f1f5b2441092901f88236eb618d8 GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/docs/pics/screenshot-helloworld.png b/docs/pics/screenshot-helloworld.png new file mode 100644 index 0000000000000000000000000000000000000000..729c4f6a0b297113a987313361dd5e7b54d8c64b GIT binary patch literal 2265 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 G=YIi=$NC-s literal 0 HcmV?d00001 diff --git a/docs/pics/screenshot-systeminfo.png b/docs/pics/screenshot-systeminfo.png new file mode 100644 index 0000000000000000000000000000000000000000..91413d4cdb5459f98cf78e9dc17040df18c52f35 GIT binary patch literal 4045 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

t-tbrKN~4bzN_ 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 literal 0 HcmV?d00001 diff --git a/docs/pics/tactility-showcase.jpg b/docs/pics/tactility-showcase.jpg deleted file mode 100644 index 05db464a9f3006739a1841a5b7a6dd85441b81ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86036 zcmeFYbwE_#x;H*_cStG>gVHcVcf$lGcmpC=Q$eVJFo48^!2<$atYP^m`#YjR zAOwO7gbxCNh(Kf*m>^sLr2q#xfXRS73pgk-us|3{Ab$cJFaT2nc^_~{{pPs@U@FYNcsfR6|Kzz3lwT%!4-Xd<$Wh0^-3`S86=ZRB zbaMoOcmVO28vK!~A~bbaV0=&kK0y&cjsQ$ZLI5fOgR($HBw%6^Fv0)Efen-s@=N

{sv&YlwZ1G0Wt`FV{!l! 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

9*Tm?HR>U1~>kzpQ9Zl~tO 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 ZT?!)`dVHD2t^?4^IFJ@Uq1c~RhY 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 + +#ifdef __cplusplus +extern "C" { +#endif + +bool lve_screenshot_save_bmp_file(const uint8_t* image, uint32_t w, uint32_t h, uint32_t bpp, const char* filename); + +#ifdef __cplusplus +} +#endif diff --git a/libs/lv_screenshot/private/save_png.h b/libs/lv_screenshot/private/save_png.h new file mode 100644 index 00000000..fa7087bc --- /dev/null +++ b/libs/lv_screenshot/private/save_png.h @@ -0,0 +1,14 @@ +#pragma once + +#include "lvgl.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +bool lv_screenshot_save_png_file(const uint8_t* image, uint32_t w, uint32_t h, uint32_t bpp, const char* filename); + +#ifdef __cplusplus +} +#endif diff --git a/libs/lv_screenshot/src/lv_screenshot.c b/libs/lv_screenshot/src/lv_screenshot.c new file mode 100644 index 00000000..6240fe24 --- /dev/null +++ b/libs/lv_screenshot/src/lv_screenshot.c @@ -0,0 +1,67 @@ +#include "lv_screenshot.h" + +#include "save_bmp.h" +#include "save_png.h" + +static void data_pre_processing(lv_img_dsc_t* snapshot, uint16_t bpp, lv_100ask_screenshot_sv_t screenshot_sv); + +bool lv_screenshot_create(lv_obj_t* obj, lv_img_cf_t cf, lv_100ask_screenshot_sv_t screenshot_sv, const char* filename) { + lv_img_dsc_t* snapshot = lv_snapshot_take(obj, cf); + + if (snapshot) { + data_pre_processing(snapshot, LV_COLOR_DEPTH, screenshot_sv); + + if (screenshot_sv == LV_100ASK_SCREENSHOT_SV_PNG) { + if (LV_COLOR_DEPTH == 16) { + lv_screenshot_save_png_file(snapshot->data, snapshot->header.w, snapshot->header.h, 24, filename); + } else if (LV_COLOR_DEPTH == 32) { + lv_screenshot_save_png_file(snapshot->data, snapshot->header.w, snapshot->header.h, 32, filename); + } + } else if (screenshot_sv == LV_100ASK_SCREENSHOT_SV_BMP) { + if (LV_COLOR_DEPTH == 16) { + lve_screenshot_save_bmp_file(snapshot->data, snapshot->header.w, snapshot->header.h, 24, filename); + } else if (LV_COLOR_DEPTH == 32) { + lve_screenshot_save_bmp_file(snapshot->data, snapshot->header.w, snapshot->header.h, 32, filename); + } + } + + lv_snapshot_free(snapshot); + return true; + } + + return false; +} + +static void data_pre_processing(lv_img_dsc_t* snapshot, uint16_t bpp, lv_100ask_screenshot_sv_t screenshot_sv) { + if (bpp == 16) { + uint16_t rgb565_data = 0; + uint32_t count = 0; + for (int w = 0; w < snapshot->header.w; w++) { + for (int h = 0; h < snapshot->header.h; h++) { + rgb565_data = (uint16_t)((*(uint8_t*)(snapshot->data + count + 1) << 8) | *(uint8_t*)(snapshot->data + count)); + if (screenshot_sv == LV_100ASK_SCREENSHOT_SV_PNG) { + *(uint8_t*)(snapshot->data + count) = (uint8_t)(((rgb565_data) >> 11) << 3); + *(uint8_t*)(snapshot->data + count + 1) = (uint8_t)(((rgb565_data) >> 5) << 2); + *(uint8_t*)(snapshot->data + count + 2) = (uint8_t)(((rgb565_data) >> 0) << 3); + } else if (screenshot_sv == LV_100ASK_SCREENSHOT_SV_BMP) { + *(uint8_t*)(snapshot->data + count) = (uint8_t)(((rgb565_data) >> 0) << 3); + *(uint8_t*)(snapshot->data + count + 1) = (uint8_t)(((rgb565_data) >> 5) << 2); + *(uint8_t*)(snapshot->data + count + 2) = (uint8_t)(((rgb565_data) >> 11) << 3); + } + + count += 3; + } + } + } else if ((screenshot_sv == LV_100ASK_SCREENSHOT_SV_PNG) && (bpp == 32)) { + uint8_t tmp_data = 0; + uint32_t count = 0; + for (int w = 0; w < snapshot->header.w; w++) { + for (int h = 0; h < snapshot->header.h; h++) { + tmp_data = *(snapshot->data + count); + *(uint8_t*)(snapshot->data + count) = *(snapshot->data + count + 2); + *(uint8_t*)(snapshot->data + count + 2) = tmp_data; + count += 4; + } + } + } +} diff --git a/libs/lv_screenshot/src/lv_screenshot.h b/libs/lv_screenshot/src/lv_screenshot.h new file mode 100644 index 00000000..489343f3 --- /dev/null +++ b/libs/lv_screenshot/src/lv_screenshot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "lvgl.h" +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + LV_100ASK_SCREENSHOT_SV_BMP = 0, + LV_100ASK_SCREENSHOT_SV_PNG = 1, + LV_100ASK_SCREENSHOT_SV_LAST +} lv_100ask_screenshot_sv_t; + +bool lv_screenshot_create(lv_obj_t* obj, lv_img_cf_t cf, lv_100ask_screenshot_sv_t screenshot_sv, const char* filename); + +#ifdef __cplusplus +} /*extern "C"*/ +#endif diff --git a/libs/lv_screenshot/src/save_bmp.c b/libs/lv_screenshot/src/save_bmp.c new file mode 100644 index 00000000..29224417 --- /dev/null +++ b/libs/lv_screenshot/src/save_bmp.c @@ -0,0 +1,93 @@ +#include "save_bmp.h" + +typedef struct tagBITMAPFILEHEADER { + uint16_t bfType; + uint32_t bfSize; + uint16_t bfReserved1; + uint16_t bfReserved2; + uint32_t bfOffBits; +} __attribute__((packed)) BITMAPFILEHEADER, *PBITMAPFILEHEADER; + +typedef struct tagBITMAPINFOHEADER { + uint32_t biSize; + uint32_t biwidth; + uint32_t biheight; + uint16_t biPlanes; + uint16_t biBitCount; + uint32_t biCompression; + uint32_t biSizeImage; + uint32_t biXPelsPerMeter; + uint32_t biYPelsPerMeter; + uint32_t biClrUsed; + uint32_t biClrImportant; +} __attribute__((packed)) BITMAPINFOHEADER, *PBITMAPINFOHEADER; + +typedef struct tagRGBQUAD { + uint8_t rgbBlue; + uint8_t rgbGreen; + uint8_t rgbRed; + uint8_t rgbReserved; +} __attribute__((packed)) RGBQUAD; + +bool lve_screenshot_save_bmp_file(const uint8_t* image, uint32_t w, uint32_t h, uint32_t bpp, const char* filename) { + BITMAPFILEHEADER tBmpFileHead; + BITMAPINFOHEADER tBmpInfoHead; + + uint32_t dwSize; + + uint32_t bw; + lv_fs_file_t f; + + memset(&tBmpFileHead, 0, sizeof(BITMAPFILEHEADER)); + memset(&tBmpInfoHead, 0, sizeof(BITMAPINFOHEADER)); + + lv_fs_res_t res = lv_fs_open(&f, filename, LV_FS_MODE_WR); + if (res != LV_FS_RES_OK) { + LV_LOG_USER("Can't create output file %s", filename); + return false; + } + + tBmpFileHead.bfType = 0x4d42; + tBmpFileHead.bfSize = 0x36 + w * h * (bpp / 8); + tBmpFileHead.bfOffBits = 0x00000036; + + tBmpInfoHead.biSize = 0x00000028; + tBmpInfoHead.biwidth = w; + tBmpInfoHead.biheight = h; + tBmpInfoHead.biPlanes = 0x0001; + tBmpInfoHead.biBitCount = bpp; + tBmpInfoHead.biCompression = 0; + tBmpInfoHead.biSizeImage = w * h * (bpp / 8); + tBmpInfoHead.biXPelsPerMeter = 0; + tBmpInfoHead.biYPelsPerMeter = 0; + tBmpInfoHead.biClrUsed = 0; + tBmpInfoHead.biClrImportant = 0; + + res = lv_fs_write(&f, &tBmpFileHead, sizeof(tBmpFileHead), &bw); + if (bw != sizeof(tBmpFileHead)) { + LV_LOG_USER("Can't write BMP File Head to %s", filename); + return false; + } + + res = lv_fs_write(&f, &tBmpInfoHead, sizeof(tBmpInfoHead), &bw); + if (bw != sizeof(tBmpInfoHead)) { + LV_LOG_USER("Can't write BMP File Info Head to %s", filename); + return false; + } + + dwSize = w * bpp / 8; + const uint8_t* pPos = image + (h - 1) * dwSize; + + while (pPos >= image) { + res = lv_fs_write(&f, pPos, dwSize, &bw); + if (bw != dwSize) { + LV_LOG_USER("Can't write date to BMP File %s", filename); + return false; + } + pPos -= dwSize; + } + + lv_fs_close(&f); + + return true; +} diff --git a/libs/lv_screenshot/src/save_png.c b/libs/lv_screenshot/src/save_png.c new file mode 100644 index 00000000..e997efc5 --- /dev/null +++ b/libs/lv_screenshot/src/save_png.c @@ -0,0 +1,11 @@ +#include "save_png.h" +#include "src/extra/libs/png/lodepng.h" + +bool lv_screenshot_save_png_file(const uint8_t* image, uint32_t w, uint32_t h, uint32_t bpp, const char* filename) { + if (bpp == 32) { + return lodepng_encode32_file(filename, image, w, h); + } else if (bpp == 24) { + return lodepng_encode24_file(filename, image, w, h); + } + return false; +} diff --git a/sdkconfig.board.lilygo_tdeck b/sdkconfig.board.lilygo_tdeck index 999d0632..dcb845f3 100644 --- a/sdkconfig.board.lilygo_tdeck +++ b/sdkconfig.board.lilygo_tdeck @@ -24,6 +24,7 @@ CONFIG_FLASHMODE_QIO=y CONFIG_ESP32S3_SPIRAM_SUPPORT=y CONFIG_SPIRAM_MODE_OCT=y CONFIG_SPIRAM_SPEED_80M=y +CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y # LVGL CONFIG_LV_COLOR_16_SWAP=y CONFIG_LV_DISP_DEF_REFR_PERIOD=17 diff --git a/tactility/CMakeLists.txt b/tactility/CMakeLists.txt index cebe4538..a1a6216c 100644 --- a/tactility/CMakeLists.txt +++ b/tactility/CMakeLists.txt @@ -25,6 +25,7 @@ if (DEFINED ENV{ESP_IDF_VERSION}) PUBLIC idf::spiffs PUBLIC idf::nvs_flash PUBLIC idf::newlib # for scandir() and related + PUBLIC lv_screenshot ) else() add_definitions(-D_Nullable=) @@ -33,6 +34,7 @@ else() PUBLIC tactility-core PUBLIC lvgl PUBLIC freertos-kernel + PUBLIC lv_screenshot ) endif() diff --git a/tactility/src/apps/screenshot/screenshot.c b/tactility/src/apps/screenshot/screenshot.c new file mode 100644 index 00000000..7f6d87ef --- /dev/null +++ b/tactility/src/apps/screenshot/screenshot.c @@ -0,0 +1,29 @@ +#include "tactility_core.h" +#include "ui/toolbar.h" +#include "screenshot_ui.h" + +static void on_show(App app, lv_obj_t* parent) { + ScreenshotUi* ui = tt_app_get_data(app); + create_screenshot_ui(app, ui, parent); +} + +static void on_start(App app) { + ScreenshotUi* ui = malloc(sizeof(ScreenshotUi)); + tt_app_set_data(app, ui); +} + +static void on_stop(App app) { + ScreenshotUi* ui = tt_app_get_data(app); + free(ui); +} + +const AppManifest screenshot_app = { + .id = "screenshot", + .name = "Screenshot", + .icon = LV_SYMBOL_IMAGE, + .type = AppTypeSystem, + .on_start = &on_start, + .on_stop = &on_stop, + .on_show = &on_show, + .on_hide = NULL +}; diff --git a/tactility/src/apps/screenshot/screenshot_ui.c b/tactility/src/apps/screenshot/screenshot_ui.c new file mode 100644 index 00000000..8dfe3dc3 --- /dev/null +++ b/tactility/src/apps/screenshot/screenshot_ui.c @@ -0,0 +1,169 @@ +#include "screenshot_ui.h" + +#include "sdcard.h" +#include "services/screenshot/screenshot.h" +#include "tactility_core.h" +#include "ui/toolbar.h" + +#define TAG "screenshot_ui" + +static void update_mode(ScreenshotUi* ui) { + lv_obj_t* label = ui->start_stop_button_label; + if (tt_screenshot_is_started()) { + lv_label_set_text(label, "Stop"); + } else { + lv_label_set_text(label, "Start"); + } + + int selected = lv_dropdown_get_selected(ui->mode_dropdown); + if (selected == 0) { // Timer + lv_obj_clear_flag(ui->timer_wrapper, LV_OBJ_FLAG_HIDDEN); + } else { + lv_obj_add_flag(ui->timer_wrapper, LV_OBJ_FLAG_HIDDEN); + } +} + +static void on_mode_set(lv_event_t* event) { + ScreenshotUi* ui = (ScreenshotUi*)event->user_data; + update_mode(ui); +} + +static void on_start_pressed(TT_UNUSED lv_event_t* event) { + ScreenshotUi* ui = event->user_data; + + if (tt_screenshot_is_started()) { + TT_LOG_I(TAG, "Stop screenshot"); + tt_screenshot_stop(); + } else { + int selected = lv_dropdown_get_selected(ui->mode_dropdown); + const char* path = lv_textarea_get_text(ui->path_textarea); + if (selected == 0) { + TT_LOG_I(TAG, "Start timed screenshots"); + const char* delay_text = lv_textarea_get_text(ui->delay_textarea); + int delay = atoi(delay_text); + if (delay > 0) { + tt_screenshot_start_timed(path, delay, 1); + } else { + TT_LOG_W(TAG, "Ignored screenshot start because delay was 0"); + } + } else { + TT_LOG_I(TAG, "Start app screenshots"); + tt_screenshot_start_apps(path); + } + } + + update_mode(ui); +} + +static void create_mode_setting_ui(ScreenshotUi* ui, lv_obj_t* parent) { + lv_obj_t* mode_wrapper = lv_obj_create(parent); + lv_obj_set_size(mode_wrapper, LV_PCT(100), LV_SIZE_CONTENT); + lv_obj_set_style_pad_all(mode_wrapper, 0, 0); + lv_obj_set_style_border_width(mode_wrapper, 0, 0); + + lv_obj_t* mode_label = lv_label_create(mode_wrapper); + lv_label_set_text(mode_label, "Mode:"); + lv_obj_align(mode_label, LV_ALIGN_LEFT_MID, 0, 0); + + lv_obj_t* mode_dropdown = lv_dropdown_create(mode_wrapper); + lv_dropdown_set_options(mode_dropdown, "Timer\nApp start"); + lv_obj_align_to(mode_dropdown, mode_label, LV_ALIGN_OUT_RIGHT_MID, 8, 0); + lv_obj_add_event_cb(mode_dropdown, on_mode_set, LV_EVENT_VALUE_CHANGED, ui); + ui->mode_dropdown = mode_dropdown; + ScreenshotMode mode = tt_screenshot_get_mode(); + if (mode == ScreenshotModeApps) { + lv_dropdown_set_selected(mode_dropdown, 1); + } + + lv_obj_t* button = lv_btn_create(mode_wrapper); + lv_obj_align(button, LV_ALIGN_RIGHT_MID, 0, 0); + lv_obj_t* button_label = lv_label_create(button); + lv_obj_align(button_label, LV_ALIGN_CENTER, 0, 0); + ui->start_stop_button_label = button_label; + lv_obj_add_event_cb(button, &on_start_pressed, LV_EVENT_CLICKED, ui); +} + +static void create_path_ui(ScreenshotUi* ui, lv_obj_t* parent) { + lv_obj_t* path_wrapper = lv_obj_create(parent); + lv_obj_set_size(path_wrapper, LV_PCT(100), LV_SIZE_CONTENT); + lv_obj_set_style_pad_all(path_wrapper, 0, 0); + lv_obj_set_style_border_width(path_wrapper, 0, 0); + lv_obj_set_flex_flow(path_wrapper, LV_FLEX_FLOW_ROW); + + lv_obj_t* label_wrapper = lv_obj_create(path_wrapper); + lv_obj_set_style_border_width(label_wrapper, 0, 0); + lv_obj_set_style_pad_all(label_wrapper, 0, 0); + lv_obj_set_size(label_wrapper, 44, 36); + lv_obj_t* path_label = lv_label_create(label_wrapper); + lv_label_set_text(path_label, "Path:"); + lv_obj_align(path_label, LV_ALIGN_LEFT_MID, 0, 0); + + lv_obj_t* path_textarea = lv_textarea_create(path_wrapper); + lv_textarea_set_one_line(path_textarea, true); + lv_obj_set_flex_grow(path_textarea, 1); + ui->path_textarea = path_textarea; + if (tt_get_platform() == PlatformEsp) { + if (tt_sdcard_get_state() == SdcardStateMounted) { + lv_textarea_set_text(path_textarea, "A:/sdcard"); + } else { + lv_textarea_set_text(path_textarea, "Error: no SD card"); + } + } else { // PC + lv_textarea_set_text(path_textarea, "A:"); + } +} + +static void create_timer_settings_ui(ScreenshotUi* ui, lv_obj_t* parent) { + lv_obj_t* timer_wrapper = lv_obj_create(parent); + lv_obj_set_size(timer_wrapper, LV_PCT(100), LV_SIZE_CONTENT); + lv_obj_set_style_pad_all(timer_wrapper, 0, 0); + lv_obj_set_style_border_width(timer_wrapper, 0, 0); + ui->timer_wrapper = timer_wrapper; + + lv_obj_t* delay_wrapper = lv_obj_create(timer_wrapper); + lv_obj_set_size(delay_wrapper, LV_PCT(100), LV_SIZE_CONTENT); + lv_obj_set_style_pad_all(delay_wrapper, 0, 0); + lv_obj_set_style_border_width(delay_wrapper, 0, 0); + lv_obj_set_flex_flow(delay_wrapper, LV_FLEX_FLOW_ROW); + + lv_obj_t* delay_label_wrapper = lv_obj_create(delay_wrapper); + lv_obj_set_style_border_width(delay_label_wrapper, 0, 0); + lv_obj_set_style_pad_all(delay_label_wrapper, 0, 0); + lv_obj_set_size(delay_label_wrapper, 44, 36); + lv_obj_t* delay_label = lv_label_create(delay_label_wrapper); + lv_label_set_text(delay_label, "Delay:"); + lv_obj_align(delay_label, LV_ALIGN_LEFT_MID, 0, 0); + + lv_obj_t* delay_textarea = lv_textarea_create(delay_wrapper); + lv_textarea_set_one_line(delay_textarea, true); + lv_textarea_set_accepted_chars(delay_textarea, "0123456789"); + lv_textarea_set_text(delay_textarea, "10"); + lv_obj_set_flex_grow(delay_textarea, 1); + ui->delay_textarea = delay_textarea; + + lv_obj_t* delay_unit_label_wrapper = lv_obj_create(delay_wrapper); + lv_obj_set_style_border_width(delay_unit_label_wrapper, 0, 0); + lv_obj_set_style_pad_all(delay_unit_label_wrapper, 0, 0); + lv_obj_set_size(delay_unit_label_wrapper, LV_SIZE_CONTENT, 36); + lv_obj_t* delay_unit_label = lv_label_create(delay_unit_label_wrapper); + lv_obj_align(delay_unit_label, LV_ALIGN_LEFT_MID, 0, 0); + lv_label_set_text(delay_unit_label, "seconds"); +} + +void create_screenshot_ui(App app, ScreenshotUi* ui, lv_obj_t* parent) { + lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); + lv_obj_t* toolbar = tt_toolbar_create_for_app(parent, app); + lv_obj_align(toolbar, LV_ALIGN_TOP_MID, 0, 0); + + lv_obj_t* wrapper = lv_obj_create(parent); + lv_obj_set_width(wrapper, LV_PCT(100)); + lv_obj_set_flex_grow(wrapper, 1); + lv_obj_set_style_border_width(wrapper, 0, 0); + lv_obj_set_flex_flow(wrapper, LV_FLEX_FLOW_COLUMN); + + create_mode_setting_ui(ui, wrapper); + create_path_ui(ui, wrapper); + create_timer_settings_ui(ui, wrapper); + + update_mode(ui); +} diff --git a/tactility/src/apps/screenshot/screenshot_ui.h b/tactility/src/apps/screenshot/screenshot_ui.h new file mode 100644 index 00000000..1df9fbd8 --- /dev/null +++ b/tactility/src/apps/screenshot/screenshot_ui.h @@ -0,0 +1,22 @@ +#pragma once + +#include "app.h" +#include "lvgl.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + lv_obj_t* mode_dropdown; + lv_obj_t* path_textarea; + lv_obj_t* start_stop_button_label; + lv_obj_t* timer_wrapper; + lv_obj_t* delay_textarea; +} ScreenshotUi; + +void create_screenshot_ui(App app, ScreenshotUi* ui, lv_obj_t* parent); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/tactility/src/service_registry.c b/tactility/src/service_registry.c index 2f48890a..6ece86ab 100644 --- a/tactility/src/service_registry.c +++ b/tactility/src/service_registry.c @@ -116,6 +116,14 @@ bool tt_service_registry_start(const char* service_id) { return true; } +Service _Nullable tt_service_find(const char* service_id) { + service_registry_instance_lock(); + const ServiceData** _Nullable service_ptr = ServiceInstanceDict_get(service_instance_dict, service_id); + const ServiceData* service = service_ptr ? *service_ptr : NULL; + service_registry_instance_unlock(); + return (Service)service; +} + bool tt_service_registry_stop(const char* service_id) { TT_LOG_I(TAG, "stopping %s", service_id); ServiceData* service = service_registry_find_instance_by_id(service_id); diff --git a/tactility/src/service_registry.h b/tactility/src/service_registry.h index 7942e242..d6f03ca6 100644 --- a/tactility/src/service_registry.h +++ b/tactility/src/service_registry.h @@ -21,6 +21,8 @@ void tt_service_registry_for_each_manifest(ServiceManifestCallback callback, voi bool tt_service_registry_start(const char* service_id); bool tt_service_registry_stop(const char* service_id); +Service _Nullable tt_service_find(const char* service_id); + #ifdef __cplusplus } #endif diff --git a/tactility/src/services/screenshot/screenshot.c b/tactility/src/services/screenshot/screenshot.c new file mode 100644 index 00000000..7b5fe2c4 --- /dev/null +++ b/tactility/src/services/screenshot/screenshot.c @@ -0,0 +1,133 @@ +#include "screenshot.h" + +#include "mutex.h" +#include "screenshot_task.h" +#include "service.h" +#include "service_registry.h" +#include "tactility_core.h" + +#define TAG "sdcard_service" + +typedef struct { + Mutex* mutex; + ScreenshotTask* task; + ScreenshotMode mode; +} ServiceData; + +static ServiceData* service_data_alloc() { + ServiceData* data = malloc(sizeof(ServiceData)); + *data = (ServiceData) { + .mutex = tt_mutex_alloc(MutexTypeNormal), + .task = NULL + }; + return data; +} + +static void service_data_free(ServiceData* data) { + tt_mutex_free(data->mutex); +} + +static void service_data_lock(ServiceData* data) { + tt_check(tt_mutex_acquire(data->mutex, TtWaitForever) == TtStatusOk); +} + +static void service_data_unlock(ServiceData* data) { + tt_check(tt_mutex_release(data->mutex) == TtStatusOk); +} + +static void on_start(Service service) { + ServiceData* data = service_data_alloc(); + tt_service_set_data(service, data); +} + +static void on_stop(Service service) { + ServiceData* data = tt_service_get_data(service); + if (data->task) { + screenshot_task_free(data->task); + data->task = NULL; + } + tt_mutex_free(data->mutex); + service_data_free(data); +} + +const ServiceManifest screenshot_service = { + .id = "screenshot", + .on_start = &on_start, + .on_stop = &on_stop +}; + +void tt_screenshot_start_apps(const char* path) { + Service _Nullable service = tt_service_find(screenshot_service.id); + if (service == NULL) { + TT_LOG_E(TAG, "Service not found"); + return; + } + + ServiceData* data = tt_service_get_data(service); + service_data_lock(data); + if (data->task == NULL) { + data->task = screenshot_task_alloc(); + data->mode = ScreenshotModeApps; + screenshot_task_start_apps(data->task, path); + } else { + TT_LOG_E(TAG, "Screenshot task already running"); + } + service_data_unlock(data); +} + +void tt_screenshot_start_timed(const char* path, uint8_t delay_in_seconds, uint8_t amount) { + Service _Nullable service = tt_service_find(screenshot_service.id); + if (service == NULL) { + TT_LOG_E(TAG, "Service not found"); + return; + } + + ServiceData* data = tt_service_get_data(service); + service_data_lock(data); + if (data->task == NULL) { + data->task = screenshot_task_alloc(); + data->mode = ScreenshotModeTimed; + screenshot_task_start_timed(data->task, path, delay_in_seconds, amount); + } else { + TT_LOG_E(TAG, "Screenshot task already running"); + } + service_data_unlock(data); +} + +void tt_screenshot_stop() { + Service _Nullable service = tt_service_find(screenshot_service.id); + if (service == NULL) { + TT_LOG_E(TAG, "Service not found"); + return; + } + + ServiceData* data = tt_service_get_data(service); + service_data_lock(data); + if (data->task != NULL) { + screenshot_task_stop(data->task); + screenshot_task_free(data->task); + data->task = NULL; + data->mode = ScreenshotModeNone; + } else { + TT_LOG_E(TAG, "Screenshot task not running"); + } + service_data_unlock(data); +} + +ScreenshotMode tt_screenshot_get_mode() { + Service _Nullable service = tt_service_find(screenshot_service.id); + if (service == NULL) { + TT_LOG_E(TAG, "Service not found"); + return ScreenshotModeNone; + } else { + ServiceData* data = tt_service_get_data(service); + service_data_lock(data); + ScreenshotMode mode = data->mode; + service_data_unlock(data); + return mode; + } +} + +bool tt_screenshot_is_started() { + return tt_screenshot_get_mode() != ScreenshotModeNone; +} diff --git a/tactility/src/services/screenshot/screenshot.h b/tactility/src/services/screenshot/screenshot.h new file mode 100644 index 00000000..a6e967a7 --- /dev/null +++ b/tactility/src/services/screenshot/screenshot.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ScreenshotModeNone, + ScreenshotModeTimed, + ScreenshotModeApps +} ScreenshotMode; + +/** @brief Starts taking screenshot with a timer + * @param path the path to store the screenshots in + * @param delay_in_seconds the delay before starting (and between successive screenshots) + * @param amount 0 = indefinite, >0 for a specific + */ +void tt_screenshot_start_timed(const char* path, uint8_t delay_in_seconds, uint8_t amount); + +/** @brief Starts taking screenshot when an app is started + * @param path the path to store the screenshots in + */ +void tt_screenshot_start_apps(const char* path); + +void tt_screenshot_stop(); + +ScreenshotMode tt_screenshot_get_mode(); + +bool tt_screenshot_is_started(); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/tactility/src/services/screenshot/screenshot_task.c b/tactility/src/services/screenshot/screenshot_task.c new file mode 100644 index 00000000..b14cef09 --- /dev/null +++ b/tactility/src/services/screenshot/screenshot_task.c @@ -0,0 +1,183 @@ +#include "screenshot_task.h" +#include "lv_screenshot.h" + +#include "app.h" +#include "mutex.h" +#include "services/loader/loader.h" +#include "tactility_core.h" +#include "thread.h" +#include "ui/lvgl_sync.h" + +#define TAG "screenshot_task" + +#define TASK_WORK_TYPE_DELAY 1 +#define TASK_WORK_TYPE_APPS 2 + +#define SCREENSHOT_PATH_LIMIT 128 + +typedef struct { + int type; + uint8_t delay_in_seconds; + uint8_t amount; + char path[SCREENSHOT_PATH_LIMIT]; +} ScreenshotTaskWork; + +typedef struct { + Thread* thread; + Mutex* mutex; + bool interrupted; + ScreenshotTaskWork work; +} ScreenshotTaskData; + +static void screenshot_task_lock(ScreenshotTaskData* data) { + tt_check(tt_mutex_acquire(data->mutex, TtWaitForever) == TtStatusOk); +} + +static void screenshot_task_unlock(ScreenshotTaskData* data) { + tt_check(tt_mutex_release(data->mutex) == TtStatusOk); +} + +ScreenshotTask* screenshot_task_alloc() { + ScreenshotTaskData* data = malloc(sizeof(ScreenshotTaskData)); + *data = (ScreenshotTaskData) { + .thread = NULL, + .mutex = tt_mutex_alloc(MutexTypeRecursive), + .interrupted = false + }; + return data; +} + +void screenshot_task_free(ScreenshotTask* task) { + ScreenshotTaskData* data = (ScreenshotTaskData*)task; + if (data->thread) { + screenshot_task_stop(data); + } +} + +static bool is_interrupted(ScreenshotTaskData* data) { + screenshot_task_lock(data); + bool interrupted = data->interrupted; + screenshot_task_unlock(data); + return interrupted; +} + +static int32_t screenshot_task(void* context) { + ScreenshotTaskData* data = (ScreenshotTaskData*)context; + + bool interrupted = false; + uint8_t screenshots_taken = 0; + const char* last_app_id = NULL; + + while (!interrupted) { + interrupted = is_interrupted(data); + + if (data->work.type == TASK_WORK_TYPE_DELAY) { + // Splitting up the delays makes it easier to stop the service + for (int i = 0; i < (data->work.delay_in_seconds * 10) && !is_interrupted(data); ++i){ + tt_delay_ms(100); + } + + if (is_interrupted(data)) { + break; + } + + screenshots_taken++; + char filename[SCREENSHOT_PATH_LIMIT + 32]; + sprintf(filename, "%s/screenshot-%d.png", data->work.path, screenshots_taken); + tt_lvgl_lock(TtWaitForever); + if (lv_screenshot_create(lv_scr_act(), LV_IMG_CF_TRUE_COLOR, LV_100ASK_SCREENSHOT_SV_PNG, filename)){ + TT_LOG_I(TAG, "Screenshot saved to %s", filename); + } else { + TT_LOG_E(TAG, "Screenshot not saved to %s", filename); + } + tt_lvgl_unlock(); + + if (data->work.amount > 0 && screenshots_taken >= data->work.amount) { + break; // Interrupted loop + } + } else if (data->work.type == TASK_WORK_TYPE_APPS) { + App _Nullable app = loader_get_current_app(); + if (app) { + const AppManifest* manifest = tt_app_get_manifest(app); + if (manifest->id != last_app_id) { + tt_delay_ms(100); + last_app_id = manifest->id; + + char filename[SCREENSHOT_PATH_LIMIT + 32]; + sprintf(filename, "%s/screenshot-%s.png", data->work.path, manifest->id); + tt_lvgl_lock(TtWaitForever); + if (lv_screenshot_create(lv_scr_act(), LV_IMG_CF_TRUE_COLOR, LV_100ASK_SCREENSHOT_SV_PNG, filename)){ + TT_LOG_I(TAG, "Screenshot saved to %s", filename); + } else { + TT_LOG_E(TAG, "Screenshot not saved to %s", filename); + } + tt_lvgl_unlock(); + } + } + tt_delay_ms(250); + } + } + + return 0; +} + +static void screenshot_task_start(ScreenshotTaskData* data) { + screenshot_task_lock(data); + tt_check(data->thread == NULL); + data->thread = tt_thread_alloc_ex( + "screenshot", + 8192, + &screenshot_task, + data + ); + tt_thread_start(data->thread); + screenshot_task_unlock(data); +} + +void screenshot_task_start_apps(ScreenshotTask* task, const char* path) { + tt_check(strlen(path) < (SCREENSHOT_PATH_LIMIT - 1)); + ScreenshotTaskData* data = (ScreenshotTaskData*)task; + screenshot_task_lock(data); + if (data->thread == NULL) { + data->interrupted = false; + data->work.type = TASK_WORK_TYPE_APPS; + strcpy(data->work.path, path); + screenshot_task_start(data); + } else { + TT_LOG_E(TAG, "Task was already running"); + } + screenshot_task_unlock(data); +} + +void screenshot_task_start_timed(ScreenshotTask* task, const char* path, uint8_t delay_in_seconds, uint8_t amount) { + tt_check(strlen(path) < (SCREENSHOT_PATH_LIMIT - 1)); + ScreenshotTaskData* data = (ScreenshotTaskData*)task; + screenshot_task_lock(data); + if (data->thread == NULL) { + data->interrupted = false; + data->work.type = TASK_WORK_TYPE_DELAY; + data->work.delay_in_seconds = delay_in_seconds; + data->work.amount = amount; + strcpy(data->work.path, path); + screenshot_task_start(data); + } else { + TT_LOG_E(TAG, "Task was already running"); + } + screenshot_task_unlock(data); +} + +void screenshot_task_stop(ScreenshotTask* task) { + ScreenshotTaskData* data = (ScreenshotTaskData*)task; + if (data->thread != NULL) { + screenshot_task_lock(data); + data->interrupted = true; + screenshot_task_unlock(data); + + tt_thread_join(data->thread); + + screenshot_task_lock(data); + tt_thread_free(data->thread); + data->thread = NULL; + screenshot_task_unlock(data); + } +} \ No newline at end of file diff --git a/tactility/src/services/screenshot/screenshot_task.h b/tactility/src/services/screenshot/screenshot_task.h new file mode 100644 index 00000000..606f1f19 --- /dev/null +++ b/tactility/src/services/screenshot/screenshot_task.h @@ -0,0 +1,36 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void ScreenshotTask; + +ScreenshotTask* screenshot_task_alloc(); + +void screenshot_task_free(ScreenshotTask* task); + +/** @brief Start taking screenshots after a certain delay + * @param task the screenshot task + * @param path the path to store the screenshots at + * @param delay_in_seconds the delay before starting (and between successive screenshots) + * @param amount 0 = indefinite, >0 for a specific + */ +void screenshot_task_start_timed(ScreenshotTask* task, const char* path, uint8_t delay_in_seconds, uint8_t amount); + +/** @brief Start taking screenshot whenever an app is started + * @param task the screenshot task + * @param path the path to store the screenshots at + */ +void screenshot_task_start_apps(ScreenshotTask* task, const char* path); + +/** @brief Stop taking screenshots + * @param task the screenshot task + */ +void screenshot_task_stop(ScreenshotTask* task); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/tactility/src/tactility.c b/tactility/src/tactility.c index ac4d5f4b..2f73d012 100644 --- a/tactility/src/tactility.c +++ b/tactility/src/tactility.c @@ -13,11 +13,15 @@ static const Config* config_instance = NULL; extern const ServiceManifest gui_service; extern const ServiceManifest loader_service; +extern const ServiceManifest screenshot_service; extern const ServiceManifest sdcard_service; static const ServiceManifest* const system_services[] = { &gui_service, &loader_service, // depends on gui service +#ifndef ESP_PLATFORM // Screenshots don't work yet on ESP32 + &screenshot_service, +#endif &sdcard_service }; @@ -28,6 +32,7 @@ static const ServiceManifest* const system_services[] = { extern const AppManifest desktop_app; extern const AppManifest display_app; extern const AppManifest files_app; +extern const AppManifest screenshot_app; extern const AppManifest settings_app; extern const AppManifest system_info_app; @@ -35,6 +40,9 @@ static const AppManifest* const system_apps[] = { &desktop_app, &display_app, &files_app, +#ifndef ESP_PLATFORM // Screenshots don't work yet on ESP32 + &screenshot_app, +#endif &settings_app, &system_info_app };