Adds a way to capture the live LVGL screen off the device and rebuild it as a PNG on the host, so UI changes can be verified remotely without a camera. A watcher task polls the USB-serial-JTAG RX for a trigger byte and streams the current screen as raw RGB565 straight to the USB FIFO (framed by ###SHOT_BEGIN/END### with a CRC); firmware/tools/device_shot.py and the device-screenshot skill drive it from the host. Writing straight to the USB FIFO bypasses the primary UART console, which at 115200 baud would take ~37s per frame. The whole capability is behind DESKLOCK_DEVMODE (off by default, enable at deploy time with -DDESKLOCK_DEVMODE=ON) so production spends no internal RAM on the watcher and nothing extra runs on the render path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKPbR6DY2JygHbyLjxm7Uu
31 lines
1.1 KiB
CMake
31 lines
1.1 KiB
CMake
idf_component_register(
|
|
SRCS
|
|
"desklock_main.c"
|
|
"face.c"
|
|
"audio.c"
|
|
"net.c"
|
|
"gw_client.c"
|
|
"c6_ota.c"
|
|
"wifi_diag.c"
|
|
"fonts/font_face_140.c"
|
|
"fonts/font_rain_22.c"
|
|
"fonts/font_rage_64.c"
|
|
"fonts/font_phosphor_64.c"
|
|
INCLUDE_DIRS "."
|
|
EMBED_FILES "c6_slave.bin"
|
|
PRIV_REQUIRES nvs_flash esp_wifi esp_event esp_netif json esp_timer esp_app_format esp_http_server esp-sr
|
|
)
|
|
|
|
target_compile_definitions(${COMPONENT_LIB} PRIVATE LV_LVGL_H_INCLUDE_SIMPLE)
|
|
|
|
# Dev-only features (screenshot watcher). OFF in production so nothing extra runs
|
|
# on the render path / spends internal RAM. Deploy dev with:
|
|
# idf.py -DDESKLOCK_DEVMODE=ON build flash
|
|
# and back to production with -DDESKLOCK_DEVMODE=OFF (the value sticks in the
|
|
# CMake cache until you flip it).
|
|
option(DESKLOCK_DEVMODE "Enable dev-only features (screenshot watcher)" OFF)
|
|
if(DESKLOCK_DEVMODE)
|
|
target_compile_definitions(${COMPONENT_LIB} PRIVATE DESKLOCK_DEVMODE=1)
|
|
message(STATUS "DeskLock: DEVMODE ON — screenshot watcher enabled")
|
|
endif()
|