From db7083845b904d8e5a79cc0f47708feb2685e9d3 Mon Sep 17 00:00:00 2001 From: Isaac Date: Sun, 1 Mar 2026 20:08:00 +0100 Subject: [PATCH] Initial commit: Freenove ESP32-S3 UI + story engine from le-mystere-professeur-zacus - Sources: ui_freenove_allinone/ (LovyanGFX + LVGL rendering) - Libraries: story engine, hardware managers, audio codec drivers - PlatformIO: freenove_esp32s3_full_with_ui environment - Status: Ready for optimization work Date: 2026-03-01 --- .gitignore | 34 + README.md | 210 + README_ESP32_ZACUS.md | 98 + lib/zacus_story_gen_ai/README.md | 15 + lib/zacus_story_gen_ai/pyproject.toml | 26 + .../src/zacus_story_gen_ai.egg-info/PKG-INFO | 8 + .../zacus_story_gen_ai.egg-info/SOURCES.txt | 18 + .../dependency_links.txt | 1 + .../entry_points.txt | 2 + .../zacus_story_gen_ai.egg-info/requires.txt | 3 + .../zacus_story_gen_ai.egg-info/top_level.txt | 1 + .../src/zacus_story_gen_ai/__init__.py | 5 + .../src/zacus_story_gen_ai/cli.py | 155 + .../src/zacus_story_gen_ai/generator.py | 1954 ++++ .../schemas/game_scenario_schema.yamale | 49 + .../schemas/scenario_template_schema.yamale | 2 + .../schemas/story_spec_schema.yamale | 37 + .../templates/apps_gen.cpp.j2 | 57 + .../templates/apps_gen.h.j2 | 23 + .../templates/scenarios_gen.cpp.j2 | 78 + .../templates/scenarios_gen.h.j2 | 16 + lib/zacus_story_gen_ai/tests/conftest.py | 9 + .../tests/test_generator.py | 305 + .../data/audio/uson_1_radio_lowmono.mp3 | Bin 0 -> 65282 bytes .../data/audio/uson_2_mode_hero.mp3 | Bin 0 -> 493444 bytes .../data/audio/uson_boot_arcade_lowmono.mp3 | Bin 0 -> 93708 bytes .../data/audio/uson_boot_corrompu_lowmono.mp3 | Bin 0 -> 100538 bytes .../data/audio/uson_win_1_rapport_imprime.mp3 | Bin 0 -> 500968 bytes lib/zacus_story_portable/data/net/config.json | 19 + .../data/radio/stations.json | 29 + .../data/story/screens/broken.json | 6 + .../data/story/screens/la_detector.json | 6 + .../data/story/screens/locked.json | 6 + .../data/story/screens/ready.json | 6 + .../data/story/screens/win.json | 6 + .../story_portable_runtime.h | 104 + .../zacus_story_portable/tinyfsm_core.h | 61 + lib/zacus_story_portable/pense-bete.md | 3 + .../protocol/ui_link_v2.h | 350 + .../protocol/ui_link_v2.md | 163 + .../src/story_portable_runtime.cpp | 567 + .../story_generator/RELEASE_STORY_V2.md | 5 + .../story_generator/gen_split_scenario.py | 41 + .../story_generator/story_specs/README.md | 26 + .../prompts/spectre_radio_lab.prompt.md | 5 + .../story_specs/scenarios/DEFAULT/README.md | 39 + .../scenarios/DEFAULT/app_audio.yaml | 4 + .../scenarios/DEFAULT/app_gate.yaml | 4 + .../scenarios/DEFAULT/app_screen.yaml | 4 + .../scenarios/DEFAULT/scene_broken.yaml | 3 + .../scenarios/DEFAULT/scene_la_detect 2.yaml | 3 + .../scenarios/DEFAULT/scene_la_detect 3.yaml | 3 + .../scenarios/DEFAULT/scene_la_detect.yaml | 3 + .../scenarios/DEFAULT/scene_la_detector.yaml | 3 + .../scenarios/DEFAULT/scene_locked.yaml | 3 + .../scenarios/DEFAULT/scene_ready.yaml | 3 + .../scenarios/DEFAULT/scene_test_lab 2.yaml | 3 + .../scenarios/DEFAULT/scene_test_lab 3.yaml | 3 + .../scenarios/DEFAULT/scene_test_lab.yaml | 3 + .../scenarios/DEFAULT/scene_win.yaml | 3 + .../scenarios/default_unlock_win_etape2.yaml | 3 + .../scenarios/example_unlock_express.yaml | 3 + .../example_unlock_express_done.yaml | 3 + .../scenarios/spectre_radio_lab.yaml | 3 + .../scenarios/zacus_v1_unlock_and_etape2.yaml | 3 + .../story_specs/schema/story_spec_v1.yaml | 3 + .../templates/scenario.template.yaml | 3 + .../story_screen_smoke.py | 209 + lib/zacus_story_portable/sync_ui_screens.sh | 19 + .../test_4scenarios_all.py | 331 + .../test_4scenarios_complete.py | 158 + .../test_story_4scenarios.py | 166 + platformio.ini | 288 + ui_freenove_allinone/AGENT_FUSION.md | 37 + ui_freenove_allinone/AGENT_TODO.md | 56 + ui_freenove_allinone/RC_FINAL_BOARD.md | 155 + ui_freenove_allinone/README.md | 357 + ui_freenove_allinone/include/README.md | 4 + .../include/app/app_coordinator.h | 18 + .../include/app/runtime_scene_service.h | 18 + .../include/app/runtime_serial_service.h | 18 + .../include/app/runtime_web_service 2.h | 13 + .../include/app/runtime_web_service.h | 13 + .../include/app/scenario_manager.h | 96 + .../include/app/scene_fx_orchestrator.h | 38 + .../include/app/serial_command_router.h | 11 + .../include/audio/audio_manager.h | 116 + .../include/audio/audio_pipeline.h | 94 + ui_freenove_allinone/include/audio_manager.h | 3 + ui_freenove_allinone/include/button_manager.h | 3 + .../include/camera/camera_manager.h | 104 + .../include/camera/camera_pipeline.h | 51 + ui_freenove_allinone/include/camera_manager.h | 3 + .../include/drivers/board/hardware_manager.h | 183 + .../include/drivers/display/display_hal.h | 86 + .../include/drivers/display/spi_bus_manager.h | 46 + .../include/drivers/input/button_manager.h | 80 + .../include/drivers/input/touch_manager.h | 23 + .../include/hardware_manager.h | 3 + ui_freenove_allinone/include/lv_conf.h | 94 + ui_freenove_allinone/include/media_manager.h | 3 + .../include/network_manager.h | 3 + .../include/runtime/app_coordinator.h | 3 + .../include/runtime/la_trigger_service.h | 33 + .../include/runtime/memory/caps_allocator.h | 25 + .../include/runtime/memory/safe_size.h | 27 + .../include/runtime/perf/perf_monitor.h | 53 + .../runtime/provisioning/boot_mode_store.h | 21 + .../runtime/provisioning/credential_store.h | 23 + .../runtime/resource/resource_coordinator.h | 72 + .../include/runtime/rtos/scoped_lock.h | 74 + .../include/runtime/runtime_config_service.h | 16 + .../include/runtime/runtime_config_types.h | 76 + .../include/runtime/runtime_services.h | 49 + .../include/runtime/scene_fx_orchestrator.h | 4 + .../include/runtime/serial_command_router.h | 3 + .../include/runtime/simd/simd_accel.h | 59 + .../include/runtime/simd/simd_accel_bench.h | 12 + .../include/scenario_manager.h | 3 + .../include/storage/storage_manager.h | 68 + .../include/storage/storage_prefetch.h | 56 + .../include/storage_manager.h | 3 + .../include/system/boot_report.h | 19 + .../include/system/media/media_manager.h | 63 + .../include/system/network/network_manager.h | 172 + .../include/system/rate_limited_log.h | 32 + .../include/system/runtime_metrics.h | 50 + .../include/system/task_topology.h | 85 + ui_freenove_allinone/include/touch_manager.h | 3 + .../ui/audio_player/amiga_audio_player.h | 66 + .../ui/audio_player/audio_player_service.h | 103 + .../camera_capture/camera_capture_service.h | 59 + .../ui/camera_capture/win311_camera_ui.h | 143 + .../include/ui/effects/scene_gyrophare.h | 57 + .../include/ui/fx/fx_blit_fast.h | 22 + .../include/ui/fx/fx_engine.h | 316 + .../include/ui/fx/v8/font_6x8_basic.h | 76 + .../include/ui/fx/v8/font_6x8_bold.h | 76 + .../include/ui/fx/v8/font_6x8_italic.h | 76 + .../include/ui/fx/v8/font_6x8_outline.h | 76 + .../include/ui/fx/v8/font_select.h | 25 + .../include/ui/fx/v8/fx_luts.h | 14 + .../include/ui/fx/v8/fx_sync.h | 21 + .../include/ui/fx/v8/fx_utils.h | 24 + .../include/ui/fx/v9/assets/assets.h | 37 + .../include/ui/fx/v9/assets/assets_fs.h | 38 + .../include/ui/fx/v9/assets/palette_gray565.h | 262 + .../include/ui/fx/v9/boing/boing_ball.h | 54 + .../include/ui/fx/v9/boing/boing_lvgl_layer.h | 14 + .../ui/fx/v9/boing/boing_shadow_darken.h | 13 + .../include/ui/fx/v9/effects/fx_base.h | 25 + .../include/ui/fx/v9/effects/hourglass.h | 22 + .../include/ui/fx/v9/effects/plasma.h | 21 + .../include/ui/fx/v9/effects/rasterbars.h | 24 + .../include/ui/fx/v9/effects/registry.h | 10 + .../include/ui/fx/v9/effects/rotozoom.h | 41 + .../include/ui/fx/v9/effects/scrolltext.h | 27 + .../include/ui/fx/v9/effects/shadebobs.h | 25 + .../include/ui/fx/v9/effects/starfield.h | 26 + .../ui/fx/v9/effects/transition_flash.h | 21 + .../include/ui/fx/v9/effects/tunnel3d.h | 40 + .../include/ui/fx/v9/effects/wirecube.h | 35 + .../include/ui/fx/v9/engine/engine.h | 93 + .../include/ui/fx/v9/engine/json_iface.h | 44 + .../include/ui/fx/v9/engine/mods.h | 69 + .../include/ui/fx/v9/engine/timeline.h | 57 + .../include/ui/fx/v9/engine/timeline_load.h | 18 + .../include/ui/fx/v9/engine/types.h | 70 + .../include/ui/fx/v9/gfx/blit.h | 22 + .../include/ui/fx/v9/math/fixed.h | 25 + .../include/ui/fx/v9/math/lut.h | 22 + .../include/ui/fx/v9/math/rng.h | 32 + .../include/ui/qr/qr_scan_controller.h | 35 + .../include/ui/qr/qr_scene_controller.h | 47 + .../include/ui/qr/qr_validation_rules.h | 28 + .../include/ui/scene_element.h | 31 + ui_freenove_allinone/include/ui/scene_state.h | 23 + ui_freenove_allinone/include/ui/ui_fonts.h | 41 + ui_freenove_allinone/include/ui/ui_manager.h | 769 ++ ui_freenove_allinone/include/ui_fonts.h | 3 + .../include/ui_freenove_config.h | 291 + ui_freenove_allinone/include/ui_manager.h | 3 + ui_freenove_allinone/src/README.md | 38 + .../src/app/app_coordinator.cpp | 27 + ui_freenove_allinone/src/app/main.cpp | 7525 +++++++++++++ .../src/app/runtime_scene_service.cpp | 20 + .../src/app/runtime_serial_service.cpp | 26 + .../src/app/runtime_web_service 2.cpp | 12 + .../src/app/runtime_web_service.cpp | 12 + .../src/app/scenario_manager.cpp | 836 ++ .../src/app/scene_fx_orchestrator.cpp | 93 + .../src/app/serial_command_router.cpp | 14 + .../src/audio/audio_manager.cpp | 978 ++ ui_freenove_allinone/src/audio_manager.cpp | 472 + ui_freenove_allinone/src/button_manager.cpp | 209 + .../src/camera/camera_manager.cpp | 991 ++ ui_freenove_allinone/src/camera_manager.cpp | 332 + .../src/drivers/board/hardware_manager.cpp | 1396 +++ .../src/drivers/display/display_hal_lgfx.cpp | 540 + .../drivers/display/display_hal_tftespi.cpp | 245 + .../src/drivers/display/spi_bus_manager.cpp | 58 + .../src/drivers/input/button_manager.cpp | 354 + .../src/drivers/input/touch_manager.cpp | 29 + ui_freenove_allinone/src/hardware_manager.cpp | 940 ++ ui_freenove_allinone/src/main.cpp | 3376 ++++++ ui_freenove_allinone/src/media_manager.cpp | 328 + ui_freenove_allinone/src/network_manager.cpp | 981 ++ ui_freenove_allinone/src/placeholder.cpp | 2 + .../src/runtime/la_trigger_service.cpp | 400 + .../src/runtime/memory/caps_allocator.cpp | 174 + .../src/runtime/perf/perf_monitor.cpp | 131 + .../runtime/provisioning/boot_mode_store.cpp | 75 + .../runtime/provisioning/credential_store.cpp | 164 + .../runtime/resource/resource_coordinator.cpp | 182 + .../src/runtime/runtime_config_service.cpp | 472 + .../src/runtime/simd/simd_accel.cpp | 499 + .../src/runtime/simd/simd_accel_bench.cpp | 15 + ui_freenove_allinone/src/scenario_manager.cpp | 670 ++ .../src/storage/storage_manager.cpp | 997 ++ ui_freenove_allinone/src/storage_manager.cpp | 802 ++ .../src/system/boot_report.cpp | 108 + .../src/system/media/media_manager.cpp | 389 + .../src/system/network/network_manager.cpp | 1137 ++ .../src/system/runtime_metrics.cpp | 117 + .../src/system/task_topology.cpp | 131 + ui_freenove_allinone/src/touch_manager.cpp | 29 + .../ui/audio_player/amiga_audio_player.cpp | 235 + .../ui/audio_player/audio_player_service.cpp | 333 + .../camera_capture/camera_capture_service.cpp | 144 + .../ui/camera_capture/win311_camera_ui.cpp | 716 ++ .../src/ui/effects/scene_gyrophare.cpp | 582 + ui_freenove_allinone/src/ui/fonts/README.md | 41 + .../src/ui/fonts/lv_font_bungee_18.c | 3989 +++++++ .../src/ui/fonts/lv_font_bungee_24.c | 4998 +++++++++ .../src/ui/fonts/lv_font_bungee_32.c | 6419 +++++++++++ .../src/ui/fonts/lv_font_ibmplexmono_14.c | 2639 +++++ .../src/ui/fonts/lv_font_ibmplexmono_18.c | 3199 ++++++ .../ui/fonts/lv_font_ibmplexmono_bold_12 2.c | 2366 ++++ .../ui/fonts/lv_font_ibmplexmono_bold_12.c | 2366 ++++ .../ui/fonts/lv_font_ibmplexmono_bold_16.c | 3130 ++++++ .../ui/fonts/lv_font_ibmplexmono_bold_20.c | 3875 +++++++ .../ui/fonts/lv_font_ibmplexmono_bold_24.c | 4573 ++++++++ .../ui/fonts/lv_font_ibmplexmono_italic_12.c | 2444 +++++ .../ui/fonts/lv_font_ibmplexmono_italic_16.c | 3345 ++++++ .../ui/fonts/lv_font_ibmplexmono_italic_20.c | 4164 +++++++ .../fonts/lv_font_ibmplexmono_italic_24 2.c | 5041 +++++++++ .../ui/fonts/lv_font_ibmplexmono_italic_24.c | 5041 +++++++++ .../src/ui/fonts/lv_font_inter_14.c | 3016 +++++ .../src/ui/fonts/lv_font_inter_18.c | 3556 ++++++ .../src/ui/fonts/lv_font_inter_24.c | 4553 ++++++++ .../src/ui/fonts/lv_font_inter_32.c | 6517 +++++++++++ .../src/ui/fonts/lv_font_monoton_18.c | 4304 ++++++++ .../src/ui/fonts/lv_font_monoton_24.c | 6324 +++++++++++ .../src/ui/fonts/lv_font_monoton_32.c | 9765 +++++++++++++++++ .../src/ui/fonts/lv_font_orbitron_28.c | 2444 +++++ .../src/ui/fonts/lv_font_orbitron_40.c | 3324 ++++++ .../src/ui/fonts/lv_font_pressstart2p_16.c | 2681 +++++ .../src/ui/fonts/lv_font_pressstart2p_24.c | 2941 +++++ .../src/ui/fonts/lv_font_rubikglitch_18.c | 4899 +++++++++ .../src/ui/fonts/lv_font_rubikglitch_24.c | 6636 +++++++++++ .../src/ui/fonts/lv_font_rubikglitch_32.c | 9201 ++++++++++++++++ .../src/ui/fx/fx_blit_fast.cpp | 59 + ui_freenove_allinone/src/ui/fx/fx_engine.cpp | 2298 ++++ ui_freenove_allinone/src/ui/fx/v8/fx_luts.cpp | 49 + ui_freenove_allinone/src/ui/fx/v8/fx_sync.cpp | 21 + .../src/ui/fx/v9/assets/assets_fs.cpp | 113 + .../src/ui/fx/v9/boing/boing_ball.c | 263 + .../src/ui/fx/v9/boing/boing_lvgl_layer.c | 236 + .../src/ui/fx/v9/boing/boing_shadow_darken.c | 76 + .../ui/fx/v9/boing/boing_shadow_darken_s3.S | 34 + .../src/ui/fx/v9/effects/hourglass.cpp | 169 + .../src/ui/fx/v9/effects/plasma.cpp | 36 + .../src/ui/fx/v9/effects/rasterbars.cpp | 49 + .../src/ui/fx/v9/effects/registry.cpp | 49 + .../src/ui/fx/v9/effects/rotozoom.cpp | 102 + .../src/ui/fx/v9/effects/scrolltext.cpp | 46 + .../src/ui/fx/v9/effects/shadebobs.cpp | 67 + .../src/ui/fx/v9/effects/starfield.cpp | 57 + .../src/ui/fx/v9/effects/transition_flash.cpp | 46 + .../src/ui/fx/v9/effects/tunnel3d.cpp | 131 + .../src/ui/fx/v9/effects/wirecube.cpp | 126 + .../src/ui/fx/v9/engine/engine.cpp | 519 + .../src/ui/fx/v9/engine/mods.cpp | 111 + .../src/ui/fx/v9/engine/timeline_load.cpp | 235 + .../src/ui/fx/v9/gfx/blit.cpp | 81 + .../src/ui/qr/qr_scan_controller.cpp | 113 + .../src/ui/qr/qr_scene_controller.cpp | 151 + .../src/ui/qr/qr_validation_rules.cpp | 282 + ui_freenove_allinone/src/ui/scene_element.cpp | 62 + ui_freenove_allinone/src/ui/scene_state.cpp | 37 + ui_freenove_allinone/src/ui/ui_fonts.cpp | 308 + ui_freenove_allinone/src/ui/ui_manager.cpp | 6152 +++++++++++ .../src/ui/ui_manager_display 2.cpp | 899 ++ .../src/ui/ui_manager_display.cpp | 851 ++ .../src/ui/ui_manager_effects.cpp | 2592 +++++ .../src/ui/ui_manager_intro 2.cpp | 2475 +++++ .../src/ui/ui_manager_intro.cpp | 2475 +++++ ui_freenove_allinone/src/ui_manager.cpp | 3063 ++++++ 298 files changed, 192790 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 README_ESP32_ZACUS.md create mode 100644 lib/zacus_story_gen_ai/README.md create mode 100644 lib/zacus_story_gen_ai/pyproject.toml create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/PKG-INFO create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/SOURCES.txt create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/dependency_links.txt create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/entry_points.txt create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/requires.txt create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/top_level.txt create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/__init__.py create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/cli.py create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/generator.py create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/game_scenario_schema.yamale create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/scenario_template_schema.yamale create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/story_spec_schema.yamale create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.cpp.j2 create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.h.j2 create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.cpp.j2 create mode 100644 lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.h.j2 create mode 100644 lib/zacus_story_gen_ai/tests/conftest.py create mode 100644 lib/zacus_story_gen_ai/tests/test_generator.py create mode 100644 lib/zacus_story_portable/data/audio/uson_1_radio_lowmono.mp3 create mode 100644 lib/zacus_story_portable/data/audio/uson_2_mode_hero.mp3 create mode 100644 lib/zacus_story_portable/data/audio/uson_boot_arcade_lowmono.mp3 create mode 100644 lib/zacus_story_portable/data/audio/uson_boot_corrompu_lowmono.mp3 create mode 100644 lib/zacus_story_portable/data/audio/uson_win_1_rapport_imprime.mp3 create mode 100644 lib/zacus_story_portable/data/net/config.json create mode 100644 lib/zacus_story_portable/data/radio/stations.json create mode 100644 lib/zacus_story_portable/data/story/screens/broken.json create mode 100644 lib/zacus_story_portable/data/story/screens/la_detector.json create mode 100644 lib/zacus_story_portable/data/story/screens/locked.json create mode 100644 lib/zacus_story_portable/data/story/screens/ready.json create mode 100644 lib/zacus_story_portable/data/story/screens/win.json create mode 100644 lib/zacus_story_portable/include/zacus_story_portable/story_portable_runtime.h create mode 100644 lib/zacus_story_portable/include/zacus_story_portable/tinyfsm_core.h create mode 100644 lib/zacus_story_portable/pense-bete.md create mode 100644 lib/zacus_story_portable/protocol/ui_link_v2.h create mode 100644 lib/zacus_story_portable/protocol/ui_link_v2.md create mode 100644 lib/zacus_story_portable/src/story_portable_runtime.cpp create mode 100644 lib/zacus_story_portable/story_generator/RELEASE_STORY_V2.md create mode 100644 lib/zacus_story_portable/story_generator/gen_split_scenario.py create mode 100644 lib/zacus_story_portable/story_generator/story_specs/README.md create mode 100644 lib/zacus_story_portable/story_generator/story_specs/prompts/spectre_radio_lab.prompt.md create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/README.md create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_audio.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_gate.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_screen.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_broken.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 2.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 3.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detector.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_locked.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_ready.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 2.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 3.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_win.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/default_unlock_win_etape2.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express_done.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/spectre_radio_lab.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/scenarios/zacus_v1_unlock_and_etape2.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/schema/story_spec_v1.yaml create mode 100644 lib/zacus_story_portable/story_generator/story_specs/templates/scenario.template.yaml create mode 100644 lib/zacus_story_portable/story_screen_smoke.py create mode 100755 lib/zacus_story_portable/sync_ui_screens.sh create mode 100755 lib/zacus_story_portable/test_4scenarios_all.py create mode 100755 lib/zacus_story_portable/test_4scenarios_complete.py create mode 100644 lib/zacus_story_portable/test_story_4scenarios.py create mode 100644 platformio.ini create mode 100644 ui_freenove_allinone/AGENT_FUSION.md create mode 100644 ui_freenove_allinone/AGENT_TODO.md create mode 100644 ui_freenove_allinone/RC_FINAL_BOARD.md create mode 100644 ui_freenove_allinone/README.md create mode 100644 ui_freenove_allinone/include/README.md create mode 100644 ui_freenove_allinone/include/app/app_coordinator.h create mode 100644 ui_freenove_allinone/include/app/runtime_scene_service.h create mode 100644 ui_freenove_allinone/include/app/runtime_serial_service.h create mode 100644 ui_freenove_allinone/include/app/runtime_web_service 2.h create mode 100644 ui_freenove_allinone/include/app/runtime_web_service.h create mode 100644 ui_freenove_allinone/include/app/scenario_manager.h create mode 100644 ui_freenove_allinone/include/app/scene_fx_orchestrator.h create mode 100644 ui_freenove_allinone/include/app/serial_command_router.h create mode 100644 ui_freenove_allinone/include/audio/audio_manager.h create mode 100644 ui_freenove_allinone/include/audio/audio_pipeline.h create mode 100644 ui_freenove_allinone/include/audio_manager.h create mode 100644 ui_freenove_allinone/include/button_manager.h create mode 100644 ui_freenove_allinone/include/camera/camera_manager.h create mode 100644 ui_freenove_allinone/include/camera/camera_pipeline.h create mode 100644 ui_freenove_allinone/include/camera_manager.h create mode 100644 ui_freenove_allinone/include/drivers/board/hardware_manager.h create mode 100644 ui_freenove_allinone/include/drivers/display/display_hal.h create mode 100644 ui_freenove_allinone/include/drivers/display/spi_bus_manager.h create mode 100644 ui_freenove_allinone/include/drivers/input/button_manager.h create mode 100644 ui_freenove_allinone/include/drivers/input/touch_manager.h create mode 100644 ui_freenove_allinone/include/hardware_manager.h create mode 100644 ui_freenove_allinone/include/lv_conf.h create mode 100644 ui_freenove_allinone/include/media_manager.h create mode 100644 ui_freenove_allinone/include/network_manager.h create mode 100644 ui_freenove_allinone/include/runtime/app_coordinator.h create mode 100644 ui_freenove_allinone/include/runtime/la_trigger_service.h create mode 100644 ui_freenove_allinone/include/runtime/memory/caps_allocator.h create mode 100644 ui_freenove_allinone/include/runtime/memory/safe_size.h create mode 100644 ui_freenove_allinone/include/runtime/perf/perf_monitor.h create mode 100644 ui_freenove_allinone/include/runtime/provisioning/boot_mode_store.h create mode 100644 ui_freenove_allinone/include/runtime/provisioning/credential_store.h create mode 100644 ui_freenove_allinone/include/runtime/resource/resource_coordinator.h create mode 100644 ui_freenove_allinone/include/runtime/rtos/scoped_lock.h create mode 100644 ui_freenove_allinone/include/runtime/runtime_config_service.h create mode 100644 ui_freenove_allinone/include/runtime/runtime_config_types.h create mode 100644 ui_freenove_allinone/include/runtime/runtime_services.h create mode 100644 ui_freenove_allinone/include/runtime/scene_fx_orchestrator.h create mode 100644 ui_freenove_allinone/include/runtime/serial_command_router.h create mode 100644 ui_freenove_allinone/include/runtime/simd/simd_accel.h create mode 100644 ui_freenove_allinone/include/runtime/simd/simd_accel_bench.h create mode 100644 ui_freenove_allinone/include/scenario_manager.h create mode 100644 ui_freenove_allinone/include/storage/storage_manager.h create mode 100644 ui_freenove_allinone/include/storage/storage_prefetch.h create mode 100644 ui_freenove_allinone/include/storage_manager.h create mode 100644 ui_freenove_allinone/include/system/boot_report.h create mode 100644 ui_freenove_allinone/include/system/media/media_manager.h create mode 100644 ui_freenove_allinone/include/system/network/network_manager.h create mode 100644 ui_freenove_allinone/include/system/rate_limited_log.h create mode 100644 ui_freenove_allinone/include/system/runtime_metrics.h create mode 100644 ui_freenove_allinone/include/system/task_topology.h create mode 100644 ui_freenove_allinone/include/touch_manager.h create mode 100644 ui_freenove_allinone/include/ui/audio_player/amiga_audio_player.h create mode 100644 ui_freenove_allinone/include/ui/audio_player/audio_player_service.h create mode 100644 ui_freenove_allinone/include/ui/camera_capture/camera_capture_service.h create mode 100644 ui_freenove_allinone/include/ui/camera_capture/win311_camera_ui.h create mode 100644 ui_freenove_allinone/include/ui/effects/scene_gyrophare.h create mode 100644 ui_freenove_allinone/include/ui/fx/fx_blit_fast.h create mode 100644 ui_freenove_allinone/include/ui/fx/fx_engine.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/font_6x8_basic.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/font_6x8_bold.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/font_6x8_italic.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/font_6x8_outline.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/font_select.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/fx_luts.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/fx_sync.h create mode 100644 ui_freenove_allinone/include/ui/fx/v8/fx_utils.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/assets/assets.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/assets/assets_fs.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/assets/palette_gray565.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/boing/boing_ball.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/boing/boing_lvgl_layer.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/boing/boing_shadow_darken.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/fx_base.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/hourglass.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/plasma.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/rasterbars.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/registry.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/rotozoom.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/scrolltext.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/shadebobs.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/starfield.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/transition_flash.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/tunnel3d.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/effects/wirecube.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/engine.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/json_iface.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/mods.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/timeline.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/timeline_load.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/engine/types.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/gfx/blit.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/math/fixed.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/math/lut.h create mode 100644 ui_freenove_allinone/include/ui/fx/v9/math/rng.h create mode 100644 ui_freenove_allinone/include/ui/qr/qr_scan_controller.h create mode 100644 ui_freenove_allinone/include/ui/qr/qr_scene_controller.h create mode 100644 ui_freenove_allinone/include/ui/qr/qr_validation_rules.h create mode 100644 ui_freenove_allinone/include/ui/scene_element.h create mode 100644 ui_freenove_allinone/include/ui/scene_state.h create mode 100644 ui_freenove_allinone/include/ui/ui_fonts.h create mode 100644 ui_freenove_allinone/include/ui/ui_manager.h create mode 100644 ui_freenove_allinone/include/ui_fonts.h create mode 100644 ui_freenove_allinone/include/ui_freenove_config.h create mode 100644 ui_freenove_allinone/include/ui_manager.h create mode 100644 ui_freenove_allinone/src/README.md create mode 100644 ui_freenove_allinone/src/app/app_coordinator.cpp create mode 100644 ui_freenove_allinone/src/app/main.cpp create mode 100644 ui_freenove_allinone/src/app/runtime_scene_service.cpp create mode 100644 ui_freenove_allinone/src/app/runtime_serial_service.cpp create mode 100644 ui_freenove_allinone/src/app/runtime_web_service 2.cpp create mode 100644 ui_freenove_allinone/src/app/runtime_web_service.cpp create mode 100644 ui_freenove_allinone/src/app/scenario_manager.cpp create mode 100644 ui_freenove_allinone/src/app/scene_fx_orchestrator.cpp create mode 100644 ui_freenove_allinone/src/app/serial_command_router.cpp create mode 100644 ui_freenove_allinone/src/audio/audio_manager.cpp create mode 100644 ui_freenove_allinone/src/audio_manager.cpp create mode 100644 ui_freenove_allinone/src/button_manager.cpp create mode 100644 ui_freenove_allinone/src/camera/camera_manager.cpp create mode 100644 ui_freenove_allinone/src/camera_manager.cpp create mode 100644 ui_freenove_allinone/src/drivers/board/hardware_manager.cpp create mode 100644 ui_freenove_allinone/src/drivers/display/display_hal_lgfx.cpp create mode 100644 ui_freenove_allinone/src/drivers/display/display_hal_tftespi.cpp create mode 100644 ui_freenove_allinone/src/drivers/display/spi_bus_manager.cpp create mode 100644 ui_freenove_allinone/src/drivers/input/button_manager.cpp create mode 100644 ui_freenove_allinone/src/drivers/input/touch_manager.cpp create mode 100644 ui_freenove_allinone/src/hardware_manager.cpp create mode 100644 ui_freenove_allinone/src/main.cpp create mode 100644 ui_freenove_allinone/src/media_manager.cpp create mode 100644 ui_freenove_allinone/src/network_manager.cpp create mode 100644 ui_freenove_allinone/src/placeholder.cpp create mode 100644 ui_freenove_allinone/src/runtime/la_trigger_service.cpp create mode 100644 ui_freenove_allinone/src/runtime/memory/caps_allocator.cpp create mode 100644 ui_freenove_allinone/src/runtime/perf/perf_monitor.cpp create mode 100644 ui_freenove_allinone/src/runtime/provisioning/boot_mode_store.cpp create mode 100644 ui_freenove_allinone/src/runtime/provisioning/credential_store.cpp create mode 100644 ui_freenove_allinone/src/runtime/resource/resource_coordinator.cpp create mode 100644 ui_freenove_allinone/src/runtime/runtime_config_service.cpp create mode 100644 ui_freenove_allinone/src/runtime/simd/simd_accel.cpp create mode 100644 ui_freenove_allinone/src/runtime/simd/simd_accel_bench.cpp create mode 100644 ui_freenove_allinone/src/scenario_manager.cpp create mode 100644 ui_freenove_allinone/src/storage/storage_manager.cpp create mode 100644 ui_freenove_allinone/src/storage_manager.cpp create mode 100644 ui_freenove_allinone/src/system/boot_report.cpp create mode 100644 ui_freenove_allinone/src/system/media/media_manager.cpp create mode 100644 ui_freenove_allinone/src/system/network/network_manager.cpp create mode 100644 ui_freenove_allinone/src/system/runtime_metrics.cpp create mode 100644 ui_freenove_allinone/src/system/task_topology.cpp create mode 100644 ui_freenove_allinone/src/touch_manager.cpp create mode 100644 ui_freenove_allinone/src/ui/audio_player/amiga_audio_player.cpp create mode 100644 ui_freenove_allinone/src/ui/audio_player/audio_player_service.cpp create mode 100644 ui_freenove_allinone/src/ui/camera_capture/camera_capture_service.cpp create mode 100644 ui_freenove_allinone/src/ui/camera_capture/win311_camera_ui.cpp create mode 100644 ui_freenove_allinone/src/ui/effects/scene_gyrophare.cpp create mode 100644 ui_freenove_allinone/src/ui/fonts/README.md create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_bungee_18.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_bungee_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_bungee_32.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_14.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_18.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_12 2.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_12.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_16.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_20.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_12.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_16.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_20.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_24 2.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_inter_14.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_inter_18.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_inter_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_inter_32.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_monoton_18.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_monoton_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_monoton_32.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_orbitron_28.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_orbitron_40.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_pressstart2p_16.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_pressstart2p_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_rubikglitch_18.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_rubikglitch_24.c create mode 100644 ui_freenove_allinone/src/ui/fonts/lv_font_rubikglitch_32.c create mode 100644 ui_freenove_allinone/src/ui/fx/fx_blit_fast.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/fx_engine.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v8/fx_luts.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v8/fx_sync.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/assets/assets_fs.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/boing/boing_ball.c create mode 100644 ui_freenove_allinone/src/ui/fx/v9/boing/boing_lvgl_layer.c create mode 100644 ui_freenove_allinone/src/ui/fx/v9/boing/boing_shadow_darken.c create mode 100644 ui_freenove_allinone/src/ui/fx/v9/boing/boing_shadow_darken_s3.S create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/hourglass.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/plasma.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/rasterbars.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/registry.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/rotozoom.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/scrolltext.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/shadebobs.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/starfield.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/transition_flash.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/tunnel3d.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/effects/wirecube.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/engine/engine.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/engine/mods.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/engine/timeline_load.cpp create mode 100644 ui_freenove_allinone/src/ui/fx/v9/gfx/blit.cpp create mode 100644 ui_freenove_allinone/src/ui/qr/qr_scan_controller.cpp create mode 100644 ui_freenove_allinone/src/ui/qr/qr_scene_controller.cpp create mode 100644 ui_freenove_allinone/src/ui/qr/qr_validation_rules.cpp create mode 100644 ui_freenove_allinone/src/ui/scene_element.cpp create mode 100644 ui_freenove_allinone/src/ui/scene_state.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_fonts.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager_display 2.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager_display.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager_effects.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager_intro 2.cpp create mode 100644 ui_freenove_allinone/src/ui/ui_manager_intro.cpp create mode 100644 ui_freenove_allinone/src/ui_manager.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..737863c --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# PlatformIO +.pio/ +.platformio/ +build/ +.gcc-flags.json + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Python +__pycache__/ +*.py[cod] +*$py.class +.venv/ +venv/ + +# OS +.DS_Store +Thumbs.db + +# Logs & Artifacts +logs/ +artifacts/ +*.log +*.tmp + +# Firmware artifacts +upload_port +monitor_port +.env diff --git a/README.md b/README.md new file mode 100644 index 0000000..561de7c --- /dev/null +++ b/README.md @@ -0,0 +1,210 @@ +# Optimisation automatique hardware +Depuis février 2026, le cockpit détecte automatiquement le hardware connecté (port série, ID USB) et ne build/flash que l’environnement PlatformIO correspondant. + +Pour builder ou flasher : +- Menu cockpit : "Build all firmware" ou "Flash auto (hardware détecté)" +- Ligne de commande : ./tools/dev/cockpit.sh flash (auto) ou ./tools/dev/cockpit.sh build (auto) + +La détection est basée sur pyserial et l’ID USB (Freenove, ESP32, ESP8266, RP2040). Le log affiche le hardware détecté et l’environnement PlatformIO ciblé. + +Pour forcer un build/flash spécifique : ./tools/dev/cockpit.sh flash + +# Hardware Firmware + +> **[Mise à jour 2026]** +> +> **Tous les assets LittleFS (scénarios, écrans, scènes, audio, actions, etc.) sont désormais centralisés dans le dossier `data/` à la racine de `hardware/firmware/`.** +> +> Ce dossier unique sert de source pour le flash LittleFS sur ESP32, ESP8266 et RP2040. Les anciens dossiers `data/` dans les sous-projets doivent être migrés/supprimés (voir encart migration ci-dessous). + + +Workspace PlatformIO unique pour 3 firmwares: + +- `esp32_audio/`: firmware principal audio +- `ui/esp8266_oled/`: UI OLED legere +- `ui/rp2040_tft/`: UI TFT tactile (LVGL) +- `protocol/`: contrat UART partage (`ui_link_v2.md`, `ui_link_v2.h`) +### 🟦 Freenove Media Kit (RP2040) + +Un environnement PlatformIO dédié est disponible pour le boîtier Freenove Media Kit : + +- **Build** : `pio run -e ui_rp2040_freenove` +- **Flash** : `pio run -e ui_rp2040_freenove -t upload --upload-port ` +- **Monitor** : `pio device monitor -e ui_rp2040_freenove --port ` + +Le mapping hardware (pins, écran, boutons) est défini dans `ui/rp2040_tft/include/ui_freenove_config.h`. + +**Schéma de branchement** : voir `hardware/wiring/wiring.md` (section Freenove) + +**Remarque** : adaptez les defines dans `ui_freenove_config.h` selon votre version du Media Kit (écran, boutons, etc.). + + +## 📚 Documentation + +- **[État des lieux](docs/STATE_ANALYSIS.md)** - Analyse complète du firmware +- **[Recommandations Sprint](docs/SPRINT_RECOMMENDATIONS.md)** - Actions prioritaires +- **[Recovery WiFi/AP & Health](docs/WIFI_RECOVERY_AND_HEALTH.md)** - Procédure recovery AP, healthcheck, troubleshooting + +Pour débuter : [docs/QUICKSTART.md](docs/QUICKSTART.md) + + +## Structure des assets LittleFS (cross-plateforme) + +``` +hardware/firmware/data/ + story/ + scenarios/ + DEFAULT.json + apps/ + screens/ + audio/ + actions/ + audio/ + radio/ + net/ +``` + +**Scripts de génération et de flash : toujours pointer vers ce dossier.** + +--- + +## Build + +```sh +pio run +``` + +Build cible: + +```sh +pio run -e esp32dev +pio run -e esp32_release +pio run -e esp8266_oled +pio run -e ui_rp2040_ili9488 +pio run -e ui_rp2040_ili9486 +``` + +Script global: + +```sh +./build_all.sh +``` + +Bootstrap local tools once: + +```sh +./tools/dev/bootstrap_local.sh +``` + +## Story portable (generation + runtime) + +- Generation library: `lib/zacus_story_gen_ai/` (Yamale + Jinja2). +- Runtime library: `lib/zacus_story_portable/` (tinyfsm-style internals). +- Story serial protocol: JSON-lines V3 (`story.*`), see `docs/protocols/story_v3_serial.md`. +- Canonical migration doc: `docs/STORY_PORTABILITY_MIGRATION.md`. + +CLI: + +```sh +./tools/dev/story-gen validate +./tools/dev/story-gen generate-cpp +./tools/dev/story-gen generate-bundle +./tools/dev/story-gen all +``` + + +## Flash (cockpit) + +```sh +./tools/dev/cockpit.sh flash +``` + + +Options utiles: + +- `ZACUS_FLASH_ESP32_ENVS="esp32dev esp32_release"` +- `ZACUS_FLASH_RP2040_ENVS="ui_rp2040_ili9488 ui_rp2040_ili9486"` +- `ZACUS_PORT_ESP32=... ZACUS_PORT_ESP8266=... ZACUS_PORT_RP2040=...` + + +--- + +## Migration LittleFS (2026) + +- Déplacer tous les fichiers de scénario, écrans, scènes, audio, etc. dans `hardware/firmware/data/`. +- Adapter les scripts de génération et de flash pour pointer vers ce dossier. +- Supprimer les anciens dossiers `data/` dispersés dans les sous-projets (`ui/rp2040_tft/data/`, `esp32_audio/data/`, etc.). +- Mettre à jour tous les guides et onboarding pour refléter cette structure unique. + +--- + +```sh +make fast-esp32 ESP32_PORT= +make fast-ui-oled UI_OLED_PORT= +make fast-ui-tft UI_TFT_PORT= +``` + +Smoke série (manuel): + +```sh +python3 tools/dev/serial_smoke.py --role auto --baud 115200 --wait-port 3 --allow-no-hardware +``` + +MacOS CP2102 duplicates share VID/PID=10C4:EA60/0001; the LOCATION (20-6.1.1=ESP32, 20-6.1.2=ESP8266) drives the detector. `tools/dev/ports_map.json` now uses `location -> role` and `vidpid -> role` mappings. +USB console monitoring uses `115200`. ESP8266 internal UI link SoftwareSerial stays at `57600` (internal link only). + +## Serial smoke commands + +- baseline smoke (auto handles already connected boards): `python3 tools/dev/serial_smoke.py --role auto --baud 115200 --wait-port 3 --allow-no-hardware` +- run every detected role: `python3 tools/dev/serial_smoke.py --role all --baud 115200 --wait-port 3 --allow-no-hardware` +- force hardware detection: `ZACUS_REQUIRE_HW=1 python3 tools/dev/serial_smoke.py --role auto --baud 115200 --wait-port 180` +- skip PlatformIO builds and just run smoke (useful when downloads are impossible): `ZACUS_SKIP_PIO=1 ./tools/dev/run_matrix_and_smoke.sh` + +## Build + smoke combo + +```sh +./tools/dev/run_matrix_and_smoke.sh +# or from repo root: +./hw_now.sh +``` + +Cockpit shortcut: + +```sh +./tools/dev/cockpit.sh rc +``` + +`run_matrix_and_smoke.sh` ensures PlatformIO caches land under `$HOME/.platformio` (via `PLATFORMIO_CORE_DIR`) rather than inside the repo. +Before smoke it shows `⚠️ BRANCHE L’USB MAINTENANT ⚠️` three times, then waits for Enter while listing ports every 15s. +Each run writes deterministic artifacts under `artifacts/rc_live/_/` and logs under `logs/rc_live/_.log` (`summary.json`, `summary.md`, `ports_resolve.json`, `ui_link.log`, per-step logs). +The runner resolves macOS CP2102 by LOCATION (`20-6.1.1` ESP32, `20-6.1.2` ESP8266 USB), then enforces a dedicated `UI_LINK_STATUS connected=1` gate on ESP32. +When `ZACUS_ENV="freenove_esp32s3"` (single-board), ESP8266/UI-link/story-screen gates are marked `SKIP` with `not needed for combined board`. + +Environment overrides: + +- `ZACUS_REQUIRE_HW=1 ./tools/dev/run_matrix_and_smoke.sh` (fail when no hardware). +- `ZACUS_WAIT_PORT=3 ./tools/dev/run_matrix_and_smoke.sh` (override serial wait window for smoke). +- `ZACUS_NO_COUNTDOWN=1 ./tools/dev/run_matrix_and_smoke.sh` (skip the USB wait gate). +- `ZACUS_SKIP_SMOKE=1 ./tools/dev/run_matrix_and_smoke.sh` (build only, no serial smoke step). +- `ZACUS_ENV="esp32dev esp8266_oled" ./tools/dev/run_matrix_and_smoke.sh` (custom env subset). +- `ZACUS_ENV="freenove_esp32s3" ./tools/dev/run_matrix_and_smoke.sh` (single-board Freenove path). +- `ZACUS_FORCE_BUILD=1 ./tools/dev/run_matrix_and_smoke.sh` (force rebuild even when artifacts exist). + +By default the smoke step exits 0 when no serial hardware is present; use `ZACUS_REQUIRE_HW=1` to enforce detection. + +## Docs + +- Cablage ESP32/UI: `esp32_audio/WIRING.md` +- Cablage TFT: `ui/rp2040_tft/WIRING.md` +- Quickstart flash: `docs/QUICKSTART.md` +- RC board execution: `docs/RC_FINAL_BOARD.md` +- Protocole: `protocol/ui_link_v2.md` +- Cockpit command registry: `docs/_generated/COCKPIT_COMMANDS.md` + +## Codex prompts + +Prompt files live under `tools/dev/codex_prompts/*.prompt.md` and are designed to be consumed by the automation-friendly `codex exec` command. +Run `./tools/dev/codex_prompt_menu.sh` to see a numbered menu, pick a prompt, and send it to `codex exec --sandbox workspace-write --output-last-message artifacts/rc_live/_codex_last_message.md`. +You can also launch this helper directly from the firmware cockpit (`./tools/dev/cockpit.sh` option 6) so the existing workflow keeps a single entry point. + +Story authoring prompts live separately under `docs/protocols/story_specs/prompts/*.prompt.md`. They are not ops prompts, but can still be used with Codex tooling when needed. diff --git a/README_ESP32_ZACUS.md b/README_ESP32_ZACUS.md new file mode 100644 index 0000000..a023a01 --- /dev/null +++ b/README_ESP32_ZACUS.md @@ -0,0 +1,98 @@ +# ESP32_ZACUS – Freenove ESP32-S3 UI Firmware + +Branche de travail dédiée pour optimisations et refactoring de l'interface Freenove. + +**Status**: 2026-03-01 – Repo initialisé avec sources Freenove + story engine library. + +## Structure + +``` +ESP32_ZACUS/ +├── ui_freenove_allinone/ # Freenove UI app (UI rendering, scenes, story integration) +├── lib/ # Story engine + auxiliary libraries +├── platformio.ini # PlatformIO config (Freenove environment) +└── README.md # General Zacus firmware guide +``` + +## Workflow + +### Setup Local + +```bash +cd ESP32_ZACUS +python3 -m venv .venv +source .venv/bin/activate +pip install platformio esptool pyserial + +# List PlatformIO boards +pio boards | grep freenove +``` + +### Build & Upload Freenove + +```bash +pio run -e freenove_esp32s3_full_with_ui -t upload --upload-port /dev/cu.usbmodem5AB90753301 +``` + +### Serial Monitor (115200 baud) + +```bash +pio device monitor -p /dev/cu.usbmodem5AB90753301 -b 115200 +``` + +Or Python: + +```bash +python3 << 'PY' +import serial, time +port = '/dev/cu.usbmodem5AB90753301' +ser = serial.Serial(port, 115200, timeout=0.5) +time.sleep(0.2) +ser.write(b'STATUS\n') +time.sleep(0.3) +for _ in range(10): + line = ser.readline().decode('utf-8', 'ignore').strip() + if line: + print(line) +ser.close() +PY +``` + +## Future Work + +- **UI Optimization** (ui_freenove_allinone): + - Refactor LVGL rendering pipeline + - Scene/story integration improvements + - Touch input handling; audio trigger feedback + +- **Story Engine** (lib/story/): + - Performance audit + - Memory footprint reduction + - ESP-NOW sync protocol optimization + +- **Hardware Integration**: + - Audio codec I2S optimization + - PSRAM buffer management + - Camera/WiFi/Bluetooth coexistence + +## Git Push to GitHub + +Once repo created on GitHub: + +```bash +cd ESP32_ZACUS +git remote add origin https://github.com/YOUR_USER/ESP32_ZACUS.git +git branch -m master main +git push -u origin main +``` + +## References + +- [Freenove Board Docs](../hardware/docs/RC_FINAL_BOARD.md) +- [Story Engine Contract](../hardware/firmware/docs/ESP_NOW_API_CONTRACT_FREENOVE_V1.md) +- [Zacus Game Protocol](../hardware/firmware/docs/ARCHITECTURE_UML.md) + +--- + +**Last Updated**: 2026-03-01 +**Authored by**: Agent (Copilot) diff --git a/lib/zacus_story_gen_ai/README.md b/lib/zacus_story_gen_ai/README.md new file mode 100644 index 0000000..3495265 --- /dev/null +++ b/lib/zacus_story_gen_ai/README.md @@ -0,0 +1,15 @@ +# zacus_story_gen_ai + +Host-side Story generation library for firmware. + +## Commands + +- `story-gen validate` +- `story-gen generate-cpp` +- `story-gen generate-bundle` +- `story-gen all` + +Default inputs: + +- game scenarios: `game/scenarios/*.yaml` +- story specs: `hardware/firmware/docs/protocols/story_specs/scenarios/*.yaml` diff --git a/lib/zacus_story_gen_ai/pyproject.toml b/lib/zacus_story_gen_ai/pyproject.toml new file mode 100644 index 0000000..44c76c2 --- /dev/null +++ b/lib/zacus_story_gen_ai/pyproject.toml @@ -0,0 +1,26 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "zacus-story-gen-ai" +version = "0.1.0" +description = "Zacus Story generation library (Yamale + Jinja2)" +requires-python = ">=3.9" +dependencies = [ + "PyYAML>=6.0", + "yamale>=5.2.1", + "Jinja2>=3.1.0", +] + +[project.scripts] +story-gen = "zacus_story_gen_ai.cli:main" + +[tool.setuptools] +package-dir = {"" = "src"} + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.package-data] +zacus_story_gen_ai = ["templates/*.j2", "schemas/*.yamale"] diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/PKG-INFO b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/PKG-INFO new file mode 100644 index 0000000..f5d1477 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/PKG-INFO @@ -0,0 +1,8 @@ +Metadata-Version: 2.4 +Name: zacus-story-gen-ai +Version: 0.1.0 +Summary: Zacus Story generation library (Yamale + Jinja2) +Requires-Python: >=3.9 +Requires-Dist: PyYAML>=6.0 +Requires-Dist: yamale>=5.2.1 +Requires-Dist: Jinja2>=3.1.0 diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/SOURCES.txt b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/SOURCES.txt new file mode 100644 index 0000000..23e5020 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/SOURCES.txt @@ -0,0 +1,18 @@ +README.md +pyproject.toml +src/zacus_story_gen_ai/__init__.py +src/zacus_story_gen_ai/cli.py +src/zacus_story_gen_ai/generator.py +src/zacus_story_gen_ai.egg-info/PKG-INFO +src/zacus_story_gen_ai.egg-info/SOURCES.txt +src/zacus_story_gen_ai.egg-info/dependency_links.txt +src/zacus_story_gen_ai.egg-info/entry_points.txt +src/zacus_story_gen_ai.egg-info/requires.txt +src/zacus_story_gen_ai.egg-info/top_level.txt +src/zacus_story_gen_ai/schemas/game_scenario_schema.yamale +src/zacus_story_gen_ai/schemas/story_spec_schema.yamale +src/zacus_story_gen_ai/templates/apps_gen.cpp.j2 +src/zacus_story_gen_ai/templates/apps_gen.h.j2 +src/zacus_story_gen_ai/templates/scenarios_gen.cpp.j2 +src/zacus_story_gen_ai/templates/scenarios_gen.h.j2 +tests/test_generator.py \ No newline at end of file diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/dependency_links.txt b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/entry_points.txt b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/entry_points.txt new file mode 100644 index 0000000..48f4cdb --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +story-gen = zacus_story_gen_ai.cli:main diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/requires.txt b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/requires.txt new file mode 100644 index 0000000..c48bf81 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/requires.txt @@ -0,0 +1,3 @@ +PyYAML>=6.0 +yamale>=5.2.1 +Jinja2>=3.1.0 diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/top_level.txt b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/top_level.txt new file mode 100644 index 0000000..cf22d16 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai.egg-info/top_level.txt @@ -0,0 +1 @@ +zacus_story_gen_ai diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/__init__.py b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/__init__.py new file mode 100644 index 0000000..4b014fd --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/__init__.py @@ -0,0 +1,5 @@ +"""Story generation library (Yamale + Jinja2) for Zacus firmware.""" + +from .generator import StoryGenerationError + +__all__ = ["StoryGenerationError"] diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/cli.py b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/cli.py new file mode 100644 index 0000000..61c58fb --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/cli.py @@ -0,0 +1,155 @@ +from __future__ import annotations + +import argparse +import sys +from pathlib import Path + +from .generator import ( + StoryGenerationError, + default_paths, + run_generate_bundle, + run_generate_cpp, + run_sync_screens, + run_validate, +) + + +def _path_or_none(value: str | None) -> Path | None: + if value is None or value == "": + return None + return Path(value) + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="Zacus story generator (Yamale + Jinja2)") + sub = parser.add_subparsers(dest="command", required=True) + + common = argparse.ArgumentParser(add_help=False) + common.add_argument("--spec-dir", default="", help="Story spec directory") + common.add_argument("--game-dir", default="", help="Game scenario directory") + + validate_p = sub.add_parser("validate", parents=[common], help="Validate game + story specs") + + cpp_p = sub.add_parser("generate-cpp", parents=[common], help="Generate scenarios_gen/apps_gen C++") + cpp_p.add_argument("--out-dir", default="", help="Output directory for generated C++") + + generate_alias = sub.add_parser("generate", parents=[common], help="Alias of generate-cpp") + generate_alias.add_argument("--out-dir", default="", help="Output directory for generated C++") + + bundle_p = sub.add_parser("generate-bundle", parents=[common], help="Generate story bundle JSON+sha") + bundle_p.add_argument("--out-dir", default="", help="Bundle root directory") + bundle_p.add_argument("--archive", default="", help="Optional .tar.gz archive output") + + sync_screens_p = sub.add_parser( + "sync-screens", + parents=[common], + help="Synchronize data/story/screens and legacy_payloads/fs_excluded/screens from palette", + ) + sync_screens_p.add_argument( + "--check", + action="store_true", + help="Check drift only (no writes); non-zero exit on mismatch", + ) + + deploy_alias = sub.add_parser("deploy", parents=[common], help="Alias of generate-bundle") + deploy_alias.add_argument("--out-dir", default="", help="Bundle root directory") + deploy_alias.add_argument("--archive", default="", help="Optional .tar.gz archive output") + + all_p = sub.add_parser("all", parents=[common], help="Validate + generate-cpp + generate-bundle") + all_p.add_argument("--cpp-out-dir", default="", help="Output directory for generated C++") + all_p.add_argument("--bundle-out-dir", default="", help="Bundle root directory") + all_p.add_argument("--archive", default="", help="Optional .tar.gz archive output") + + return parser + + +def main(argv: list[str] | None = None) -> int: + parser = build_parser() + args = parser.parse_args(argv) + + paths = default_paths() + spec_dir = _path_or_none(args.spec_dir) + game_dir = _path_or_none(args.game_dir) + + try: + if args.command == "validate": + result = run_validate(paths, spec_dir=spec_dir, game_dir=game_dir) + print( + f"[story-gen] OK validate scenarios={result['scenario_count']} " + f"game_scenarios={result['game_scenario_count']}" + ) + return 0 + + if args.command in {"generate-cpp", "generate"}: + result = run_generate_cpp( + paths, + out_dir=_path_or_none(args.out_dir), + spec_dir=spec_dir, + game_dir=game_dir, + ) + print( + f"[story-gen] OK generate-cpp out={result['out_dir']} " + f"scenarios={result['scenario_count']} spec_hash={result['spec_hash']}" + ) + return 0 + + if args.command in {"generate-bundle", "deploy"}: + archive = _path_or_none(args.archive) + result = run_generate_bundle( + paths, + out_dir=_path_or_none(args.out_dir), + archive=archive, + spec_dir=spec_dir, + game_dir=game_dir, + ) + print( + f"[story-gen] OK generate-bundle out={result['out_dir']} " + f"scenarios={result['scenario_count']} spec_hash={result['spec_hash']}" + ) + if result["archive"] is not None: + print(f"[story-gen] archive={result['archive']}") + return 0 + + if args.command == "sync-screens": + result = run_sync_screens(paths, check_only=bool(args.check)) + mode = "check" if args.check else "write" + print( + f"[story-gen] OK sync-screens mode={mode} story={result['story_count']} " + f"story_written={result['story_written']} legacy_written={result['legacy_written']} " + f"palette={result['palette_path']} legacy_dir={result['legacy_dir']}" + ) + return 0 + + if args.command == "all": + validate = run_validate(paths, spec_dir=spec_dir, game_dir=game_dir) + cpp = run_generate_cpp( + paths, + out_dir=_path_or_none(args.cpp_out_dir), + spec_dir=spec_dir, + game_dir=game_dir, + ) + bundle = run_generate_bundle( + paths, + out_dir=_path_or_none(args.bundle_out_dir), + archive=_path_or_none(args.archive), + spec_dir=spec_dir, + game_dir=game_dir, + ) + print( + "[story-gen] OK all " + f"validate={validate['scenario_count']} cpp={cpp['scenario_count']} " + f"bundle={bundle['scenario_count']} spec_hash={cpp['spec_hash']}" + ) + if bundle["archive"] is not None: + print(f"[story-gen] archive={bundle['archive']}") + return 0 + + parser.error(f"Unknown command: {args.command}") + return 2 + except StoryGenerationError as exc: + print(f"[story-gen] ERR {exc}", file=sys.stderr) + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/generator.py b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/generator.py new file mode 100644 index 0000000..72e26d2 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/generator.py @@ -0,0 +1,1954 @@ +from __future__ import annotations + +import copy +import hashlib +import json +import tarfile +from dataclasses import dataclass +from pathlib import Path +from typing import Any + +try: + import yaml +except Exception: # pragma: no cover - dependency error surfaced at runtime + yaml = None + +try: + import yamale + from yamale.yamale_error import YamaleError +except Exception: # pragma: no cover - dependency error surfaced at runtime + yamale = None + YamaleError = Exception + +try: + from jinja2 import Environment, FileSystemLoader +except Exception: # pragma: no cover - dependency error surfaced at runtime + Environment = None + FileSystemLoader = None + + +ALLOWED_TRIGGER = {"on_event", "after_ms", "immediate"} +ALLOWED_EVENT = {"none", "unlock", "audio_done", "timer", "serial", "button", "espnow", "action"} +ALLOWED_APP = { + "LA_DETECTOR", + "AUDIO_PACK", + "SCREEN_SCENE", + "MP3_GATE", + "WIFI_STACK", + "ESPNOW_STACK", + "QR_UNLOCK_APP", +} + +EVENT_CPP = { + "none": "StoryEventType::kNone", + "unlock": "StoryEventType::kUnlock", + "audio_done": "StoryEventType::kAudioDone", + "timer": "StoryEventType::kTimer", + "serial": "StoryEventType::kSerial", + "button": "StoryEventType::kButton", + "espnow": "StoryEventType::kEspNow", + "action": "StoryEventType::kAction", +} +TRIGGER_CPP = { + "on_event": "StoryTransitionTrigger::kOnEvent", + "after_ms": "StoryTransitionTrigger::kAfterMs", + "immediate": "StoryTransitionTrigger::kImmediate", +} +APP_CPP = { + "LA_DETECTOR": "StoryAppType::kLaDetector", + "AUDIO_PACK": "StoryAppType::kAudioPack", + "SCREEN_SCENE": "StoryAppType::kScreenScene", + "MP3_GATE": "StoryAppType::kMp3Gate", + "WIFI_STACK": "StoryAppType::kWifiStack", + "ESPNOW_STACK": "StoryAppType::kEspNowStack", + "QR_UNLOCK_APP": "StoryAppType::kQrUnlockApp", +} + +ACTION_FILE_ALIASES = { + # Keep long action IDs in YAML/runtime while allowing short LittleFS filenames. + "ACTION_QR_CODE_SCANNER_START": "ACTION_QR_SCAN_START", + "ACTION_SET_BOOT_MEDIA_MANAGER": "ACTION_BOOT_MEDIA_MGR", +} + +DEFAULT_SCENE_PROFILE: dict[str, Any] = { + "title": "MISSION", + "subtitle": "", + "symbol": "RUN", + "effect": "pulse", + "effect_speed_ms": 680, + "theme": {"bg": "#07132A", "accent": "#2A76FF", "text": "#E8F1FF"}, + "transition": {"effect": "fade", "duration_ms": 240}, + "timeline": [ + { + "at_ms": 0, + "effect": "pulse", + "speed_ms": 680, + "theme": {"bg": "#07132A", "accent": "#2A76FF", "text": "#E8F1FF"}, + }, + { + "at_ms": 1400, + "effect": "blink", + "speed_ms": 360, + "theme": {"bg": "#0B1F3C", "accent": "#5A99FF", "text": "#F1F7FF"}, + }, + ], +} + +SCENE_PROFILES: dict[str, dict[str, Any]] = { + "SCENE_LOCKED": { + "title": "VERROUILLE", + "subtitle": "Attente de debloquage", + "symbol": "LOCK", + "effect": "pulse", + "effect_speed_ms": 680, + "theme": {"bg": "#08152D", "accent": "#3E8DFF", "text": "#F5F8FF"}, + "transition": {"effect": "fade", "duration_ms": 260}, + "timeline": [ + { + "at_ms": 0, + "effect": "pulse", + "speed_ms": 680, + "theme": {"bg": "#08152D", "accent": "#3E8DFF", "text": "#F5F8FF"}, + }, + { + "at_ms": 1400, + "effect": "blink", + "speed_ms": 420, + "theme": {"bg": "#0A1E3A", "accent": "#74B0FF", "text": "#F8FBFF"}, + }, + ], + }, + "SCENE_BROKEN": { + "title": "PROTO U-SON", + "subtitle": "Signal brouille", + "symbol": "ALERT", + "effect": "blink", + "effect_speed_ms": 180, + "theme": {"bg": "#2A0508", "accent": "#FF4A45", "text": "#FFF1F1"}, + "transition": {"effect": "glitch", "duration_ms": 160}, + "timeline": [ + { + "at_ms": 0, + "effect": "blink", + "speed_ms": 180, + "theme": {"bg": "#2A0508", "accent": "#FF4A45", "text": "#FFF1F1"}, + }, + { + "at_ms": 760, + "effect": "blink", + "speed_ms": 140, + "theme": {"bg": "#33070C", "accent": "#FF7A75", "text": "#FFF6F5"}, + }, + ], + }, + "SCENE_LA_DETECTOR": { + "title": "DETECTION", + "subtitle": "Balayage en cours", + "symbol": "SCAN", + "effect": "scan", + "effect_speed_ms": 960, + "theme": {"bg": "#041F1B", "accent": "#2CE5A6", "text": "#EFFFF8"}, + "transition": {"effect": "slide_up", "duration_ms": 220}, + "timeline": [ + { + "at_ms": 0, + "effect": "scan", + "speed_ms": 960, + "theme": {"bg": "#041F1B", "accent": "#2CE5A6", "text": "#EFFFF8"}, + }, + { + "at_ms": 1500, + "effect": "pulse", + "speed_ms": 620, + "theme": {"bg": "#062923", "accent": "#63F0C3", "text": "#F3FFFB"}, + }, + ], + }, + "SCENE_SEARCH": { + "title": "RECHERCHE", + "subtitle": "Analyse des indices", + "symbol": "SCAN", + "effect": "scan", + "effect_speed_ms": 920, + "theme": {"bg": "#05261F", "accent": "#35E7B0", "text": "#EFFFF8"}, + "transition": {"effect": "glitch", "duration_ms": 230}, + "timeline": [ + { + "at_ms": 0, + "effect": "scan", + "speed_ms": 920, + "theme": {"bg": "#05261F", "accent": "#35E7B0", "text": "#EFFFF8"}, + }, + { + "at_ms": 1600, + "effect": "wave", + "speed_ms": 520, + "theme": {"bg": "#07322A", "accent": "#67F0C4", "text": "#F2FFF9"}, + }, + { + "at_ms": 3000, + "effect": "scan", + "speed_ms": 820, + "theme": {"bg": "#05261F", "accent": "#35E7B0", "text": "#EFFFF8"}, + }, + ], + }, + "SCENE_CAMERA_SCAN": { + "title": "ZACUS QR VALIDATION", + "subtitle": "Scanne le QR final", + "symbol": "QR", + "effect": "none", + "effect_speed_ms": 0, + "theme": {"bg": "#102040", "accent": "#5CA3FF", "text": "#F3F7FF"}, + "transition": {"effect": "fade", "duration_ms": 180}, + "timeline": [ + { + "at_ms": 0, + "effect": "none", + "speed_ms": 0, + "theme": {"bg": "#102040", "accent": "#5CA3FF", "text": "#F3F7FF"}, + }, + ], + }, + "SCENE_MEDIA_MANAGER": { + "title": "MEDIA MANAGER", + "subtitle": "PHOTO / MP3 / STORY", + "symbol": "READY", + "effect": "radar", + "effect_speed_ms": 620, + "theme": {"bg": "#081A34", "accent": "#8BC4FF", "text": "#EAF6FF"}, + "transition": {"effect": "fade", "duration_ms": 220}, + "timeline": [ + { + "at_ms": 0, + "effect": "radar", + "speed_ms": 620, + "theme": {"bg": "#081A34", "accent": "#8BC4FF", "text": "#EAF6FF"}, + }, + { + "at_ms": 1200, + "effect": "pulse", + "speed_ms": 520, + "theme": {"bg": "#0C2448", "accent": "#A6D4FF", "text": "#F5FAFF"}, + }, + ], + }, + "SCENE_PHOTO_MANAGER": { + "title": "PHOTO MANAGER", + "subtitle": "Capture JPEG", + "symbol": "SCAN", + "effect": "none", + "effect_speed_ms": 0, + "theme": {"bg": "#0B1A2E", "accent": "#86CCFF", "text": "#EEF6FF"}, + "transition": {"effect": "fade", "duration_ms": 200}, + "timeline": [ + { + "at_ms": 0, + "effect": "none", + "speed_ms": 0, + "theme": {"bg": "#0B1A2E", "accent": "#86CCFF", "text": "#EEF6FF"}, + }, + ], + }, + "SCENE_SIGNAL_SPIKE": { + "title": "PIC DE SIGNAL", + "subtitle": "Interference soudaine detectee", + "symbol": "ALERT", + "effect": "wave", + "effect_speed_ms": 260, + "theme": {"bg": "#24090C", "accent": "#FF6A52", "text": "#FFF2EB"}, + "transition": {"effect": "glitch", "duration_ms": 170}, + "timeline": [ + { + "at_ms": 0, + "effect": "wave", + "speed_ms": 260, + "theme": {"bg": "#24090C", "accent": "#FF6A52", "text": "#FFF2EB"}, + }, + { + "at_ms": 700, + "effect": "blink", + "speed_ms": 180, + "theme": {"bg": "#2F1014", "accent": "#FF8C73", "text": "#FFF8F5"}, + }, + { + "at_ms": 1400, + "effect": "wave", + "speed_ms": 320, + "theme": {"bg": "#24090C", "accent": "#FF6A52", "text": "#FFF2EB"}, + }, + ], + }, + "SCENE_MEDIA_ARCHIVE": { + "title": "ARCHIVES MEDIA", + "subtitle": "Photos et enregistrements sauvegardes", + "symbol": "READY", + "effect": "radar", + "effect_speed_ms": 760, + "theme": {"bg": "#0D1A34", "accent": "#7CB1FF", "text": "#EEF4FF"}, + "transition": {"effect": "fade", "duration_ms": 240}, + "timeline": [ + { + "at_ms": 0, + "effect": "radar", + "speed_ms": 760, + "theme": {"bg": "#0D1A34", "accent": "#7CB1FF", "text": "#EEF4FF"}, + }, + { + "at_ms": 1000, + "effect": "pulse", + "speed_ms": 620, + "theme": {"bg": "#132245", "accent": "#9CC7FF", "text": "#F7FAFF"}, + }, + { + "at_ms": 2000, + "effect": "radar", + "speed_ms": 760, + "theme": {"bg": "#0D1A34", "accent": "#7CB1FF", "text": "#EEF4FF"}, + }, + ], + }, + "SCENE_WIN": { + "title": "VICTOIRE", + "subtitle": "Etape validee", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 420, + "theme": {"bg": "#231038", "accent": "#F4CB4A", "text": "#FFF8E2"}, + "transition": {"effect": "zoom", "duration_ms": 280}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 420, + "theme": {"bg": "#231038", "accent": "#F4CB4A", "text": "#FFF8E2"}, + }, + { + "at_ms": 1000, + "effect": "blink", + "speed_ms": 240, + "theme": {"bg": "#341A4D", "accent": "#FFE083", "text": "#FFFDF3"}, + }, + ], + }, + "SCENE_WIN_ETAPE": { + "title": "VICTOIRE", + "subtitle": "Etape validee", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 420, + "theme": {"bg": "#231038", "accent": "#F4CB4A", "text": "#FFF8E2"}, + "transition": {"effect": "zoom", "duration_ms": 280}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 420, + "theme": {"bg": "#231038", "accent": "#F4CB4A", "text": "#FFF8E2"}, + }, + { + "at_ms": 1000, + "effect": "blink", + "speed_ms": 240, + "theme": {"bg": "#341A4D", "accent": "#FFE083", "text": "#FFFDF3"}, + }, + ], + }, + "SCENE_REWARD": { + "title": "RECOMPENSE", + "subtitle": "Indice debloque", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 420, + "theme": {"bg": "#2A103E", "accent": "#F9D860", "text": "#FFF9E6"}, + "transition": {"effect": "zoom", "duration_ms": 300}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 420, + "theme": {"bg": "#2A103E", "accent": "#F9D860", "text": "#FFF9E6"}, + }, + { + "at_ms": 1200, + "effect": "pulse", + "speed_ms": 280, + "theme": {"bg": "#3E1A52", "accent": "#FFD97D", "text": "#FFFDF2"}, + }, + ], + }, + "SCENE_READY": { + "title": "PRET", + "subtitle": "Scenario termine", + "symbol": "READY", + "effect": "wave", + "effect_speed_ms": 560, + "theme": {"bg": "#0F2A12", "accent": "#6CD96B", "text": "#EDFFED"}, + "transition": {"effect": "fade", "duration_ms": 220}, + "timeline": [ + { + "at_ms": 0, + "effect": "wave", + "speed_ms": 560, + "theme": {"bg": "#0F2A12", "accent": "#6CD96B", "text": "#EDFFED"}, + }, + { + "at_ms": 1500, + "effect": "radar", + "speed_ms": 740, + "theme": {"bg": "#133517", "accent": "#9EE49D", "text": "#F4FFF4"}, + }, + ], + }, + "SCENE_U_SON_PROTO": { + "title": "PROTO U-SON", + "subtitle": "Signal brouille", + "symbol": "ALERT", + "effect": "blink", + "effect_speed_ms": 180, + "theme": {"bg": "#2A0508", "accent": "#FF4A45", "text": "#FFF1F1"}, + "transition": {"effect": "glitch", "duration_ms": 160}, + "timeline": [ + { + "at_ms": 0, + "effect": "blink", + "speed_ms": 180, + "theme": {"bg": "#2A0508", "accent": "#FF4A45", "text": "#FFF1F1"}, + }, + { + "at_ms": 900, + "effect": "scan", + "speed_ms": 520, + "theme": {"bg": "#3A0A10", "accent": "#FF7873", "text": "#FFF7F7"}, + }, + ], + }, + "SCENE_WARNING": { + "title": "ALERTE", + "subtitle": "Signal anormal", + "symbol": "WARN", + "effect": "blink", + "effect_speed_ms": 240, + "theme": {"bg": "#261209", "accent": "#FF9A4A", "text": "#FFF2E6"}, + "transition": {"effect": "fade", "duration_ms": 200}, + "timeline": [ + { + "at_ms": 0, + "effect": "blink", + "speed_ms": 240, + "theme": {"bg": "#261209", "accent": "#FF9A4A", "text": "#FFF2E6"}, + }, + { + "at_ms": 1400, + "effect": "pulse", + "speed_ms": 520, + "theme": {"bg": "#31170C", "accent": "#FFC071", "text": "#FFF8EF"}, + }, + ], + }, + "SCENE_LEFOU_DETECTOR": { + "title": "DETECTEUR LEFOU", + "subtitle": "Analyse en cours", + "symbol": "AUDIO", + "effect": "wave", + "effect_speed_ms": 460, + "theme": {"bg": "#071B1A", "accent": "#46E6C8", "text": "#E9FFF9"}, + "transition": {"effect": "zoom", "duration_ms": 250}, + "timeline": [ + { + "at_ms": 0, + "effect": "wave", + "speed_ms": 460, + "theme": {"bg": "#071B1A", "accent": "#46E6C8", "text": "#E9FFF9"}, + }, + { + "at_ms": 1200, + "effect": "radar", + "speed_ms": 620, + "theme": {"bg": "#0A2523", "accent": "#7FF2DA", "text": "#F2FFFC"}, + }, + ], + }, + "SCENE_WIN_ETAPE1": { + "title": "WIN ETAPE 1", + "subtitle": "Validation distante", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 360, + "theme": {"bg": "#1E0F32", "accent": "#F5C64A", "text": "#FFF8E4"}, + "transition": {"effect": "zoom", "duration_ms": 280}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 360, + "theme": {"bg": "#1E0F32", "accent": "#F5C64A", "text": "#FFF8E4"}, + }, + { + "at_ms": 1200, + "effect": "pulse", + "speed_ms": 260, + "theme": {"bg": "#2A1645", "accent": "#FFD97A", "text": "#FFFDF3"}, + }, + ], + }, + "SCENE_WIN_ETAPE2": { + "title": "WIN ETAPE 2", + "subtitle": "ACK en attente", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 340, + "theme": {"bg": "#220F3A", "accent": "#FFCE62", "text": "#FFF8EA"}, + "transition": {"effect": "zoom", "duration_ms": 280}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 340, + "theme": {"bg": "#220F3A", "accent": "#FFCE62", "text": "#FFF8EA"}, + }, + { + "at_ms": 1200, + "effect": "pulse", + "speed_ms": 260, + "theme": {"bg": "#2E1850", "accent": "#FFE18E", "text": "#FFFDF5"}, + }, + ], + }, + "SCENE_QR_DETECTOR": { + "title": "ZACUS QR VALIDATION", + "subtitle": "Scan du QR final", + "symbol": "QR", + "effect": "none", + "effect_speed_ms": 0, + "theme": {"bg": "#102040", "accent": "#5CA3FF", "text": "#F3F7FF"}, + "transition": {"effect": "fade", "duration_ms": 180}, + "timeline": [ + { + "at_ms": 0, + "effect": "none", + "speed_ms": 0, + "theme": {"bg": "#102040", "accent": "#5CA3FF", "text": "#F3F7FF"}, + }, + { + "at_ms": 1600, + "effect": "pulse", + "speed_ms": 520, + "theme": {"bg": "#142A52", "accent": "#8EC1FF", "text": "#FCFEFF"}, + }, + ], + }, + "SCENE_FINAL_WIN": { + "title": "FINAL WIN", + "subtitle": "Mission accomplie", + "symbol": "WIN", + "effect": "celebrate", + "effect_speed_ms": 320, + "theme": {"bg": "#1C0C2E", "accent": "#FFCC5C", "text": "#FFF7E4"}, + "transition": {"effect": "fade", "duration_ms": 240}, + "timeline": [ + { + "at_ms": 0, + "effect": "celebrate", + "speed_ms": 320, + "theme": {"bg": "#1C0C2E", "accent": "#FFCC5C", "text": "#FFF7E4"}, + }, + { + "at_ms": 1400, + "effect": "blink", + "speed_ms": 220, + "theme": {"bg": "#2A1642", "accent": "#FFE18D", "text": "#FFFDF3"}, + }, + ], + }, +} + +SCENE_ALIASES: dict[str, str] = { + "SCENE_LA_DETECT": "SCENE_LA_DETECTOR", + "SCENE_U_SON": "SCENE_U_SON_PROTO", + "SCENE_LE_FOU_DETECTOR": "SCENE_LEFOU_DETECTOR", +} + +CANONICAL_SCREEN_SCENE_IDS: tuple[str, ...] = ( + "SCENE_LOCKED", + "SCENE_BROKEN", + "SCENE_U_SON_PROTO", + "SCENE_SEARCH", + "SCENE_LA_DETECTOR", + "SCENE_LEFOU_DETECTOR", + "SCENE_WARNING", + "SCENE_CAMERA_SCAN", + "SCENE_QR_DETECTOR", + "SCENE_SIGNAL_SPIKE", + "SCENE_REWARD", + "SCENE_WIN_ETAPE1", + "SCENE_WIN_ETAPE2", + "SCENE_FINAL_WIN", + "SCENE_MEDIA_ARCHIVE", + "SCENE_READY", + "SCENE_WIN", + "SCENE_WINNER", + "SCENE_FIREWORKS", + "SCENE_WIN_ETAPE", + "SCENE_MP3_PLAYER", + "SCENE_MEDIA_MANAGER", + "SCENE_PHOTO_MANAGER", +) + +LEGACY_SCREEN_ALIASES: dict[str, str] = { + "SCENE_LA_DETECT": "SCENE_LA_DETECTOR", + "SCENE_U_SON": "SCENE_U_SON_PROTO", + "SCENE_LE_FOU_DETECTOR": "SCENE_LEFOU_DETECTOR", + "SCENE_LOCK": "SCENE_LOCKED", + "LOCKED": "SCENE_LOCKED", + "LOCK": "SCENE_LOCKED", + "SCENE_AUDIO_PLAYER": "SCENE_MP3_PLAYER", + "SCENE_MP3": "SCENE_MP3_PLAYER", +} + +_ACTIVE_SCENE_PROFILES: dict[str, dict[str, Any]] | None = None + + +def _canonical_scene_id(scene_id: str) -> str: + return SCENE_ALIASES.get(scene_id, scene_id) + + +def _scene_slug(scene_id: str) -> str: + slug = scene_id + if slug.startswith("SCENE_"): + slug = slug[6:] + return slug.lower() + +DEFAULT_TEXT_OPTIONS: dict[str, Any] = { + "show_title": False, + "show_subtitle": True, + "show_symbol": True, + "title_case": "upper", + "subtitle_case": "raw", + "title_align": "top", + "subtitle_align": "bottom", +} + +DEFAULT_FRAMING_OPTIONS: dict[str, Any] = { + "preset": "center", + "x_offset": 0, + "y_offset": 0, + "scale_pct": 100, +} + +DEFAULT_SCROLL_OPTIONS: dict[str, Any] = { + "mode": "none", + "speed_ms": 4200, + "pause_ms": 900, + "loop": True, +} + +DEFAULT_DEMO_OPTIONS: dict[str, Any] = { + "mode": "standard", + "particle_count": 4, + "strobe_level": 65, +} + +SCREEN_EFFECT_CHOICES = {"none", "pulse", "scan", "radar", "wave", "blink", "celebrate"} +SCREEN_EFFECT_ALIASES = { + "steady": "none", + "glitch": "blink", + "reward": "celebrate", + "sonar": "radar", +} +TRANSITION_EFFECT_CHOICES = {"none", "fade", "slide_left", "slide_right", "slide_up", "slide_down", "zoom", "glitch"} +TRANSITION_EFFECT_ALIASES = { + "crossfade": "fade", + "left": "slide_left", + "right": "slide_right", + "up": "slide_up", + "down": "slide_down", + "zoom_in": "zoom", + "flash": "glitch", + "wipe": "slide_left", + "camera_flash": "glitch", +} +TEXT_CASE_CHOICES = {"raw", "upper", "lower"} +TEXT_ALIGN_CHOICES = {"top", "center", "bottom"} +FRAMING_PRESET_CHOICES = {"center", "focus_top", "focus_bottom", "split"} +SCROLL_MODE_CHOICES = {"none", "marquee"} +SCROLL_MODE_ALIASES = {"ticker": "marquee", "crawl": "marquee"} +DEMO_MODE_CHOICES = {"standard", "cinematic", "arcade"} + + +class StoryGenerationError(RuntimeError): + """Raised when validation or generation fails.""" + + +@dataclass +class StoryPaths: + fw_root: Path + repo_root: Path + game_scenarios_dir: Path + story_specs_dir: Path + story_data_dir: Path + generated_cpp_dir: Path + bundle_root: Path + + +@dataclass +class ValidationIssue: + file: str + field: str + reason: str + + def format(self) -> str: + return f"{self.file}: {self.field}: {self.reason}" + + +def _require_deps() -> None: + missing = [] + if yaml is None: + missing.append("PyYAML") + if yamale is None: + missing.append("yamale") + if Environment is None or FileSystemLoader is None: + missing.append("Jinja2") + if missing: + joined = ", ".join(missing) + raise StoryGenerationError( + f"Missing dependencies: {joined}. Install with: pip install pyyaml yamale Jinja2" + ) + + +def find_fw_root() -> Path: + start = Path(__file__).resolve() + for candidate in [start, *start.parents]: + if (candidate / "platformio.ini").exists(): + return candidate + raise StoryGenerationError("Cannot resolve firmware root (platformio.ini not found)") + + +def default_paths() -> StoryPaths: + fw_root = find_fw_root() + repo_root = fw_root.parents[1] + return StoryPaths( + fw_root=fw_root, + repo_root=repo_root, + game_scenarios_dir=repo_root / "game" / "scenarios", + story_specs_dir=fw_root / "docs" / "protocols" / "story_specs" / "scenarios", + story_data_dir=fw_root / "data" / "story", + generated_cpp_dir=fw_root / "hardware" / "libs" / "story" / "src" / "generated", + bundle_root=fw_root / "artifacts" / "story_fs" / "deploy", + ) + + +def _schema_path(name: str) -> Path: + return Path(__file__).resolve().parent / "schemas" / name + + +def _template_dir() -> Path: + return Path(__file__).resolve().parent / "templates" + + +def _list_yaml_files(path: Path) -> list[Path]: + if path.is_file() and path.suffix.lower() in {".yml", ".yaml"}: + return [path] + if not path.exists(): + return [] + return sorted([p for p in path.glob("*.y*ml") if p.is_file()]) + + +def _validate_yamale(schema_path: Path, files: list[Path]) -> None: + if not files: + raise StoryGenerationError(f"No YAML files found for schema: {schema_path.name}") + schema = yamale.make_schema(str(schema_path)) + errors: list[str] = [] + for file_path in files: + data = yamale.make_data(str(file_path)) + try: + yamale.validate(schema, data, strict=True) + except YamaleError as exc: + for result in exc.results: + for msg in result.errors: + errors.append(f"{file_path}: {msg}") + if errors: + raise StoryGenerationError("Yamale validation failed:\n" + "\n".join(errors)) + + +def _load_yaml(path: Path) -> dict[str, Any]: + obj = yaml.safe_load(path.read_text(encoding="utf-8")) + if not isinstance(obj, dict): + raise StoryGenerationError(f"YAML root must be a mapping: {path}") + return obj + + +def _active_scene_profiles() -> dict[str, dict[str, Any]]: + return _ACTIVE_SCENE_PROFILES if _ACTIVE_SCENE_PROFILES is not None else SCENE_PROFILES + + +def _build_default_scene_profiles() -> dict[str, dict[str, Any]]: + profiles: dict[str, dict[str, Any]] = {} + for scene_id in CANONICAL_SCREEN_SCENE_IDS: + base = SCENE_PROFILES.get(scene_id) + if base is None: + fallback = copy.deepcopy(DEFAULT_SCENE_PROFILE) + fallback["title"] = scene_id.replace("SCENE_", "").replace("_", " ") + fallback["subtitle"] = "" + fallback["symbol"] = "RUN" + fallback["effect"] = "pulse" + base = fallback + profiles[scene_id] = copy.deepcopy(base) + return profiles + + +def _deep_merge_dict(base: dict[str, Any], override: dict[str, Any]) -> dict[str, Any]: + for key, value in override.items(): + if isinstance(value, dict) and isinstance(base.get(key), dict): + base[key] = _deep_merge_dict(dict(base[key]), value) + else: + base[key] = copy.deepcopy(value) + return base + + +def _palette_path(paths: StoryPaths) -> Path: + return paths.story_data_dir / "palette" / "screens_palette_v3.yaml" + + +def _load_scene_profiles(paths: StoryPaths) -> dict[str, dict[str, Any]]: + profiles = _build_default_scene_profiles() + palette_path = _palette_path(paths) + if not palette_path.exists(): + return profiles + + payload = _load_yaml(palette_path) + scenes_payload = payload.get("scenes") + if not isinstance(scenes_payload, dict): + raise StoryGenerationError(f"Invalid palette file {palette_path}: missing mapping 'scenes'") + + missing: list[str] = [] + for scene_id in CANONICAL_SCREEN_SCENE_IDS: + override = scenes_payload.get(scene_id) + if not isinstance(override, dict): + missing.append(scene_id) + continue + profiles[scene_id] = _deep_merge_dict(copy.deepcopy(profiles[scene_id]), override) + + if missing: + raise StoryGenerationError( + f"Palette {palette_path} missing canonical scene profiles: {', '.join(sorted(missing))}" + ) + + for scene_id, override in scenes_payload.items(): + if not isinstance(scene_id, str) or not isinstance(override, dict): + continue + if scene_id in profiles: + continue + fallback = _build_default_scene_profiles().get(scene_id, copy.deepcopy(DEFAULT_SCENE_PROFILE)) + profiles[scene_id] = _deep_merge_dict(copy.deepcopy(fallback), override) + + return profiles + + +def _activate_scene_profiles(paths: StoryPaths) -> dict[str, dict[str, Any]]: + global _ACTIVE_SCENE_PROFILES + _ACTIVE_SCENE_PROFILES = _load_scene_profiles(paths) + return _ACTIVE_SCENE_PROFILES + + +def _normalize_scene_id(value: Any, issues: list[ValidationIssue], source: str) -> str: + scene_id = str(value).strip() if isinstance(value, str) else "" + if not scene_id: + return "" + scene_id = _canonical_scene_id(scene_id) + if scene_id not in _active_scene_profiles(): + issues.append(ValidationIssue(source, "screen_scene_id", f"unknown scene id '{scene_id}'")) + return "" + return scene_id + + +def _normalize_story_specs(files: list[Path]) -> list[dict[str, Any]]: + issues: list[ValidationIssue] = [] + scenarios: list[dict[str, Any]] = [] + ids: set[str] = set() + + for file_path in files: + raw = _load_yaml(file_path) + sid = str(raw.get("id", "")).strip() + if not sid: + issues.append(ValidationIssue(str(file_path), "id", "missing id")) + continue + if sid in ids: + issues.append(ValidationIssue(str(file_path), "id", f"duplicate id '{sid}'")) + continue + ids.add(sid) + + version = raw.get("version", 0) + if not isinstance(version, int): + issues.append(ValidationIssue(str(file_path), "version", "must be int")) + continue + + initial_step = str(raw.get("initial_step", "")).strip() + bindings_raw = raw.get("app_bindings", []) + steps_raw = raw.get("steps", []) + if not isinstance(bindings_raw, list) or not isinstance(steps_raw, list): + issues.append(ValidationIssue(str(file_path), "root", "app_bindings and steps must be lists")) + continue + + bindings: list[dict[str, Any]] = [] + binding_ids: set[str] = set() + for idx, binding in enumerate(bindings_raw): + if not isinstance(binding, dict): + issues.append(ValidationIssue(str(file_path), f"app_bindings[{idx}]", "must be mapping")) + continue + bid = str(binding.get("id", "")).strip() + app = str(binding.get("app", "")).strip() + if not bid: + issues.append(ValidationIssue(str(file_path), f"app_bindings[{idx}].id", "missing id")) + continue + if app not in ALLOWED_APP: + issues.append( + ValidationIssue(str(file_path), f"app_bindings[{idx}].app", f"invalid app '{app}'") + ) + continue + if bid in binding_ids: + issues.append(ValidationIssue(str(file_path), f"app_bindings[{idx}].id", f"duplicate '{bid}'")) + continue + binding_ids.add(bid) + + config = binding.get("config") if isinstance(binding.get("config"), dict) else None + if app == "LA_DETECTOR": + hold_ms = 3000 + unlock_event = "UNLOCK" + require_listening = True + if config is not None: + hold_raw = config.get("hold_ms", hold_ms) + if isinstance(hold_raw, int): + hold_ms = hold_raw + unlock_raw = config.get("unlock_event", unlock_event) + if isinstance(unlock_raw, str) and unlock_raw.strip(): + unlock_event = unlock_raw.strip() + listen_raw = config.get("require_listening", require_listening) + if isinstance(listen_raw, bool): + require_listening = listen_raw + config = { + "hold_ms": hold_ms, + "unlock_event": unlock_event, + "require_listening": require_listening, + } + else: + config = None + + bindings.append({"id": bid, "app": app, "config": config}) + + steps: list[dict[str, Any]] = [] + step_ids: set[str] = set() + for sidx, step in enumerate(steps_raw): + if not isinstance(step, dict): + issues.append(ValidationIssue(str(file_path), f"steps[{sidx}]", "must be mapping")) + continue + step_id = str(step.get("step_id", "")).strip() + if not step_id: + issues.append(ValidationIssue(str(file_path), f"steps[{sidx}].step_id", "missing step_id")) + continue + if step_id in step_ids: + issues.append(ValidationIssue(str(file_path), f"steps[{sidx}].step_id", f"duplicate '{step_id}'")) + continue + step_ids.add(step_id) + + apps = [str(v).strip() for v in (step.get("apps") or []) if str(v).strip()] + for app_id in apps: + if app_id not in binding_ids: + issues.append( + ValidationIssue( + str(file_path), + f"steps[{sidx}].apps", + f"unknown app binding '{app_id}'", + ) + ) + + transitions_norm: list[dict[str, Any]] = [] + for tidx, transition in enumerate(step.get("transitions") or []): + if not isinstance(transition, dict): + issues.append( + ValidationIssue(str(file_path), f"steps[{sidx}].transitions[{tidx}]", "must be mapping") + ) + continue + trigger = str(transition.get("trigger", "on_event")).strip().lower() + event_type = str(transition.get("event_type", "none")).strip().lower() + if event_type == "esp_now": + event_type = "espnow" + event_name = str(transition.get("event_name", "")).strip() + target_step_id = str(transition.get("target_step_id", "")).strip() + after_ms = transition.get("after_ms", 0) + priority = transition.get("priority", 0) + debug_only = bool(transition.get("debug_only", False)) + tr_id = str(transition.get("id", "")).strip() + if not tr_id: + tr_id = f"TR_{step_id}_{tidx + 1}" + if trigger not in ALLOWED_TRIGGER: + issues.append( + ValidationIssue( + str(file_path), + f"steps[{sidx}].transitions[{tidx}].trigger", + f"invalid trigger '{trigger}'", + ) + ) + if event_type not in ALLOWED_EVENT: + issues.append( + ValidationIssue( + str(file_path), + f"steps[{sidx}].transitions[{tidx}].event_type", + f"invalid event_type '{event_type}'", + ) + ) + if not isinstance(after_ms, int): + issues.append( + ValidationIssue( + str(file_path), + f"steps[{sidx}].transitions[{tidx}].after_ms", + "must be int", + ) + ) + after_ms = 0 + if not isinstance(priority, int): + issues.append( + ValidationIssue( + str(file_path), + f"steps[{sidx}].transitions[{tidx}].priority", + "must be int", + ) + ) + priority = 0 + + transitions_norm.append( + { + "id": tr_id, + "trigger": trigger, + "event_type": event_type, + "event_name": event_name, + "target_step_id": target_step_id, + "after_ms": after_ms, + "priority": priority, + "debug_only": debug_only, + } + ) + + raw_scene_id = str(step.get("screen_scene_id", "")).strip() + normalized_scene_id = _normalize_scene_id(raw_scene_id, issues, str(file_path)) + actions = [str(v).strip() for v in (step.get("actions") or []) if str(v).strip()] + steps.append( + { + "step_id": step_id, + "screen_scene_id": normalized_scene_id, + "audio_pack_id": str(step.get("audio_pack_id", "")).strip(), + "actions": actions, + "apps": apps, + "mp3_gate_open": bool(step.get("mp3_gate_open", False)), + "transitions": transitions_norm, + } + ) + + if initial_step and initial_step not in step_ids: + issues.append(ValidationIssue(str(file_path), "initial_step", f"unknown step '{initial_step}'")) + + for step in steps: + for transition in step["transitions"]: + if transition["target_step_id"] and transition["target_step_id"] not in step_ids: + issues.append( + ValidationIssue( + str(file_path), + f"steps[{step['step_id']}].transitions[{transition['id']}].target_step_id", + f"unknown target '{transition['target_step_id']}'", + ) + ) + + scenarios.append( + { + "id": sid, + "version": version, + "estimated_duration_s": int(raw.get("estimated_duration_s", 0) or 0), + "debug_transition_bypass_enabled": bool(raw.get("debug_transition_bypass_enabled", False)), + "initial_step": initial_step, + "app_bindings": bindings, + "steps": steps, + "source": str(file_path), + } + ) + + if issues: + formatted = "\n".join(issue.format() for issue in issues) + raise StoryGenerationError("Story semantic validation failed:\n" + formatted) + + scenarios.sort(key=lambda item: item["id"]) + return scenarios + + +def _validate_game_scenarios(game_scenario_files: list[Path]) -> list[str]: + ids: list[str] = [] + for file_path in game_scenario_files: + doc = _load_yaml(file_path) + sid = str(doc.get("id", "")).strip() + if sid: + ids.append(sid) + return sorted(ids) + + +def _classify_game_yaml(file_path: Path) -> str: + doc = _load_yaml(file_path) + has_runtime = bool(doc.get("initial_step")) and isinstance(doc.get("steps"), list) + has_narrative = bool(doc.get("title")) and isinstance(doc.get("stations"), list) + has_template = isinstance(doc.get("prompt_input"), dict) + has_workbench = isinstance(doc.get("meta"), dict) and isinstance(doc.get("scenes"), list) + if has_workbench and not has_runtime and not has_narrative and not has_template: + return "workbench" + if has_workbench and (has_runtime or has_narrative or has_template): + raise StoryGenerationError( + f"Ambiguous game scenario type in {file_path}: workbench mixed with runtime/narrative/template keys detected" + ) + if has_template and not has_runtime and not has_narrative: + return "template" + if has_runtime and has_narrative: + raise StoryGenerationError(f"Ambiguous game scenario type in {file_path}: both runtime and narrative keys detected") + if has_runtime: + return "runtime" + if has_narrative: + return "narrative" + raise StoryGenerationError(f"Unknown game scenario format in {file_path}: cannot detect runtime/narrative/template") + + +def _canonical_yaml_payload(path: Path) -> str: + data = _load_yaml(path) + return json.dumps(data, sort_keys=True, separators=(",", ":")) + + +def _validate_runtime_mirror(spec_files: list[Path], runtime_game_files: list[Path]) -> None: + spec_by_id: dict[str, Path] = {} + for spec_file in spec_files: + scenario_id = str(_load_yaml(spec_file).get("id", "")).strip() + if scenario_id: + spec_by_id[scenario_id] = spec_file + + runtime_by_id: dict[str, Path] = {} + for runtime_file in runtime_game_files: + scenario_id = str(_load_yaml(runtime_file).get("id", "")).strip() + if scenario_id: + runtime_by_id[scenario_id] = runtime_file + + if "DEFAULT" not in spec_by_id or "DEFAULT" not in runtime_by_id: + raise StoryGenerationError("Strict mirror requires DEFAULT runtime YAML in both docs/protocols and game/scenarios") + + for scenario_id, runtime_file in runtime_by_id.items(): + spec_file = spec_by_id.get(scenario_id) + if spec_file is None: + continue + if _canonical_yaml_payload(runtime_file) != _canonical_yaml_payload(spec_file): + raise StoryGenerationError( + "Runtime YAML mirror mismatch for scenario " + f"{scenario_id}: {runtime_file} != {spec_file}" + ) + + +def _build_runtime_story_file_set(spec_files: list[Path], runtime_game_files: list[Path]) -> list[Path]: + selected: dict[str, Path] = {} + for spec_file in spec_files: + scenario_id = str(_load_yaml(spec_file).get("id", "")).strip() + if scenario_id: + selected[scenario_id] = spec_file + for runtime_file in runtime_game_files: + scenario_id = str(_load_yaml(runtime_file).get("id", "")).strip() + if scenario_id: + selected[scenario_id] = runtime_file + return [selected[key] for key in sorted(selected.keys())] + + +def _sha_hex(payload: bytes) -> str: + return hashlib.sha256(payload).hexdigest() + + +def _story_spec_hash(scenarios: list[dict[str, Any]]) -> str: + canonical = json.dumps(scenarios, sort_keys=True, separators=(",", ":")) + return _sha_hex(canonical.encode("utf-8"))[:12] + + +def _create_cpp_context(scenarios: list[dict[str, Any]], spec_hash: str) -> dict[str, Any]: + normalized: list[dict[str, Any]] = [] + for sidx, scenario in enumerate(scenarios): + step_entries: list[dict[str, Any]] = [] + for tidx, step in enumerate(scenario["steps"]): + prefix = f"kSc{sidx}St{tidx}" + transitions: list[dict[str, Any]] = [] + for transition in step["transitions"]: + transitions.append( + { + "id": transition["id"], + "trigger_cpp": TRIGGER_CPP.get(transition["trigger"], "StoryTransitionTrigger::kOnEvent"), + "event_cpp": EVENT_CPP.get(transition["event_type"], "StoryEventType::kNone"), + "event_name": transition["event_name"], + "after_ms": max(0, int(transition["after_ms"])), + "target_step_id": transition["target_step_id"], + "priority": max(0, int(transition["priority"])), + "debug_only": "true" if transition.get("debug_only", False) else "false", + } + ) + step_entries.append( + { + "prefix": prefix, + "id": step["step_id"], + "screen_scene_id": step["screen_scene_id"] or "nullptr", + "audio_pack_id": step["audio_pack_id"] or "nullptr", + "actions": step["actions"], + "apps": step["apps"], + "transitions": transitions, + "mp3_gate_open": "true" if step["mp3_gate_open"] else "false", + } + ) + normalized.append( + { + "index": sidx, + "id": scenario["id"], + "version": scenario["version"], + "initial_step": scenario["initial_step"], + "steps": step_entries, + } + ) + + app_bindings: dict[str, dict[str, Any]] = {} + for scenario in scenarios: + for binding in scenario["app_bindings"]: + app_bindings[binding["id"]] = binding + app_entries = [ + { + "id": app_id, + "app_cpp": APP_CPP[binding["app"]], + "la_config": binding.get("config") if binding["app"] == "LA_DETECTOR" else None, + } + for app_id, binding in sorted(app_bindings.items(), key=lambda item: item[0]) + ] + + return { + "spec_hash": spec_hash, + "scenario_count": len(scenarios), + "scenarios": normalized, + "app_entries": app_entries, + } + + +def _render_template(template_name: str, context: dict[str, Any]) -> str: + env = Environment(loader=FileSystemLoader(str(_template_dir())), trim_blocks=True, lstrip_blocks=True) + template = env.get_template(template_name) + return template.render(**context).rstrip() + "\n" + + +def _write_text(path: Path, content: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def generate_cpp_files(scenarios: list[dict[str, Any]], out_dir: Path) -> str: + spec_hash = _story_spec_hash(scenarios) + context = _create_cpp_context(scenarios, spec_hash) + _write_text(out_dir / "scenarios_gen.h", _render_template("scenarios_gen.h.j2", context)) + _write_text(out_dir / "scenarios_gen.cpp", _render_template("scenarios_gen.cpp.j2", context)) + _write_text(out_dir / "apps_gen.h", _render_template("apps_gen.h.j2", context)) + _write_text(out_dir / "apps_gen.cpp", _render_template("apps_gen.cpp.j2", context)) + return spec_hash + + +def _json_compact(payload: dict[str, Any]) -> bytes: + return json.dumps(payload, sort_keys=True, separators=(",", ":")).encode("utf-8") + + +def _write_json_with_checksum(root: Path, rel_path: str, payload: dict[str, Any]) -> None: + blob = _json_compact(payload) + out_path = root / rel_path + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_bytes(blob) + (out_path.with_suffix(".sha256")).write_text(_sha_hex(blob) + "\n", encoding="utf-8") + + +def _resource_slug(resource_id: str, prefix: str) -> str: + slug = resource_id + if slug.startswith(prefix): + slug = slug[len(prefix) :] + return slug.lower() + + +def _resource_candidates(resource_root: Path, resource_type: str, resource_id: str) -> list[Path]: + candidates: list[Path] = [] + base = resource_root / resource_type + candidates.append(base / f"{resource_id}.json") + candidates.append(base / f"{resource_id.lower()}.json") + + if resource_type == "screens": + slug = _resource_slug(resource_id, "SCENE_") + candidates.append(base / f"{slug}.json") + elif resource_type == "audio": + slug = _resource_slug(resource_id, "PACK_") + candidates.append(base / f"{slug}.json") + elif resource_type == "actions": + alias = ACTION_FILE_ALIASES.get(resource_id) + if alias: + candidates.append(base / f"{alias}.json") + candidates.append(base / f"{alias.lower()}.json") + + # de-duplicate while preserving order + dedup: list[Path] = [] + seen: set[str] = set() + for path in candidates: + marker = str(path) + if marker in seen: + continue + seen.add(marker) + dedup.append(path) + return dedup + + +def _load_resource_payload( + resource_root: Path | None, resource_type: str, resource_id: str, required: bool = False +) -> dict[str, Any] | None: + if resource_root is None: + if required: + raise StoryGenerationError(f"Missing required {resource_type} resource '{resource_id}'") + return None + for path in _resource_candidates(resource_root, resource_type, resource_id): + if not path.exists(): + continue + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except json.JSONDecodeError as exc: + raise StoryGenerationError(f"Invalid JSON resource {path}: {exc}") from exc + if not isinstance(payload, dict): + raise StoryGenerationError(f"Invalid resource type in {path}: expected object") + return payload + if required: + raise StoryGenerationError(f"Missing required {resource_type} resource '{resource_id}'") + return None + + +def _merge_app_payload(source_payload: dict[str, Any] | None, binding: dict[str, Any]) -> dict[str, Any]: + merged: dict[str, Any] = dict(source_payload or {}) + merged["id"] = binding["id"] + merged["app"] = binding["app"] + + binding_config = binding.get("config") + if binding_config is not None: + existing_config = merged.get("config") + if isinstance(existing_config, dict): + config = dict(existing_config) + else: + config = {} + config.update(binding_config) + merged["config"] = config + return merged + + +def _with_resource_id(payload: dict[str, Any] | None, resource_id: str) -> dict[str, Any]: + result = dict(payload or {}) + result["id"] = resource_id + return result + + +def _scene_profile(scene_id: str) -> dict[str, Any]: + profile = _active_scene_profiles().get(scene_id, DEFAULT_SCENE_PROFILE) + return copy.deepcopy(profile) + + +def _as_positive_int(value: Any, default_value: int) -> int: + try: + parsed = int(value) + except (TypeError, ValueError): + return default_value + if parsed < 0: + return 0 + return parsed + + +def _as_int_in_range(value: Any, default_value: int, min_value: int, max_value: int) -> int: + try: + parsed = int(value) + except (TypeError, ValueError): + parsed = default_value + if parsed < min_value: + return min_value + if parsed > max_value: + return max_value + return parsed + + +def _as_bool(value: Any, default_value: bool) -> bool: + if isinstance(value, bool): + return value + if isinstance(value, str): + normalized = value.strip().lower() + if normalized in {"1", "true", "yes", "on"}: + return True + if normalized in {"0", "false", "no", "off"}: + return False + return default_value + + +def _as_choice(value: Any, allowed: set[str], default_value: str) -> str: + if isinstance(value, str): + normalized = value.strip().lower().replace("-", "_") + if normalized in allowed: + return normalized + return default_value + + +def _normalize_screen_effect(value: Any, default_value: str) -> str: + if isinstance(value, str): + normalized = value.strip().lower().replace("-", "_") + normalized = SCREEN_EFFECT_ALIASES.get(normalized, normalized) + if normalized in SCREEN_EFFECT_CHOICES: + return normalized + if any(token in normalized for token in ("scan", "radar", "wave", "sonar")): + return "scan" + return "pulse" + return _as_choice(default_value, SCREEN_EFFECT_CHOICES, "pulse") + + +def _normalize_transition_effect(value: Any, default_value: str) -> str: + if isinstance(value, str): + normalized = value.strip().lower().replace("-", "_") + normalized = TRANSITION_EFFECT_ALIASES.get(normalized, normalized) + if normalized in TRANSITION_EFFECT_CHOICES: + return normalized + return _as_choice(default_value, TRANSITION_EFFECT_CHOICES, "fade") + + +def _normalize_theme(theme_payload: Any, fallback_theme: dict[str, str]) -> dict[str, str]: + theme: dict[str, str] = { + "bg": fallback_theme["bg"], + "accent": fallback_theme["accent"], + "text": fallback_theme["text"], + } + if isinstance(theme_payload, dict): + for key in ("bg", "accent", "text"): + value = theme_payload.get(key) + if isinstance(value, str) and value.strip(): + theme[key] = value.strip() + return theme + + +def _normalize_text_options(payload: Any, profile: dict[str, Any]) -> dict[str, Any]: + base = dict(DEFAULT_TEXT_OPTIONS) + profile_options = profile.get("text") + if isinstance(profile_options, dict): + base.update(profile_options) + src = payload if isinstance(payload, dict) else {} + + return { + "show_title": _as_bool(src.get("show_title"), _as_bool(base.get("show_title"), False)), + "show_subtitle": _as_bool(src.get("show_subtitle"), _as_bool(base.get("show_subtitle"), True)), + "show_symbol": _as_bool(src.get("show_symbol"), _as_bool(base.get("show_symbol"), True)), + "title_case": _as_choice( + src.get("title_case"), + TEXT_CASE_CHOICES, + _as_choice(base.get("title_case"), TEXT_CASE_CHOICES, "upper"), + ), + "subtitle_case": _as_choice( + src.get("subtitle_case"), + TEXT_CASE_CHOICES, + _as_choice(base.get("subtitle_case"), TEXT_CASE_CHOICES, "raw"), + ), + "title_align": _as_choice( + src.get("title_align"), + TEXT_ALIGN_CHOICES, + _as_choice(base.get("title_align"), TEXT_ALIGN_CHOICES, "top"), + ), + "subtitle_align": _as_choice( + src.get("subtitle_align"), + TEXT_ALIGN_CHOICES, + _as_choice(base.get("subtitle_align"), TEXT_ALIGN_CHOICES, "bottom"), + ), + } + + +def _normalize_framing_options(payload: Any, profile: dict[str, Any]) -> dict[str, Any]: + base = dict(DEFAULT_FRAMING_OPTIONS) + profile_options = profile.get("framing") + if isinstance(profile_options, dict): + base.update(profile_options) + src = payload if isinstance(payload, dict) else {} + + return { + "preset": _as_choice( + src.get("preset"), + FRAMING_PRESET_CHOICES, + _as_choice(base.get("preset"), FRAMING_PRESET_CHOICES, "center"), + ), + "x_offset": _as_int_in_range(src.get("x_offset"), int(base.get("x_offset", 0)), -80, 80), + "y_offset": _as_int_in_range(src.get("y_offset"), int(base.get("y_offset", 0)), -80, 80), + "scale_pct": _as_int_in_range(src.get("scale_pct"), int(base.get("scale_pct", 100)), 60, 140), + } + + +def _normalize_scroll_options(payload: Any, profile: dict[str, Any]) -> dict[str, Any]: + base = dict(DEFAULT_SCROLL_OPTIONS) + profile_options = profile.get("scroll") + if isinstance(profile_options, dict): + base.update(profile_options) + src = payload if isinstance(payload, dict) else {} + + mode_value = src.get("mode") + if isinstance(mode_value, str): + normalized_mode = mode_value.strip().lower().replace("-", "_") + mode_value = SCROLL_MODE_ALIASES.get(normalized_mode, normalized_mode) + mode = _as_choice(mode_value, SCROLL_MODE_CHOICES, _as_choice(base.get("mode"), SCROLL_MODE_CHOICES, "none")) + return { + "mode": mode, + "speed_ms": _as_int_in_range(src.get("speed_ms"), int(base.get("speed_ms", 4200)), 600, 20000), + "pause_ms": _as_int_in_range(src.get("pause_ms"), int(base.get("pause_ms", 900)), 0, 10000), + "loop": _as_bool(src.get("loop"), _as_bool(base.get("loop"), True)), + } + + +def _normalize_demo_options(payload: Any, profile: dict[str, Any]) -> dict[str, Any]: + base = dict(DEFAULT_DEMO_OPTIONS) + profile_options = profile.get("demo") + if isinstance(profile_options, dict): + base.update(profile_options) + src = payload if isinstance(payload, dict) else {} + + return { + "mode": _as_choice( + src.get("mode"), + DEMO_MODE_CHOICES, + _as_choice(base.get("mode"), DEMO_MODE_CHOICES, "standard"), + ), + "particle_count": _as_int_in_range(src.get("particle_count"), int(base.get("particle_count", 4)), 0, 4), + "strobe_level": _as_int_in_range(src.get("strobe_level"), int(base.get("strobe_level", 65)), 0, 100), + } + + +def _normalize_screen_timeline(payload: dict[str, Any], profile: dict[str, Any]) -> dict[str, Any]: + timeline_source = payload.get("timeline") + visual_source = payload.get("visual") + timeline_obj: dict[str, Any] | None = None + if isinstance(timeline_source, dict): + timeline_obj = timeline_source + elif isinstance(visual_source, dict) and isinstance(visual_source.get("timeline"), dict): + timeline_obj = visual_source.get("timeline") + + timeline_nodes: list[Any] = [] + if isinstance(timeline_source, list): + timeline_nodes = list(timeline_source) + elif isinstance(timeline_obj, dict): + keyframes = timeline_obj.get("keyframes") + if isinstance(keyframes, list): + timeline_nodes = list(keyframes) + elif isinstance(timeline_obj.get("frames"), list): + timeline_nodes = list(timeline_obj.get("frames")) + elif isinstance(visual_source, dict) and isinstance(visual_source.get("timeline"), list): + timeline_nodes = list(visual_source.get("timeline")) + + default_frames = profile["timeline"] + base_theme = _normalize_theme(payload.get("theme"), profile["theme"]) + base_effect = _normalize_screen_effect(payload.get("effect"), str(profile["effect"])) + visual = payload.get("visual") + if isinstance(visual, dict): + base_speed = _as_positive_int(visual.get("effect_speed_ms"), profile["effect_speed_ms"]) + else: + base_speed = profile["effect_speed_ms"] + base_speed = _as_positive_int(payload.get("effect_speed_ms"), base_speed) + if base_speed <= 0: + base_speed = profile["effect_speed_ms"] + + normalized_frames: list[dict[str, Any]] = [] + if not timeline_nodes: + timeline_nodes = copy.deepcopy(default_frames) + + prev_at = 0 + prev_effect = base_effect + prev_speed = base_speed + prev_theme = dict(base_theme) + for frame in timeline_nodes: + if not isinstance(frame, dict): + continue + at_value = frame.get("at_ms", frame.get("time_ms", frame.get("t", prev_at))) + at_ms = _as_positive_int(at_value, prev_at) + if at_ms < prev_at: + at_ms = prev_at + + effect = _normalize_screen_effect(frame.get("effect", frame.get("fx", prev_effect)), prev_effect) + + speed_value = frame.get("speed_ms", frame.get("effect_speed_ms", frame.get("speed", prev_speed))) + speed_ms = _as_positive_int(speed_value, prev_speed) + if speed_ms <= 0: + speed_ms = prev_speed + + theme_payload = frame.get("theme") + if not isinstance(theme_payload, dict): + theme_payload = { + "bg": frame.get("bg"), + "accent": frame.get("accent"), + "text": frame.get("text"), + } + theme = _normalize_theme(theme_payload, prev_theme) + + normalized_frames.append( + { + "at_ms": at_ms, + "effect": effect, + "speed_ms": speed_ms, + "theme": theme, + } + ) + prev_at = at_ms + prev_effect = effect + prev_speed = speed_ms + prev_theme = dict(theme) + + if not normalized_frames: + normalized_frames = copy.deepcopy(default_frames) + + if normalized_frames[0]["at_ms"] != 0: + first = copy.deepcopy(normalized_frames[0]) + first["at_ms"] = 0 + normalized_frames.insert(0, first) + + if len(normalized_frames) == 1: + extra = copy.deepcopy(normalized_frames[0]) + extra["at_ms"] = max(1000, normalized_frames[0]["at_ms"] + 1000) + normalized_frames.append(extra) + + duration_ms = normalized_frames[-1]["at_ms"] + if timeline_obj is not None: + duration_ms = max(duration_ms, _as_positive_int(timeline_obj.get("duration_ms"), duration_ms)) + if duration_ms < 100: + duration_ms = 100 + + loop = True + if timeline_obj is not None and isinstance(timeline_obj.get("loop"), bool): + loop = bool(timeline_obj.get("loop")) + + return { + "loop": loop, + "duration_ms": duration_ms, + "keyframes": normalized_frames, + } + + +def _normalize_screen_payload(source_payload: dict[str, Any] | None, scene_id: str) -> dict[str, Any]: + payload: dict[str, Any] = dict(source_payload or {}) + payload["id"] = scene_id + + profile = _scene_profile(scene_id) + + for text_field in ("title", "subtitle", "symbol", "effect"): + value = payload.get(text_field) + if not isinstance(value, str) or not value.strip(): + payload[text_field] = profile[text_field] + payload["effect"] = _normalize_screen_effect(payload.get("effect"), str(profile["effect"])) + + text_options = _normalize_text_options(payload.get("text"), profile) + payload["text"] = text_options + + visual = payload.get("visual") + if not isinstance(visual, dict): + visual = {} + visual["show_title"] = text_options["show_title"] + visual["show_subtitle"] = text_options["show_subtitle"] + visual["show_symbol"] = text_options["show_symbol"] + visual["effect_speed_ms"] = _as_positive_int(visual.get("effect_speed_ms"), profile["effect_speed_ms"]) + if visual["effect_speed_ms"] <= 0: + visual["effect_speed_ms"] = profile["effect_speed_ms"] + payload["visual"] = visual + + payload["theme"] = _normalize_theme(payload.get("theme"), profile["theme"]) + payload["framing"] = _normalize_framing_options(payload.get("framing"), profile) + payload["scroll"] = _normalize_scroll_options(payload.get("scroll"), profile) + payload["demo"] = _normalize_demo_options(payload.get("demo"), profile) + + transition = payload.get("transition") + if isinstance(transition, str): + transition = {"effect": transition} + if not isinstance(transition, dict): + transition = {} + default_transition = profile["transition"] + effect = transition.get("effect", transition.get("type", default_transition["effect"])) + transition["effect"] = _normalize_transition_effect(effect, str(default_transition["effect"])) + transition["duration_ms"] = _as_positive_int(transition.get("duration_ms"), default_transition["duration_ms"]) + if transition["duration_ms"] <= 0: + transition["duration_ms"] = default_transition["duration_ms"] + payload["transition"] = transition + + payload["timeline"] = _normalize_screen_timeline(payload, profile) + return payload + + +def _load_screen_payload_with_legacy_fallback( + resource_root: Path | None, screen_id: str +) -> tuple[dict[str, Any] | None, bool]: + source_payload = _load_resource_payload(resource_root, "screens", screen_id, required=False) + if source_payload is not None: + return source_payload, False + if screen_id in _active_scene_profiles(): + # Legacy bundles may omit some known screen JSON files. For those scenes, + # generate payloads from profile defaults instead of failing hard. + return None, True + raise StoryGenerationError(f"Missing required screens resource '{screen_id}'") + + +def generate_bundle_files( + scenarios: list[dict[str, Any]], + out_dir: Path, + spec_hash: str, + resource_root: Path | None = None, +) -> None: + resources: dict[str, set[str]] = { + "screens": set(), + "audio": set(), + "actions": set(), + "apps": set(), + } + autogenerated_screens: list[str] = [] + bindings: dict[str, dict[str, Any]] = {} + + for scenario in scenarios: + scenario_payload = { + "id": scenario["id"], + "version": scenario["version"], + "estimated_duration_s": scenario.get("estimated_duration_s", 0), + "debug_transition_bypass_enabled": bool(scenario.get("debug_transition_bypass_enabled", False)), + "initial_step": scenario["initial_step"], + "app_bindings": scenario["app_bindings"], + "steps": scenario["steps"], + } + _write_json_with_checksum(out_dir, f"story/scenarios/{scenario['id']}.json", scenario_payload) + + for binding in scenario["app_bindings"]: + resources["apps"].add(binding["id"]) + bindings[binding["id"]] = { + "id": binding["id"], + "app": binding["app"], + "config": binding.get("config"), + } + + for step in scenario["steps"]: + if step["screen_scene_id"]: + resources["screens"].add(step["screen_scene_id"]) + if step["audio_pack_id"]: + resources["audio"].add(step["audio_pack_id"]) + for action in step["actions"]: + resources["actions"].add(action) + + for app_id in sorted(resources["apps"]): + binding = bindings[app_id] + source_payload = _load_resource_payload(resource_root, "apps", app_id) + app_payload = _merge_app_payload(source_payload, binding) + _write_json_with_checksum(out_dir, f"story/apps/{app_id}.json", app_payload) + + for screen_id in sorted(resources["screens"]): + source_payload, autogenerated = _load_screen_payload_with_legacy_fallback(resource_root, screen_id) + payload = _normalize_screen_payload(source_payload, screen_id) + _write_json_with_checksum(out_dir, f"story/screens/{screen_id}.json", payload) + if autogenerated: + autogenerated_screens.append(screen_id) + + for audio_id in sorted(resources["audio"]): + source_payload = _load_resource_payload(resource_root, "audio", audio_id) + payload = _with_resource_id(source_payload, audio_id) + _write_json_with_checksum(out_dir, f"story/audio/{audio_id}.json", payload) + + for action_id in sorted(resources["actions"]): + source_payload = _load_resource_payload(resource_root, "actions", action_id) + payload = _with_resource_id(source_payload, action_id) + _write_json_with_checksum(out_dir, f"story/actions/{action_id}.json", payload) + + manifest = { + "spec_hash": spec_hash, + "scenarios": [scenario["id"] for scenario in scenarios], + "resource_counts": {key: len(values) for key, values in resources.items()}, + "autogenerated_resources": { + "screens": autogenerated_screens, + }, + } + _write_json_with_checksum(out_dir, "story/manifest.json", manifest) + + +def create_archive(root: Path, archive_path: Path) -> None: + archive_path.parent.mkdir(parents=True, exist_ok=True) + with tarfile.open(archive_path, "w:gz") as tar: + for path in sorted(root.rglob("*")): + if path.is_file(): + tar.add(path, arcname=path.relative_to(root)) + + +def load_and_validate(paths: StoryPaths, spec_dir: Path | None = None, game_dir: Path | None = None) -> tuple[list[dict[str, Any]], list[str]]: + _require_deps() + actual_spec_dir = spec_dir or paths.story_specs_dir + actual_game_dir = game_dir or paths.game_scenarios_dir + + spec_files = _list_yaml_files(actual_spec_dir) + game_files = _list_yaml_files(actual_game_dir) + + runtime_game_files: list[Path] = [] + narrative_game_files: list[Path] = [] + template_files: list[Path] = [] + for file_path in game_files: + category = _classify_game_yaml(file_path) + if category == "runtime": + runtime_game_files.append(file_path) + elif category == "narrative": + narrative_game_files.append(file_path) + elif category == "template": + template_files.append(file_path) + elif category == "workbench": + continue + + _validate_yamale(_schema_path("story_spec_schema.yamale"), spec_files) + if runtime_game_files: + _validate_yamale(_schema_path("story_spec_schema.yamale"), runtime_game_files) + if template_files: + _validate_yamale(_schema_path("scenario_template_schema.yamale"), template_files) + + _validate_runtime_mirror(spec_files, runtime_game_files) + + runtime_story_files = _build_runtime_story_file_set(spec_files, runtime_game_files) + scenarios = _normalize_story_specs(runtime_story_files) + game_ids = _validate_game_scenarios(narrative_game_files) + return scenarios, game_ids + + +def _pretty_json(payload: dict[str, Any]) -> str: + return json.dumps(payload, indent=2, ensure_ascii=True) + "\n" + + +def _build_screen_payload_from_profile(scene_id: str) -> dict[str, Any]: + profile_payload = _scene_profile(scene_id) + return _normalize_screen_payload(profile_payload, scene_id) + + +def _legacy_screen_mirror_targets(scene_id: str) -> list[tuple[str, str]]: + targets: list[tuple[str, str]] = [(_scene_slug(scene_id), scene_id)] + for alias_id, canonical in LEGACY_SCREEN_ALIASES.items(): + if canonical != scene_id: + continue + alias_slug = _scene_slug(alias_id) + if any(existing_slug == alias_slug for existing_slug, _ in targets): + continue + targets.append((alias_slug, alias_id)) + return targets + + +def _sync_screens(paths: StoryPaths, check_only: bool) -> dict[str, Any]: + _activate_scene_profiles(paths) + story_screens_dir = paths.story_data_dir / "screens" + # Keep legacy payload mirrors out of the LittleFS data/ tree. + legacy_screens_dir = paths.fw_root / "legacy_payloads" / "fs_excluded" / "screens" + story_screens_dir.mkdir(parents=True, exist_ok=True) + legacy_screens_dir.mkdir(parents=True, exist_ok=True) + + story_written = 0 + story_unchanged = 0 + legacy_written = 0 + legacy_unchanged = 0 + drifts: list[str] = [] + + for scene_id in CANONICAL_SCREEN_SCENE_IDS: + payload = _build_screen_payload_from_profile(scene_id) + payload_text = _pretty_json(payload) + story_path = story_screens_dir / f"{scene_id}.json" + current_story = story_path.read_text(encoding="utf-8") if story_path.exists() else None + if current_story != payload_text: + if check_only: + drifts.append(str(story_path)) + else: + story_path.write_text(payload_text, encoding="utf-8") + story_written += 1 + else: + story_unchanged += 1 + + for slug, payload_id in _legacy_screen_mirror_targets(scene_id): + legacy_payload = dict(payload) + legacy_payload["id"] = payload_id + legacy_text = _pretty_json(legacy_payload) + legacy_path = legacy_screens_dir / f"{slug}.json" + current_legacy = legacy_path.read_text(encoding="utf-8") if legacy_path.exists() else None + if current_legacy != legacy_text: + if check_only: + drifts.append(str(legacy_path)) + else: + legacy_path.write_text(legacy_text, encoding="utf-8") + legacy_written += 1 + else: + legacy_unchanged += 1 + + if check_only and drifts: + raise StoryGenerationError( + "screen sync drift detected:\n" + "\n".join(f"- {path}" for path in sorted(set(drifts))) + ) + + return { + "check_only": check_only, + "story_count": len(CANONICAL_SCREEN_SCENE_IDS), + "story_written": story_written, + "story_unchanged": story_unchanged, + "legacy_written": legacy_written, + "legacy_unchanged": legacy_unchanged, + "legacy_dir": str(legacy_screens_dir), + "palette_path": str(_palette_path(paths)), + } + + +def run_validate(paths: StoryPaths, spec_dir: Path | None = None, game_dir: Path | None = None) -> dict[str, Any]: + _activate_scene_profiles(paths) + scenarios, game_ids = load_and_validate(paths, spec_dir=spec_dir, game_dir=game_dir) + return { + "scenarios": [item["id"] for item in scenarios], + "scenario_count": len(scenarios), + "game_scenarios": game_ids, + "game_scenario_count": len(game_ids), + } + + +def run_generate_cpp( + paths: StoryPaths, + out_dir: Path | None = None, + spec_dir: Path | None = None, + game_dir: Path | None = None, +) -> dict[str, Any]: + _activate_scene_profiles(paths) + scenarios, game_ids = load_and_validate(paths, spec_dir=spec_dir, game_dir=game_dir) + cpp_out = out_dir or paths.generated_cpp_dir + spec_hash = generate_cpp_files(scenarios, cpp_out) + return { + "spec_hash": spec_hash, + "out_dir": cpp_out, + "scenario_count": len(scenarios), + "game_scenario_count": len(game_ids), + } + + +def run_generate_bundle( + paths: StoryPaths, + out_dir: Path | None = None, + archive: Path | None = None, + spec_dir: Path | None = None, + game_dir: Path | None = None, +) -> dict[str, Any]: + _activate_scene_profiles(paths) + scenarios, game_ids = load_and_validate(paths, spec_dir=spec_dir, game_dir=game_dir) + bundle_out = out_dir or paths.bundle_root + spec_hash = _story_spec_hash(scenarios) + + if bundle_out.exists(): + for file_path in sorted(bundle_out.rglob("*"), reverse=True): + if file_path.is_file(): + file_path.unlink() + + resource_root = paths.story_data_dir if paths.story_data_dir.exists() else None + generate_bundle_files(scenarios, bundle_out, spec_hash, resource_root=resource_root) + + archive_path = archive + if archive_path is not None: + create_archive(bundle_out, archive_path) + + return { + "spec_hash": spec_hash, + "out_dir": bundle_out, + "archive": archive_path, + "scenario_count": len(scenarios), + "game_scenario_count": len(game_ids), + } + + +def run_sync_screens(paths: StoryPaths, check_only: bool = False) -> dict[str, Any]: + return _sync_screens(paths, check_only=check_only) diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/game_scenario_schema.yamale b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/game_scenario_schema.yamale new file mode 100644 index 0000000..9b355da --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/game_scenario_schema.yamale @@ -0,0 +1,49 @@ +id: str() +version: int(min=1) +title: str() +theme: str() +players: include('players') +ages: str() +duration_minutes: include('duration') +canon: include('canon') +stations: list(include('station'), min=1) +puzzles: list(include('puzzle'), min=1) +solution: include('solution') +solution_unique: bool() +finale_statement: str(required=False) +notes: str(required=False) + +--- +players: + min: int(min=1) + max: int(min=1) + +duration: + min: int(min=1) + max: int(min=1) + +canon: + introduction: str(required=False) + timeline: list(include('timeline_entry'), min=1) + stakes: str(required=False) + +timeline_entry: + label: str() + note: str() + +station: + name: str() + focus: str() + clue: str() + +puzzle: + id: str() + type: str() + clue: str() + effect: str() + +solution: + culprit: str() + motive: str() + method: str() + proof: list(str(), min=1) diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/scenario_template_schema.yamale b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/scenario_template_schema.yamale new file mode 100644 index 0000000..a58723a --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/scenario_template_schema.yamale @@ -0,0 +1,2 @@ +prompt_input: any() +current_firmware_snapshot: any(required=False) diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/story_spec_schema.yamale b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/story_spec_schema.yamale new file mode 100644 index 0000000..bcae1e1 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/schemas/story_spec_schema.yamale @@ -0,0 +1,37 @@ +id: str() +version: int(min=1) +initial_step: str() +estimated_duration_s: int(required=False, min=0) +debug_transition_bypass_enabled: bool(required=False) +app_bindings: list(include('app_binding'), min=1) +steps: list(include('step'), min=1) + +--- +app_binding: + id: str() + app: enum('LA_DETECTOR', 'AUDIO_PACK', 'SCREEN_SCENE', 'MP3_GATE', 'WIFI_STACK', 'ESPNOW_STACK', 'QR_UNLOCK_APP') + config: include('la_config', required=False) + +la_config: + hold_ms: int(required=False, min=100) + unlock_event: str(required=False) + require_listening: bool(required=False) + +step: + step_id: str() + screen_scene_id: str() + audio_pack_id: str(required=False) + actions: list(str(), required=False) + apps: list(str(), min=1) + mp3_gate_open: bool() + transitions: list(include('transition')) + +transition: + id: str(required=False) + trigger: enum('on_event', 'after_ms', 'immediate') + event_type: enum('none', 'unlock', 'audio_done', 'timer', 'serial', 'button', 'espnow', 'action') + event_name: str() + target_step_id: str() + after_ms: int(min=0) + priority: int(min=0) + debug_only: bool(required=False) diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.cpp.j2 b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.cpp.j2 new file mode 100644 index 0000000..9f2bf17 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.cpp.j2 @@ -0,0 +1,57 @@ +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated by zacus_story_gen_ai (Yamale + Jinja2) +// spec_hash: {{ spec_hash }} +// scenarios: {{ scenario_count }} + +#include "apps_gen.h" + +#include + +namespace { +constexpr AppBindingDef kGeneratedAppBindings[] = { +{% for app in app_entries %} {"{{ app.id }}", {{ app.app_cpp }}}, +{% endfor %}}; +{% set la_configs = app_entries | selectattr('la_config') | list %} +{% if la_configs %} +constexpr LaDetectorAppConfigDef kGeneratedLaConfigs[] = { +{% for app in la_configs %} {"{{ app.id }}", true, {{ app.la_config.hold_ms }}U, "{{ app.la_config.unlock_event }}", {{ 'true' if app.la_config.require_listening else 'false' }}}, +{% endfor %}}; +{% endif %} +} // namespace + +const AppBindingDef* generatedAppBindingById(const char* id) { + if (id == nullptr || id[0] == '\0') { + return nullptr; + } + for (const AppBindingDef& binding : kGeneratedAppBindings) { + if (binding.id != nullptr && strcmp(binding.id, id) == 0) { + return &binding; + } + } + return nullptr; +} + +uint8_t generatedAppBindingCount() { + return static_cast(sizeof(kGeneratedAppBindings) / sizeof(kGeneratedAppBindings[0])); +} + +const char* generatedAppBindingIdAt(uint8_t index) { + if (index >= generatedAppBindingCount()) { + return nullptr; + } + return kGeneratedAppBindings[index].id; +} + +const LaDetectorAppConfigDef* generatedLaDetectorConfigByBindingId(const char* id) { + if (id == nullptr || id[0] == '\0') { + return nullptr; + } +{% if la_configs %} + for (const LaDetectorAppConfigDef& cfg : kGeneratedLaConfigs) { + if (cfg.bindingId != nullptr && strcmp(cfg.bindingId, id) == 0) { + return &cfg; + } + } +{% endif %} + return nullptr; +} diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.h.j2 b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.h.j2 new file mode 100644 index 0000000..8d146af --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/apps_gen.h.j2 @@ -0,0 +1,23 @@ +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated by zacus_story_gen_ai (Yamale + Jinja2) +// spec_hash: {{ spec_hash }} +// scenarios: {{ scenario_count }} + +#pragma once + +#include + +#include "../core/scenario_def.h" + +struct LaDetectorAppConfigDef { + const char* bindingId; + bool hasConfig; + uint32_t holdMs; + const char* unlockEvent; + bool requireListening; +}; + +const AppBindingDef* generatedAppBindingById(const char* id); +uint8_t generatedAppBindingCount(); +const char* generatedAppBindingIdAt(uint8_t index); +const LaDetectorAppConfigDef* generatedLaDetectorConfigByBindingId(const char* id); diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.cpp.j2 b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.cpp.j2 new file mode 100644 index 0000000..e4583c7 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.cpp.j2 @@ -0,0 +1,78 @@ +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated by zacus_story_gen_ai (Yamale + Jinja2) +// spec_hash: {{ spec_hash }} +// scenarios: {{ scenario_count }} + +#include "scenarios_gen.h" + +#include + +namespace { +{% for scenario in scenarios %} +{% for step in scenario.steps %} +{% if step.actions %} +constexpr const char* {{ step.prefix }}Actions[] = { +{% for action in step.actions %} "{{ action }}", +{% endfor %}}; +{% endif %} +{% if step.apps %} +constexpr const char* {{ step.prefix }}Apps[] = { +{% for app_id in step.apps %} "{{ app_id }}", +{% endfor %}}; +{% endif %} +{% if step.transitions %} +constexpr TransitionDef {{ step.prefix }}Transitions[] = { +{% for tr in step.transitions %} {"{{ tr.id }}", {{ tr.trigger_cpp }}, {{ tr.event_cpp }}, "{{ tr.event_name }}", {{ tr.after_ms }}U, "{{ tr.target_step_id }}", {{ tr.priority }}U, {{ tr.debug_only }}}, +{% endfor %}}; +{% endif %} +{% endfor %} + +constexpr StepDef kScenario{{ scenario.index }}Steps[] = { +{% for step in scenario.steps %} {"{{ step.id }}", {{ "{" }}{% if step.screen_scene_id == 'nullptr' %}nullptr{% else %}"{{ step.screen_scene_id }}"{% endif %}, {% if step.audio_pack_id == 'nullptr' %}nullptr{% else %}"{{ step.audio_pack_id }}"{% endif %}, {% if step.actions %}{{ step.prefix }}Actions{% else %}nullptr{% endif %}, {{ step.actions|length }}U, {% if step.apps %}{{ step.prefix }}Apps{% else %}nullptr{% endif %}, {{ step.apps|length }}U{{ "}" }}, {% if step.transitions %}{{ step.prefix }}Transitions{% else %}nullptr{% endif %}, {{ step.transitions|length }}U, {{ step.mp3_gate_open }}}, +{% endfor %}}; + +constexpr ScenarioDef kScenario{{ scenario.index }} = { + "{{ scenario.id }}", + {{ scenario.version }}U, + kScenario{{ scenario.index }}Steps, + {{ scenario.steps|length }}U, + "{{ scenario.initial_step }}", +}; + +{% endfor %} +constexpr const ScenarioDef* kGeneratedScenarios[] = { +{% for scenario in scenarios %} &kScenario{{ scenario.index }}, +{% endfor %}}; + +} // namespace + +const ScenarioDef* generatedScenarioById(const char* id) { + if (id == nullptr || id[0] == '\0') { + return generatedScenarioDefault(); + } + for (const ScenarioDef* scenario : kGeneratedScenarios) { + if (scenario != nullptr && scenario->id != nullptr && strcmp(scenario->id, id) == 0) { + return scenario; + } + } + return nullptr; +} + +const ScenarioDef* generatedScenarioDefault() { + return (generatedScenarioCount() == 0U) ? nullptr : kGeneratedScenarios[0]; +} + +uint8_t generatedScenarioCount() { + return static_cast(sizeof(kGeneratedScenarios) / sizeof(kGeneratedScenarios[0])); +} + +const char* generatedScenarioIdAt(uint8_t index) { + if (index >= generatedScenarioCount()) { + return nullptr; + } + return kGeneratedScenarios[index]->id; +} + +const char* generatedScenarioSpecHash() { + return "{{ spec_hash }}"; +} diff --git a/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.h.j2 b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.h.j2 new file mode 100644 index 0000000..1234706 --- /dev/null +++ b/lib/zacus_story_gen_ai/src/zacus_story_gen_ai/templates/scenarios_gen.h.j2 @@ -0,0 +1,16 @@ +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated by zacus_story_gen_ai (Yamale + Jinja2) +// spec_hash: {{ spec_hash }} +// scenarios: {{ scenario_count }} + +#pragma once + +#include + +#include "../core/scenario_def.h" + +const ScenarioDef* generatedScenarioById(const char* id); +const ScenarioDef* generatedScenarioDefault(); +uint8_t generatedScenarioCount(); +const char* generatedScenarioIdAt(uint8_t index); +const char* generatedScenarioSpecHash(); diff --git a/lib/zacus_story_gen_ai/tests/conftest.py b/lib/zacus_story_gen_ai/tests/conftest.py new file mode 100644 index 0000000..fdcbc1f --- /dev/null +++ b/lib/zacus_story_gen_ai/tests/conftest.py @@ -0,0 +1,9 @@ +from __future__ import annotations + +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +SRC = ROOT / "src" +if str(SRC) not in sys.path: + sys.path.insert(0, str(SRC)) diff --git a/lib/zacus_story_gen_ai/tests/test_generator.py b/lib/zacus_story_gen_ai/tests/test_generator.py new file mode 100644 index 0000000..056b7af --- /dev/null +++ b/lib/zacus_story_gen_ai/tests/test_generator.py @@ -0,0 +1,305 @@ +from __future__ import annotations + +import json +from pathlib import Path + +import pytest + +from zacus_story_gen_ai.generator import ( + StoryGenerationError, + StoryPaths, + run_generate_bundle, + run_generate_cpp, + run_validate, +) + + +def _write(path: Path, content: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def _paths(tmp_path: Path) -> StoryPaths: + fw = tmp_path / "hardware" / "firmware" + repo = tmp_path + return StoryPaths( + fw_root=fw, + repo_root=repo, + game_scenarios_dir=repo / "game" / "scenarios", + story_specs_dir=fw / "docs" / "protocols" / "story_specs" / "scenarios", + story_data_dir=fw / "data" / "story", + generated_cpp_dir=fw / "hardware" / "libs" / "story" / "src" / "generated", + bundle_root=fw / "artifacts" / "story_fs" / "deploy", + ) + + +def _seed(tmp_path: Path) -> StoryPaths: + paths = _paths(tmp_path) + _write( + paths.game_scenarios_dir / "zacus_v1.yaml", + """ +id: zacus_v1 +version: 1 +title: Demo +theme: Demo +players: {min: 6, max: 10} +ages: 8+ +duration_minutes: {min: 60, max: 90} +canon: + timeline: + - label: L1 + note: N1 +stations: + - name: S1 + focus: F1 + clue: C1 +puzzles: + - id: P1 + type: t + clue: c + effect: e +solution: + culprit: X + motive: M + method: D + proof: [a, b, c] +solution_unique: true +""".strip(), + ) + _write( + paths.story_specs_dir / "default.yaml", + """ +id: DEFAULT +version: 2 +initial_step: STEP_WAIT_UNLOCK +app_bindings: + - id: APP_SCREEN + app: SCREEN_SCENE + - id: APP_GATE + app: MP3_GATE +steps: + - step_id: STEP_WAIT_UNLOCK + screen_scene_id: SCENE_LOCKED + audio_pack_id: "" + actions: [ACTION_TRACE_STEP] + apps: [APP_SCREEN, APP_GATE] + mp3_gate_open: false + transitions: + - trigger: on_event + event_type: unlock + event_name: UNLOCK + target_step_id: STEP_DONE + after_ms: 0 + priority: 100 + - step_id: STEP_DONE + screen_scene_id: SCENE_READY + audio_pack_id: "" + actions: [ACTION_REFRESH_SD] + apps: [APP_SCREEN, APP_GATE] + mp3_gate_open: true + transitions: [] +""".strip(), + ) + return paths + + +def _seed_default_screen_payloads(paths: StoryPaths) -> None: + _write( + paths.story_data_dir / "screens" / "SCENE_LOCKED.json", + json.dumps({"id": "SCENE_LOCKED", "title": "Locked"}), + ) + _write( + paths.story_data_dir / "screens" / "SCENE_READY.json", + json.dumps({"id": "SCENE_READY", "title": "Ready"}), + ) + + +def test_validate(tmp_path: Path) -> None: + paths = _seed(tmp_path) + result = run_validate(paths) + assert result["scenario_count"] == 1 + assert result["game_scenario_count"] == 1 + + +def test_generate_cpp_and_bundle(tmp_path: Path) -> None: + paths = _seed(tmp_path) + cpp = run_generate_cpp(paths) + _seed_default_screen_payloads(paths) + bundle = run_generate_bundle(paths) + assert cpp["spec_hash"] + assert (paths.generated_cpp_dir / "scenarios_gen.cpp").exists() + assert (paths.generated_cpp_dir / "apps_gen.cpp").exists() + assert (paths.bundle_root / "story" / "scenarios" / "DEFAULT.json").exists() + assert (paths.bundle_root / "story" / "manifest.sha256").exists() + assert bundle["scenario_count"] == 1 + + +def test_generate_bundle_uses_resource_payloads(tmp_path: Path) -> None: + paths = _seed(tmp_path) + _seed_default_screen_payloads(paths) + _write(paths.story_data_dir / "screens" / "SCENE_LOCKED.json", '{"id":"SCENE_LOCKED","title":"Custom Locked"}') + _write( + paths.story_data_dir / "apps" / "APP_SCREEN.json", + '{"id":"APP_SCREEN","app":"SCREEN_SCENE","config":{"show_title":true,"fps":30}}', + ) + _write( + paths.story_data_dir / "actions" / "ACTION_TRACE_STEP.json", + '{"id":"ACTION_TRACE_STEP","type":"trace_step","config":{"serial_log":false}}', + ) + + run_generate_bundle(paths) + + screen_payload = json.loads((paths.bundle_root / "story" / "screens" / "SCENE_LOCKED.json").read_text()) + app_payload = json.loads((paths.bundle_root / "story" / "apps" / "APP_SCREEN.json").read_text()) + action_payload = json.loads((paths.bundle_root / "story" / "actions" / "ACTION_TRACE_STEP.json").read_text()) + + assert screen_payload["title"] == "Custom Locked" + assert app_payload["app"] == "SCREEN_SCENE" + assert app_payload["config"]["show_title"] is True + assert app_payload["config"]["fps"] == 30 + assert action_payload["config"]["serial_log"] is False + + +def test_generate_bundle_rejects_unknown_scene_id(tmp_path: Path) -> None: + paths = _seed(tmp_path) + _write( + paths.story_specs_dir / "default.yaml", + """ +id: DEFAULT +version: 2 +initial_step: STEP_WAIT_UNLOCK +app_bindings: + - id: APP_SCREEN + app: SCREEN_SCENE +steps: + - step_id: STEP_WAIT_UNLOCK + screen_scene_id: SCENE_UNKNOWN + audio_pack_id: "" + apps: [APP_SCREEN] + mp3_gate_open: false + actions: [ACTION_TRACE_STEP] + transitions: [] +""".strip(), + ) + _seed_default_screen_payloads(paths) + with pytest.raises(StoryGenerationError, match="SCENE_UNKNOWN"): + run_generate_bundle(paths) + + +def test_generate_bundle_accepts_legacy_scene_alias(tmp_path: Path) -> None: + paths = _seed(tmp_path) + _write( + paths.story_specs_dir / "default.yaml", + """ +id: DEFAULT +version: 2 +initial_step: STEP_WAIT_UNLOCK +app_bindings: + - id: APP_SCREEN + app: SCREEN_SCENE +steps: + - step_id: STEP_WAIT_UNLOCK + screen_scene_id: SCENE_LA_DETECT + audio_pack_id: "" + apps: [APP_SCREEN] + mp3_gate_open: false + actions: [ACTION_TRACE_STEP] + transitions: [] +""".strip(), + ) + _seed_default_screen_payloads(paths) + bundle = run_generate_bundle(paths) + assert bundle["scenario_count"] == 1 + bundled = json.loads((paths.bundle_root / "story" / "scenarios" / "DEFAULT.json").read_text()) + assert bundled["steps"][0]["screen_scene_id"] == "SCENE_LA_DETECTOR" + + +def test_generate_bundle_rejects_missing_screen_asset(tmp_path: Path) -> None: + paths = _seed(tmp_path) + with pytest.raises(StoryGenerationError, match="Missing required screens resource 'SCENE_LOCKED'"): + run_generate_bundle(paths) + + +def test_generate_bundle_normalizes_screen_timeline_and_transition(tmp_path: Path) -> None: + paths = _seed(tmp_path) + _seed_default_screen_payloads(paths) + _write(paths.story_data_dir / "screens" / "SCENE_READY.json", '{"id":"SCENE_READY","title":"Ready Lite"}') + + run_generate_bundle(paths) + + payload = json.loads((paths.bundle_root / "story" / "screens" / "SCENE_READY.json").read_text()) + assert payload["id"] == "SCENE_READY" + assert payload["title"] == "Ready Lite" + assert isinstance(payload["transition"], dict) + assert payload["transition"]["effect"] + assert payload["transition"]["duration_ms"] > 0 + assert isinstance(payload["timeline"], dict) + assert isinstance(payload["timeline"]["keyframes"], list) + assert len(payload["timeline"]["keyframes"]) >= 2 + assert payload["timeline"]["keyframes"][0]["at_ms"] == 0 + assert isinstance(payload["text"], dict) + assert isinstance(payload["framing"], dict) + assert isinstance(payload["scroll"], dict) + assert isinstance(payload["demo"], dict) + + +def test_generate_bundle_normalizes_palette_options(tmp_path: Path) -> None: + paths = _seed(tmp_path) + _seed_default_screen_payloads(paths) + _write( + paths.story_data_dir / "screens" / "SCENE_READY.json", + """ +{ + "id": "SCENE_READY", + "title": "Ready custom", + "effect": "reward", + "text": { + "show_title": "1", + "show_subtitle": "true", + "title_case": "lower", + "subtitle_align": "center" + }, + "framing": { + "preset": "split", + "x_offset": 120, + "scale_pct": 20 + }, + "scroll": { + "mode": "ticker", + "speed_ms": 120, + "pause_ms": 12000, + "loop": "0" + }, + "demo": { + "mode": "arcade", + "particle_count": 9, + "strobe_level": 180 + }, + "transition": { + "effect": "crossfade", + "duration_ms": 0 + } +} +""".strip(), + ) + + run_generate_bundle(paths) + + payload = json.loads((paths.bundle_root / "story" / "screens" / "SCENE_READY.json").read_text()) + assert payload["effect"] == "celebrate" + assert payload["text"]["show_title"] is True + assert payload["text"]["show_subtitle"] is True + assert payload["text"]["title_case"] == "lower" + assert payload["text"]["subtitle_align"] == "center" + assert payload["framing"]["preset"] == "split" + assert payload["framing"]["x_offset"] == 80 + assert payload["framing"]["scale_pct"] == 60 + assert payload["scroll"]["mode"] == "marquee" + assert payload["scroll"]["speed_ms"] == 600 + assert payload["scroll"]["pause_ms"] == 10000 + assert payload["scroll"]["loop"] is False + assert payload["demo"]["mode"] == "arcade" + assert payload["demo"]["particle_count"] == 4 + assert payload["demo"]["strobe_level"] == 100 + assert payload["transition"]["effect"] == "fade" + assert payload["transition"]["duration_ms"] > 0 diff --git a/lib/zacus_story_portable/data/audio/uson_1_radio_lowmono.mp3 b/lib/zacus_story_portable/data/audio/uson_1_radio_lowmono.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c58cdfc1e5f48668ffb6cd01b74ea6f2ca48e4e6 GIT binary patch literal 65282 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

A#G-DSqDpOP+g$fAWHvccX&nZjQ< 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%0Aay7ggap?gm!4Fq+lN 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%0Dxnzw%ug9i=wp0 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 literal 0 HcmV?d00001 diff --git a/lib/zacus_story_portable/data/audio/uson_boot_arcade_lowmono.mp3 b/lib/zacus_story_portable/data/audio/uson_boot_arcade_lowmono.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..59ffdd10b6bd79ae04bd4819ac08dba0c0eccaee GIT binary patch literal 93708 zcmaI81z42P(>HwY(!F#@mw<>1A`*&Aw<0AV-5?+!B?>G^cb6z3-3`*INO!7~v~t(b$;vZ8yFfHo0yuJo&UA4 zw6eOkvGsR%|M2kW_~i8T?EK>L^6DCO17et?g)>JBcmLu4NP_-_6D#1~BU%n|J93Br zlLUZAG2H-u3bfG|f&RM>5*K*Nlu0H)_TkX)oOL;vt7{j$>^L_E!NWxm1iJ{E3|AM4 zb|-|97o8kPyo&xUhM?@kr+8V9Z=2cwc^Yb)&dDy?uIhTX`FSBm4M8v`p#{i1 z#VBD?r1K`*IC=*1RnT#&-LlXwPijY@xE0%WcKfd6qX#-n4TF^J!vV&A2_!nkvqMjm zhTqlntvlG&Uw5&2BByw2@P17G(WJ6NE$=5#b&MQJ&iM8V`43qcgEgHm+0RQs zP*Y}Fdx*8DFf?Fk2QPmBQdfJ&`Q;t;sr!%RLlVWY>F!n<`#yNSRjW1Wb^=a9I#hZ3 zs2O9^z86&sTs`!d2Y+{*1E?`RnQO$rDx%-ZpSSb>M8xYkRU#$!(p?*Jq*MF618{ zTEe=q8>2)Z#XZTpf(CNCo-;E5h81>gwh;B3{|G1PSs%ZOBCSQ$K-&B4=j@4^r)g#c zQK)zZNo7BF$KdW zCv>jD8Wf=#rI2JNfOpa(&bNV3nKs7iBHJ z^KM=d@2CH^*tfj2uLr@EB?n&+y()H}^EdibfvLT~BOT^L=b`eyVO z0`;2QgH;L8rAjV@n921*SqAG0xK-T zHh_y2;TyK?>Az1AOQvjCXFQ30Tz?4+pQRLBM9z*35Bm57m_oorQKA3^#ixrLDO> zZF|>eEAUqm8WXM(NfH>TugIl$SC~!oW5#5At&FW@8*{JP{w^4A^NC$Nusdb!dn;yJ zk02Un-Ur6Mkkz>QDKKaDQjKJai73QeRhleu#HB9YNMJ1 zt60N^+wbgh`U+GsuHSy$>o4bF5h1gwL{o|-q!D*!55`+4<{bG|fd4T%jj)#qQ zqWTjCW+%G$cFy|0C%eqz=bBu&v}hAA)BWRY`2719&AXSfvcV(u?o~SIZWpuFEnqj5 zaXs!OJuM#ml5gV6-c-JC6)5MM-B#%P$+tisM_=etF$o{pDQ8n?1Jksu;!`~k%0D%p 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

WSYgAWUCGk5z?OI-ACpe`Uj0D?BPvjO4wUh-PI z8}WiTOnpKBt|2l-gk{0W_v(IG7d;?pGK`{L@q-OD-g&r8SXO>7ez|I}({UkcHoJlu ztG7K^hBxr1C>DMv(*_$cd&|tbJ%x!Of`}Ka_c;=gQAYGT#%#>W$Fu7B(p?mTuAfP4ztW$hSSUTSj$8)`$u0&l2bd ze9Zijmd`2Zrey+pKSu;?bBG;NK+Ka^aJTN5CRtc)hpIf&L(uW@E5gO6u$FI|QdWOz zhEBoFS!UVGG4bRvtWr6g?6EP~XsD}#whn0yn4oclW$wafvBBkgW^u!}(QQsO3;G9K z>h}2Z4=Gq^&25t_bvRN#lzhAI*y&cGY22c-bAL@}1piS5*)FhCJ-csjnM=B;@u^)Z zw3}`LqwbUOhE(GmX=#P34&~7#f!(7L)@JAt9tJ)!(AVDPnU_`DlFg0(h$Lf;v}m)n)}qc%&u?xuO(JB0oKuQ z8iG*HxR1NNe3pM+sQGa`;i(-UfqxWW;ZjR!ht9)F>9JB@Q7F}H0WVkN(vGl5TJ^o1 zHq=}w-kvS@RLGEqH9{d?(Yr7YYB%&nuDq)Uih1ow zuK)ch4)HHWz$P+2!mGO>IvO7RP9|DRqC7!&v;HF`>z*(3|ScHPE`dy^^f;O@qTWA-Psl`xJJKVk( z{=ryk)_|@H@D41!39{?8eDV3smMNST?<>=@e~r7`b7aIZo}*er{YeNZzswK$+;_OC z7}|mZ&+&(I0+^EqQS+_Yy=BE{1|T~I$>Ek>LA8U!ah2%$ermxC@I}(X zcFIxK4|_RccgpzkrUWD;KHigT9`^qAxP8aN!satRn9a$Dgof!p^WV_*?v4Lvoa#wAEAAXndHU3rtVE}}B%hmQIP$&(%c+Bbyj+gikNxVEjdMTIeK06?uCD{)K@mwt#m%DL|WNChO3InGV&BoRM%Lt(Pq+H3D};XwU>-N!ojX09YXz@D1Lf1wOm;bvya5nXXQ&k0u@NbW|N1O zjlZUh@;xLS*`$^!`!j|`I{|8b)~A3-$+M&0V1C?37hZW2)P-67S}WqOIuD*`IldIG zAaC=yDK}Q4G8_Y!(8ZjwT+Gk*QTm>MQ#_@oogKu8_@i|+U;oCU9Z~QT>;l#j44uu5 zm?~1Fw%mMRYa|m6879t8&z0hPv|91+^@ST50#v3|-8eD1LItKF3Sj8fn@m=FXZEaQ ze96<$vjRWJ?pC%_DwfN&8EpQv+pqvH6eP3G29dC2HemNl{*lw3W7wD&x|P-1fKic^ z@lsT24Q&Fd4)r+=4TOh;+XhR9Gvh6@2XS;xP0l(AEO&6pwq3q#c ziO`j$rIF2rzp<%4prLCZdYGVMJ~ylWex2WJwwRc_%A-pE>ZlH{i73pA||? z+G-bDs-yE$U$3>oiR*N+kH+c8>Vnzq@h;Q8NFE~R9e62u(DapI|I@qI^b zya&!gvaEx{#3fTpYZKy}Y+z3z@uh+avN@q=eV3NRj5?A%vtEk&H^mRdxKG!|C$4&ZJv=dmZ3V@~tA~JKL75Ccl^EfkpKHBlCjpS&B0G z)V{U;yF+V?CVK6=sr)Z*Q1gMis;_rg8$%g(Qhq4K<=SJ>4k=y$lLG>?<5fkBAkCM$f{z9?xd&d7?)|%k+{7;RK4ER7p zHuWuRDk)lQ^POwgB}W@SYT3M{4|SUz(%Ap$53*oo+l59HtYdrO6azzO2yklET{M$W z0o!@)OMV|UcxCV&pn13>+b^B<%ph+0Tl2tkDzSwphPn5YQhBN;jZ248|<~? z!10N_gA+Bd(>f9A1dv9pQHo5%8Jf`yS}pz1A4VdRY+vYjOj(tG?tcu0|7caO4+-Oh zaxx54NUQIX&&gxfl}YI}^QLebzYvFDS-eImGLXcJ8M=oneCpEpS*M@&NL~XMSFq+Gd6|4<=?ImRdW?M7*tSVqqQ7Xf zgYuWfOogN%JSwta*#LPC4tpH6cUY;fVZKY)NIgeXq&5br6f4HMWQz;f6q?NPJz(#CsaH&lpQL5O^&%`m_5}`<~Bb3ShT;C8O`g! zjgCmtzqX1p7~OUKT&Z(FjWD#}lLseKmdX7xE_MKwSl6|z2~cu|6ruYIR+N?wg?ZGB z7-Vdv2HC_M9KzgTlsVtAXot{N+}#zxkM|m<_a|&jOJeLJp%+6QMn7+T*_TRLU8fh7 zlm$23ByLl)HwfP)Z}DsvW#D2Nq>~Y_a}v#y#eFSWuP{m;U~zkb_n~wnfJV`fsebvu z^+1|3f5;;^+}dHb4)*LIU77e}(`X8p`7eyu7`4!|0D$SMO~+AKPl*A%ZZqv1OZ5pI zM@Gr$mub#Zg_Ug|CL_DG0@%di5o){aQ}rU#5#gTCWqJ>K4e(_l3E&`xmdW9sFj)9#J zpu`_049lVwx>u_&-g8uNkCcXX;Ya$)poG+8!H52#HqX6})47>vJuAphJt7AjhnT}X z@#|qgXFvhSUHQ&>W_~KUw0<^4`7g0rFJS)!+*Td^g(_uX?<`Q3vbXr$B5#w;)9$dG z9_{#5rz%KsYl+8A1?aE*O*wTC%Y+?Km+cs0nWffkBA=CCkt8rSPpB{e>RE`l%N+0m ztAle`oyx7$k^7K=1QXMciG#{o|L@D2&${eds+QLD*gRt&vf4J0p%r3VMxl2KkKhya z7VNBHvADGnq{OAcR#e|u<$}7SZ*#~;un7OHV_Y>3vmPI*QG7kgZ1R}^i~9twme+p;W#>ew3oB8i}K`w0_RG_$V zZm{zlIMem^*pM~bXtUGr5LRL;qL2_iM%ku}AT>d`zc*S^F+l}pz`n+2Ni#G6y`eyI zgHb`%l&uoP?{IKbNjsyM@Z}Xkx~hLP48;37ai9$AHs2iu7CaW$`d+{T0uf8o#2?OU z;!@CVs?ZuCEu!#h*Z6ojS%?|P5Qb*)N}fZ7_Zm^`x=S-s=Rh7ETV0Eo!rluY^+eb6 zGtTt<4}*KJOs);|Kp-O4x7W?4xFWko0axJ6NHveosv1+$o-5(!+8&B@e_i@}>h?vX z7e9DZ*uv%|Zln9xP!RS$?T7zNddR;2p{Ajld{JdOf~1+S+*u!X~{ z1^cJR6cOH7*3=M((2T^FVT3WQ;29eA-5t7~7X=ZXzsm{|zB)Ss8nk?iX6|)zfNo&F9>25w&@SV1+E!gWhI=T3Z7u#;u>IF;JdA$<}bw*12l= z%U&#%VccYM*l0_p~_tel44pKd^I4l`D%n66MM)6xUd>!>px!>yg2LRj=+Uz;jf z*PqKiZuuX}7>Ys0NU*Gtx4DGCSbCrxLzul?$dHhWe%TOiema&jVNXP0y&YrL4U!tb z=V;l2R`g}_fMBT4SMoYkMG;~>#S)USx+$#=E_MrKuPtz)w90DF?kW$k!t~FydrTTP zF5DS|7VvQCIh>wXhM2|#f!b-lYy(Wju-7pWFNXy`7xI!B2Ntp0Pi-Te^!EoVDxTQH%?B1 zNpg3JK^KO}-Hy||=KJEP;Oroh3bVV_JcRd9xjx6SXfRucQ%324Gb8@le`&k=sGEdt z&BSl@p$c@b<$A3ugtla(ttycR%=-9&j0QL7T-??rdKUp_mxCPp1pG19>yJ9xK0QIl zlLq65k)i00ZSlBdKr(BZn$i%s=tHjBJeHrG^|Ay}ENYRW72|l@n3~4o&e`VFG0I%G z7KVLxK|w)*s{Bw&PNlIS#1w~Wm|*+$ps}5T z1Z2Pjl7*OKmDNj#_N9#>p%Oq3+UsK4*T`SG<$s{!;Z?iDj-zKk)A_aG0 z?H*E6R(rlgK>^W@#Gllk2`qk>r3M>X=<2HQ=QrT$KpKQOuv_sTG%sk~6d)UC;Z9C? zdB^&TSS3wKjP}}komhplXS)Btr%$y(E%I@qN7m9Gl!=P8-rYror13fkejp)^C5)H* zK0w33*YM2(a(mfd!rOS}OzFcS3^Gp)ECVKD%s461qV8%87KqLr3y!8rrs{#ptg2g1 zrZHF4YH8+RcBST3L7lGxHSX#%padF-wuNM4;L1ax39M|}6mAqSlO3c1O=Ab126flu~m408O~S!;xYLNU{LoNe2I+qUF%LB1`OH zHooQF%aK`os^%(oV8mP#i)+#-*#Wm-?d)rv7fzI-V?0isp}x>>MhA95*Oi#3lu2?~ z&bOEFE)?=<{Er+RNXZMc1&(zywU&?e8L#eWK;dv1y1#|_MojVw^OqQUrn*iw zlYH`m;5$RLsR<|GRNU12D==EoxDzWj9=O9^|4M)xVWxkjhTp6q@h=; zd*SY4K_5d>@b8V<(Sa%r;!KM7Tv7_}fp;at1b?SXxdVq%*|fD@vL?sZ9Zb>)zEDrB zOwOyj@rTjOR9{iWZ1*+#{dwO-(9+W+5#j|0Xd-nNCLpQ!xqY#+`g8tlziN1@wD7<6 z2)>?vX)0nW!t-Xb8#!Fu^GGNawXzR^f`qVp=NBwt{0!4a2a@fEet*^6x%G=x%t!D- zuyN?3Rp>J(j2vDBr2|n`JDZ5C`x0%zbIJySE z9jG*S*UX6tp#PPyD}tt(^#8M1K zSw^NV!aAXEE#FdpCN(nin&{&W|M^X0?8|?DV?&U3n5*WcB|Kq0F0Tp|HM%p>+XU(v zRX)w`4PBVDW2LY;Q^+!3g3Ccxxw-^j7d7JVxFy@pMYc zJh9rquh+>fe3MFFcJ>?(qy7c$m&lJRtb8K{b>9JVQXG8}?O)9jsC!Le5@@iUN2MbMh5U&t#l(o{Z4iNIgnPSt0|cO}|qQPE$y z{cbviZ^}Yq?@uHDcn(VUXX4t^qm-3@v(eSt1cKrzSyW^^=NdZ31;aRWv1mt7eq4Zz z3Y}-IvM6Qz*m7ptff$iSxPq`VVUX!a&>+4O%!;CR*Zj`7@MklfF(FEo#N0OPtzOSz z+#M?7cgzyMm+|>#%kMb;5AA>B-}=QGiE)iTFldvo%QmVwoxgQl6)yg37%achi*gMO z4gn$`RLrxFc!ZaxUa`WT+t+DWVMNmZwP^g|8McOv*l76mb<*q z5YD2fIDAhYTO_kbkHav2JTz5%lPo+wr`L3k@@O)Qsl?oxE^ry-my<|B+_y0vJStT; zgSU`1&PBX6!>AcK5JoBs#^C^l-dhy;9>i}WWb)k~^LhQS6t|UrXbY42FNg7zIDKj^ zi!eCOeO0Q7#pr7iB_gv@o5?+s=rw69i?Bs)BbhG^P)v;-HDOpWuFZh5sA;N8v4{@m zTN1(#<`EQq{`-VBvz%Hdbb1bxSZ*B;UGNI>?luj&eK1fiIF6q{Q5?A?os&s~`ni0o zm6Kh1W!wMp&GB3~Xd3v$3omKnXw&Q{<^BBJAnraep7%jZkL~v>`>vAGO?NRRWy>tZ zG{$C0{q_D5<0iq_x0u?5VtUrMlaU->{`hJpdH}AfbpHuWZP>{1G&)4o_CUg~Jnz3N z5&gHF<_|Kckiy~bA6{87bI+v{>1Pw3h-_aTqbo%~!;)nq)#e_J?KNp_cW;*Iwx3?o z2jedgnq+A=s~ioov0l=;#7J;jjO0p3ocx=sNcFw_4qTaL{CJu`4GI->vQ2EoflDlg zHfj;AQZfh}sz@&`5(Mgv5E9hhm1UNCju%W!6s#B@Ci{g&qu3O08qugPs=4aLI{i-8 z`5g~eTu#;kh^qy2+PsZpJx~Oe)y<0#!pFHS5V@xI(>Q1DBXGt|x9kQob>D$xFN-H} z-3C{Pn#h1b`}lc_qP5V(QKeMI=3|bjC1(DDEhfx%Y&YVKcbcrG-u9z?hHh&R0G95ns9?Ov7d`cyC7=iW})p!0R33Ejs~+ZXIA zT6)YO2_(a2maS32l#-V^3V9W>HjIhq{2J6eggAt%ii4yc(_RVfp$Vqa3(*$Tx98_C ztSku_5rqm6GFlIcr1g{Zxt8)Vj%=cC*Y|Y4H!Dl4KZ^flvZ^~mU@CuM-M|6n(D*4O z@;kuqYhMLCGJGy9Sx@kQ4Hpq1hMc^LZ06`SWkv4EA9G@8fqnVA*uT2jHOsOwfLO* zrc`ph4VqX%5mMK;s@0l{wL6!v4A+rkFs z-r>Cf4}wp0*qLo~O_;ycR#sd!{IPUHhwm2;^3fp5G# znF%?P8I_VoIFRy*|3XDK##z4E9#?5}evuv$Cu|cMibdOnUNCF{V;XtUdN;f0tRRqj zQL`FOl6jO_UnpK*7UL`V&Qr?FH&vSVXZ+v3zy3yxi+Wc6bvh^RRl0j^yvEx<cE!0$9|t@ z&jq2N$Fmq?(0$N7BDk`p5C6o{uce$+<|2o+i_@ICW)l7~ounD|WJR`UOr;o1&HMaR zk&Kv^S{oIEE2ThD9MQ5sU`4f86}j$Is<;zoE&IP6@-1rX<_>8HNHCsnX@YLfVgcqH zhv`QO5vksSOt&{qvU#iOj^Lh!9iNwml^UFNN|vf4Cd+*HF(O7D|dj|DCult`3Bl{#ziK0 zW*^1D<+W$T`wlI7tOGcNQwCYsG;0b+5HQZp4kGVa=7qubEX~Et*nn(p!FSp*j(N9% zic6?r55 z^831~u4$(*5Pm$wU2A z{bF7#%N!ahK0Xc+C23oEmB2ow+cJY|DrJH#z`lJeIK98JmN!g8sCj*?L&R)zl)8Gw zvC#NId-MS)-MYLa+wG_h=5pHRAxxSRB{ z;VNZw$1Ydjs|m;*lv%%M(c++6>}?Rx&~ihhYFaq(@bT$7&Rt^BcA&_bTgs2E1dcG% z@5w#0)$`Sm5}V%^FN%pt_<<21r=K>pt{oDo;#5b75=KDH+KDaNF>qNJK@GDFQ=m0l zs2qg~iG*`Lc316CS~8%2;}RfoZqzKkTrE0gGTL^fT)Y}j1|!3G+n+l*WU)OpST2l% z`&X1Gtk+~qA-Sz8049-NS@7Um!Qm7+1P8Gv=*4W%w+2XAc5q6SDUO(cq3#4rLP5f= zuz4eUANTE%VV!Wv|our(YX3j1o4@egd_7)u`Tagtk}U>B~dIO|6S_ zo!;fN!CLZjJ8i*WMqe$`T$$t{lZ0xS0+lz8fbW7$by?iDYOoxJtfeZi@;6|nUyE{q z%Iq9l{>Xg$5I!6PLu_)6iUmHgB9_<8f|*A>+MM>g2Z0IR;T-xoLek_&d!F+vbIV2( zi*^o6)EL1A%15H{!f05TiYiX2t?5-@r)K=1AykRzzsU(sYr-lxNJ8O#jze6#?02=| zv_`>-pa=tdlm8aR0!eTNIWogdWNv-`BZ^v;5nv20!sJsUzf+&M`E*B1>8bAgNd+if zF0qLxgh7D9>sg!t5oLh9ZTC0iUl(cG2yH|-fogvCl9txNv)%`^vf#*A( zwDz2hBItxjklw!qm^J>7rK@m=s(aeIuyid;E$Na10xvCM(JZ~dE)CKWf`o*D(%qd( zcXx<%hcpPNfPgee3J836`F;PubLZSSF=uAZ^UNyzZ=|p5u?_Nkb+|lg%AQFs zrDD+zDF(PkfpZ&iS{bHs!RJnQ)t28Neq4mqT?92H*c2(7qGdWkAQFFjx4WU%K@_oF zpG-_cZKRf+^P)l=WkZda+3ONSpSJxiyB#Ui#sKhw0^(8`5}jK5*>C4dD>LSEp;cnR zdl+$UxRWZqLI11FqMVQ?x|PYc(S_0BBC=h1-Xkixm6g;V5|By=y-iJ;=h8X1woyiZ z!H!g-Ba04r?pch}RQ$+uw@q$O_ga7BVUVnx%MhN^CTF_JNumV7^~t>taJZmmNv49; zNZr??H39pxM1;igD2_M>u!{lt5c0-1!0d&Bl9 zW{KYaDMYnqOlv$S27yw%HBL_raEmH7UV%z*|9x~UI(=*s&Wz9{yuD}r|I<_jM4<(* z-e7`-I`e=N@8J6SLhaUj!^wYF?{6;m&d#ono^4i9U}p2~Zd^ZX1k&roD1uMdmrFFC z%FUJ-aOMAPv7TUUJEJy@>^)YhR{g0tC#cD8{J=sHO1ftx z4L^I>|7Z#cbAJ0R&|9(fNJ*`4(-RO#(chaEuP2$U*?7jZp{619GEBC!j)WV~-YU3g5( zKwN7Tin=YO98%0R53%3`hU3h2Wp{RcG&qt8isH<$&o#6fY+10KtyB+u@s_X&D^$*0}lUh}+WA4uWjABPl7#EzeW=(ki?v zrC!bMbAQs1#`|0-M1*!>vjN{7eX!#?RL)~=hV|TE3T|wH!O})7S$Hkq&iOk(kI#<| z{)@@pR|w;d(Zv9owavMpDvAxp)!rclm!d0-Wl%FC4oI~eJc+K2i>vu^MWlVl!jk6pM_ku$ zfsvW-hJ{Q)(rkZeR6wDRHV=|-^NH8cIcyT&z#om`Ai-@^@?kJ$sq{r_1F{dv5JFJ=WQ9>yPRMIv4Na_Vm(+;C!D~i* zC(8Yi)I8DV`o}AMsb(_$U3&ChA* zjHIzJmWf>^6JPm`wfYuj})m6OE|9%r1@(zg7j&#<>DY)&H9MeuNU(2&TRcOtcl9n6_}1 z7{fhX`Cpk75SMIY0R<+riU$dVn60?Pfg<9@qVbiHwKScXlfq01ce9)y%EosKO(|A+ z4d#l#%+2qT-?uh#m0jtumW>Zs{3Xl!(CCQ~aA!hvUyv)&X1dA1K@~}}Q$vZTG;eEq zu71jyo5lqA4u{1{idY!hPd|KW_A+(4EImQR~9Xe%fRBx zpOmYCrvkh`xEox)y-Mt2ihP#|wV~ub=g?J>5+r5_9x|QWdF6`lSK^Nrf2lcUtVEk% zIE>A89tdiacioBd1P#E>4JXT3(HC$qXm)n;Vi3-##$u0WS@vB!DWXMOlp}vT`ipiQ zCP7NSY=nF0FCDRb?!~xS(Q#w$K0|ejqtj+`zj<*_#+V2Np+bS5WU+NnC| zd^Sk0OESlEhA+!bzNF5EAz(E(1LGE&Lt)Qt=kTk1yH)7ES%s7{j~r)~)q~Lucd`jzC%A>?i!HUv>?s zV?=lVk$y;?ZJg2$x*n}yL!I3WFLPGNl6BFwNH;oa59We}9)5q_6!sF6>plPlpGg^y zIc(vIcTKC$d+WO73M4iB?hFznU!gXZOxr zFcuoqyN78>rBkiX5_etyySYNgixB)uU?S$0-}`WVrwIL}USEk#CZQ&a7G!6e;HIaL zvoMZz>Z({A4v>)V2X`*vz;S-4{}YYhbAr*8+5V6+IDEUH?-V`Th?A|HLc6LorIl6P z$o+NQN+lj*dzr5H@42Z)LlL?5^#-cC2BTc2a<4>*ocdjh1s$#OEEH2**wkxhOvonm z+WcP6s>_ksNwI^|EG>=6f`RF4y*(}Sz58`XQH_<_#k~wNVMp5zcJ4&{WiyXd_hQ)E zUE5{^r$+SI1%KaM*VvU|JKpB&V)_+ z1HDS#-D3iA|0^)8dd?aBsRPXp;d?aL4Zj6n2an|&QQ_((zrqJ4>#GbEEL=Qp(CJM`0bO$WW%{mWTB z)SKfu5JF0muGZFKdU=(nJN`@DS$+QPpi1gWn&;qO9NnVcIN7h%eWh^L5^>lg1|Ez3`v)Th!fT;KUo9?ur1E$hN5>qH7S8SwKKdMrSPYgVcH z$<)`?#39Ggex~ehsi+erkuGsSc+d|zlFDtVlpYLxrR!H?b=$iV9!mr&UwRGo(G znNMd@%jZA%)HL2=j5IM}NpT2% z@kv|M?_P33;t+EDw8Pi5+RG(y&3^0WIl`7lY`kS{2}ve}3k-p3q9$#RQ_F9zZUY|Z z0ag`SA#*R-HRoPPQg+@cZ-BIL^(EBBR5Ch_CxKe4Fr=OA-C|kVt`#wH-rinBC;08Ax@~1Z(vb72^HG zp;9bJ`uURp5QOx@Fs6*ifH^&T`xS}RV-?RvyMQeXp(i|1Khj3kRCrp^LlPydis!kk zWY2Ea<>taCVb;3WV{QBQZ?IPXp_>>SMYngi-VB$ijj$5#emFm|@pCicv5R}&R$>>G z;PSvmkIcW@US8)FRW7f6ElP$q|MOVs{->8otW>o5is1QpN@Pni6K+(VnqlxAC-gz} z&INUXR~ui8N!+GgaiPa6?00r(l^lQk^Bj%`9uZX$K7!@0H$KnQ#<8efDQDPeQ==ru z*CN5K;Rv>wr+42}cWYE5q_L>bj)p)l8J<@De)RM0mx$hIXz7davR9gzAQwzIW;mA) z-d&hLNGyxVhm}BfoNs-)OS#p&_g+u&5podKr2&g150va5%Zz?vJ_Cx8SiWEgrd=R^ zTWI_zgIJT?P3-KakzS}tCSz_qVZO&rN&E*1<<@!qDes92PsLlGQpUhWg+=f=h!gXX zJweY2%>=`xev<;Jb`xAl&VJkuE>H(&XfCRTxSFq@MBXT<%DlGu4u(M#c=03u8=sG{^%iNFDZ03mUTbw z#OkN<_D{a@st=RT?_b`WeK1rxwe_-?vIB(1V+w>><5oVe)6YTqomtHoq&oKrx*{Ye zo@Z;RgKL4X6Wbx;`Em4EDNt3yJgL+MHj&f+{Ons6^WCpoW)~1;A`%k8q4DeH{d21- zPK)eclco%T_hnKe@XcJM8#w!v!{|LP%$J=A^@^ADv1t21AL1y`mkfPq%kAyV7S8^x zbMJl0^9LTInSBZxl!mY1J~&y2-rnZt)bt$(2MAmOxh)8OXj|Q;eellvKNT+X1aDe1 zECTWzuxPt5cz*8$sQq!~vgB2=sB=|oEzz-M>B}9{eq4Me9LHcggchPveERvXVqay$hfSvl*gdTs z0@2>*2d!*Q7xG#J=6(1bRuQrj^SpGKIHE@L-DNhgun->t!qOd)Z{JRzzyBmpl%##0 zXRYVI0f(~tevElB3fIeQ6v>d+v1hIonZ#lP1Wlht!t(^yUvH$Ii;&1gl8roedSrUi&MmB!@SoqJD?Z#@E z-9^wV=ROkJ#dY3V0zt@8uw-<)L z6opvkV}PN;?C0sf-!g9RFlFu-{&4mYMHh-Dc0`tz~P z6MOu0bZ;c$+?tLBH80xx`iSm%#nz{vSK>`otK9GWlKEu{Iu~9lnH9?wV9}1CQr3gm z*;`tbtt#lxng!OABjX$H@BEQM`MEm@4_B^_7^SM(mr2TuAAe)-Cyxrzs$l;rBx#cN zVWy_AjjN34o3Uk5IzJF70%)*5k~0VG-N~hf{RDHF@6{-xz-X@UflA|a>HSu&fF27O zq;eM?4s6Alt&7i&!gnA%SCFgeH7-}c_psC;A`YVGEL*y?W?;ZJRQCpa-fsT5e>7Q# z5!oJVh%pH0;Nb0#w?Gc2PrDb74yu;b$xCfP6CF--IA0{6{8q#H%*SbIlWvUz4uVc` zR33*S%KAfHs6SV~^??x!CJ`0u)tXc1XNs~L21RR4T;#Edx`-)vcrP(&zbdumh%tg@ z%E3-+ZKX#LstH90J5Gj-jRa_Ws^p<%_51LMr zPjr78hhuE4_RifRbElk;q@j34FcLT+hcX7IhR7_R?SIA4f7HmqL9K`Qe1xDZCj@<2 zFQ+dqk&d~`69Q|3(A8O)k7thJmenKAtJp)RIhGy<_5ZxdHBc7Sv-=pqyIJd@p1n;= zYZF0KSPi6)fy)^zbF^0r-rFAKLfhN=hru(z(xDFnog|FlODsup_{^T~zJLn5^PK-e z*hqA)$UGv-)?A=*kGK#6@8wZ4r<2bJzOgv_pd8{LKe8bY^hU!7g4HFhW

{OTk} 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%0D+Kg-Rvb0#Sn02<^zIdau#WV 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�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�GyhtF+3jTsn=b261h2*OsK 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%0DMpitS$iVU22%W2w+6NbV)VeJW{z;pL=>dYxWVfJ zzwLQf|DZc92d$!!_xS=Z9vb~ADem?B0Ab>oU?;Gr+Og{RiQz4-8jPKv=l3#uG_cR& z&^WXHBKoGMg$4*Hi19dLH@M~}2JM+rvy)Glc)Xh(DN%Pg3vKs2z}_wzmC$|heDWdT zFW*S>wXAo9Iln3E@kVaqVL#yV_s4ktQ)~TmW$$fHvp8wrk*1w**R&iPd1VE_p(W` z@hsAQ<`gM1E}W#tXd+o~FC40RNCcWeqP>XH9m?%yR<6LbAH99sx54#&Ha4;aaC@-= zaHFHqVH|Sl&C@GucN#id_0(x>Q6fYN7uei}_o@dU>qQ`t3=COi?^)j7x_7k0#bWM1 z1>d)|9}F0CK5T2;zN3k*93=};sD^+<`902Kl|G7mLyD*N0e-iywug<+Mm`VI$jCZ< z97a4}Dlm1LEGkzew5Jr0?5O?{NI!V_)6$z%lLBbp;<4LG4i-ik?fzk>jA>8&gmfDv zRoZJ16DLT|Eo{F~*X^Izg^Zr_5>h&-n0oeu+igxv(U;i8KdYCH&fLF$>Cyjz?ys(@ zyoAElkB?XNsw<9MTLwvKjMS)cLB~{)HYw$L0$lELyyPwpw@62ey2@X1r{v+d8cdN% zHAX;@a++l7W=~HA7zAOw`yeG4aI4h3idq=-+4(~R9w`hbb)d#@hO4vQ4FUBBLGwTf zs8u8&S#98jFc2p!!@p?wB3S;JVUR;q*!8qQqZTX56a%i8&^`%m2_irs#ZTl)wSZ-=i97j6D|65+NQJ8qD+ zY#Vw1$o+x+*N^^wD3x#7>tfPmhdXZ1^h;i>9@h8A@YE=#OsChb^U(W-L3je{xWa

RgM&F;pI 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≫W^!{4-!C5&ejMQYL8LQc|E9pk&u8C%KYQP( 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 +#include +#include + +class StoryControllerV2; +class StoryFsManager; +struct ScenarioDef; + +struct StoryPortableConfig { + const char* fsRoot = "/story"; + bool preferLittleFs = true; + bool allowGeneratedFallback = true; + bool strictFsOnly = false; +}; + +struct StoryPortableSnapshot { + bool initialized = false; + bool scenarioFromLittleFs = false; + bool running = false; + bool mp3GateOpen = true; + bool testMode = false; + const char* scenarioId = nullptr; + const char* stepId = nullptr; + const char* lastError = "OK"; + const char* runtimeState = "idle"; +}; + +struct StoryPortableCatalogEntry { + char id[32] = {}; + bool fromLittleFs = false; + bool fromGenerated = false; + uint16_t version = 0U; + uint32_t estimatedDurationS = 0U; +}; + +class StoryPortableCatalog { + public: + static bool listScenarios(StoryFsManager* fsManager, + StoryPortableCatalogEntry* out, + size_t maxCount, + size_t* outCount); +}; + +class StoryPortableAssets { + public: + static bool validateChecksum(StoryFsManager* fsManager, + const char* resourceType, + const char* resourceId); + static void listResources(StoryFsManager* fsManager, const char* resourceType); + static bool fsInfo(StoryFsManager* fsManager, + uint32_t* totalBytes, + uint32_t* usedBytes, + uint16_t* scenarioCount); +}; + +class StoryPortableRuntime { + public: + enum class RuntimeState : uint8_t { + kIdle = 0, + kRunning, + kError, + }; + + StoryPortableRuntime() = default; + + void configure(const StoryPortableConfig& config); + void bind(StoryControllerV2* controllerV2, StoryFsManager* fsManager); + + bool begin(uint32_t nowMs); + bool loadScenario(const char* scenarioId, uint32_t nowMs, const char* source); + bool setScenario(const char* scenarioId, uint32_t nowMs, const char* source); + void update(uint32_t nowMs); + void stop(uint32_t nowMs, const char* source); + + StoryPortableSnapshot snapshot(bool enabled, uint32_t nowMs) const; + const char* lastError() const; + bool scenarioFromLittleFs() const; + const char* stateLabel() const; + RuntimeState state() const; + void setState(RuntimeState state); + + void printScenarioList(const char* source) const; + bool validateActiveScenario(const char* source) const; + bool validateChecksum(const char* resourceType, const char* resourceId) const; + void listResources(const char* resourceType) const; + bool fsInfo(uint32_t* totalBytes, uint32_t* usedBytes, uint16_t* scenarioCount) const; + + StoryControllerV2* controllerV2() const; + StoryFsManager* fsManager() const; + + private: + bool tryLoadFromLittleFs(const char* scenarioId, uint32_t nowMs, const char* source); + void setError(const char* message); + void clearError(); + + StoryPortableConfig config_ = {}; + StoryControllerV2* controllerV2_ = nullptr; + StoryFsManager* fsManager_ = nullptr; + bool scenarioFromLittleFs_ = false; + char lastError_[48] = "OK"; + RuntimeState state_ = RuntimeState::kIdle; +}; diff --git a/lib/zacus_story_portable/include/zacus_story_portable/tinyfsm_core.h b/lib/zacus_story_portable/include/zacus_story_portable/tinyfsm_core.h new file mode 100644 index 0000000..8dfb790 --- /dev/null +++ b/lib/zacus_story_portable/include/zacus_story_portable/tinyfsm_core.h @@ -0,0 +1,61 @@ +#pragma once + +namespace zacus_story_portable { +namespace tinyfsm { + +struct Event { + enum class Kind : unsigned char { + kUnknown = 0, + kBegin, + kLoad, + kUpdate, + kStop, + }; + + explicit Event(Kind value) : kind(value) {} + virtual ~Event() = default; + Kind kind; +}; + +template +class State { + public: + virtual ~State() = default; + virtual const char* name() const = 0; + virtual void onEnter(Derived&) {} + virtual void onExit(Derived&) {} + virtual void onEvent(Derived&, const Event&) = 0; +}; + +template +class Machine { + public: + explicit Machine(Derived& owner, State& initial) + : owner_(owner), current_(&initial) { + current_->onEnter(owner_); + } + + void dispatch(const Event& event) { + current_->onEvent(owner_, event); + } + + void transition(State& next) { + if (&next == current_) { + return; + } + current_->onExit(owner_); + current_ = &next; + current_->onEnter(owner_); + } + + const State& current() const { + return *current_; + } + + private: + Derived& owner_; + State* current_; +}; + +} // namespace tinyfsm +} // namespace zacus_story_portable diff --git a/lib/zacus_story_portable/pense-bete.md b/lib/zacus_story_portable/pense-bete.md new file mode 100644 index 0000000..03c650f --- /dev/null +++ b/lib/zacus_story_portable/pense-bete.md @@ -0,0 +1,3 @@ +les events/validator +j'ai le hardware pour faire des tes qui l'esp32-S3 freenove media kit +les story.validate c'est quoi ? ça peut être la caméra du media kit et un QR Code ?, l'écoute d'un LA pendant 3seconde (en cumulé), une action clavier ?, ça peut être et l'écoute et une couleur sur l'esp cam ? \ No newline at end of file diff --git a/lib/zacus_story_portable/protocol/ui_link_v2.h b/lib/zacus_story_portable/protocol/ui_link_v2.h new file mode 100644 index 0000000..aef8210 --- /dev/null +++ b/lib/zacus_story_portable/protocol/ui_link_v2.h @@ -0,0 +1,350 @@ +#pragma once + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + UILINK_V2_PROTO = 2, + UILINK_V2_MAX_LINE = 320, + UILINK_V2_MAX_FIELDS = 40, + UILINK_V2_TYPE_MAX = 16, + UILINK_V2_KEY_MAX = 24, + UILINK_V2_VALUE_MAX = 96, + UILINK_V2_HEARTBEAT_MS = 1000, + UILINK_V2_TIMEOUT_MS = 1500, +}; + +typedef enum UiLinkMsgType { + UILINK_MSG_UNKNOWN = 0, + UILINK_MSG_HELLO, + UILINK_MSG_ACK, + UILINK_MSG_CAPS, + UILINK_MSG_STAT, + UILINK_MSG_KEYFRAME, + UILINK_MSG_BTN, + UILINK_MSG_TOUCH, + UILINK_MSG_CMD, + UILINK_MSG_PING, + UILINK_MSG_PONG, +} UiLinkMsgType; + +typedef enum UiBtnId { + UI_BTN_UNKNOWN = 0, + UI_BTN_OK, + UI_BTN_NEXT, + UI_BTN_PREV, + UI_BTN_BACK, + UI_BTN_VOL_UP, + UI_BTN_VOL_DOWN, + UI_BTN_MODE, +} UiBtnId; + +typedef enum UiBtnAction { + UI_BTN_ACTION_UNKNOWN = 0, + UI_BTN_ACTION_DOWN, + UI_BTN_ACTION_UP, + UI_BTN_ACTION_CLICK, + UI_BTN_ACTION_LONG, +} UiBtnAction; + +typedef enum UiTouchAction { + UI_TOUCH_ACTION_UNKNOWN = 0, + UI_TOUCH_ACTION_DOWN, + UI_TOUCH_ACTION_MOVE, + UI_TOUCH_ACTION_UP, +} UiTouchAction; + +typedef struct UiLinkField { + char key[UILINK_V2_KEY_MAX]; + char value[UILINK_V2_VALUE_MAX]; +} UiLinkField; + +typedef struct UiLinkFrame { + UiLinkMsgType type; + char type_token[UILINK_V2_TYPE_MAX]; + UiLinkField fields[UILINK_V2_MAX_FIELDS]; + uint8_t field_count; + bool has_crc; + uint8_t crc_expected; + uint8_t crc_computed; + bool crc_ok; +} UiLinkFrame; + +static inline uint8_t uiLinkCrc8(const uint8_t* data, size_t len) { + uint8_t crc = 0x00u; + if (data == NULL) { + return crc; + } + for (size_t i = 0; i < len; ++i) { + crc ^= data[i]; + for (uint8_t bit = 0u; bit < 8u; ++bit) { + if ((crc & 0x80u) != 0u) { + crc = (uint8_t)((crc << 1u) ^ 0x07u); + } else { + crc <<= 1u; + } + } + } + return crc; +} + +static inline bool uiLinkIsHex(char c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); +} + +static inline uint8_t uiLinkHexValue(char c) { + if (c >= '0' && c <= '9') { + return (uint8_t)(c - '0'); + } + if (c >= 'a' && c <= 'f') { + return (uint8_t)(10 + (c - 'a')); + } + return (uint8_t)(10 + (c - 'A')); +} + +static inline bool uiLinkParseHexByte(const char* s, uint8_t* out) { + if (s == NULL || out == NULL) { + return false; + } + if (!uiLinkIsHex(s[0]) || !uiLinkIsHex(s[1])) { + return false; + } + *out = (uint8_t)((uiLinkHexValue(s[0]) << 4u) | uiLinkHexValue(s[1])); + return true; +} + +static inline UiLinkMsgType uiLinkMsgTypeFromToken(const char* token) { + if (token == NULL) { + return UILINK_MSG_UNKNOWN; + } + if (strcmp(token, "HELLO") == 0) return UILINK_MSG_HELLO; + if (strcmp(token, "ACK") == 0) return UILINK_MSG_ACK; + if (strcmp(token, "CAPS") == 0) return UILINK_MSG_CAPS; + if (strcmp(token, "STAT") == 0) return UILINK_MSG_STAT; + if (strcmp(token, "KEYFRAME") == 0) return UILINK_MSG_KEYFRAME; + if (strcmp(token, "BTN") == 0) return UILINK_MSG_BTN; + if (strcmp(token, "TOUCH") == 0) return UILINK_MSG_TOUCH; + if (strcmp(token, "CMD") == 0) return UILINK_MSG_CMD; + if (strcmp(token, "PING") == 0) return UILINK_MSG_PING; + if (strcmp(token, "PONG") == 0) return UILINK_MSG_PONG; + return UILINK_MSG_UNKNOWN; +} + +static inline UiBtnId uiBtnIdFromToken(const char* token) { + if (token == NULL) { + return UI_BTN_UNKNOWN; + } + if (strcmp(token, "OK") == 0) return UI_BTN_OK; + if (strcmp(token, "NEXT") == 0) return UI_BTN_NEXT; + if (strcmp(token, "PREV") == 0) return UI_BTN_PREV; + if (strcmp(token, "BACK") == 0) return UI_BTN_BACK; + if (strcmp(token, "VOL_UP") == 0) return UI_BTN_VOL_UP; + if (strcmp(token, "VOL_DOWN") == 0) return UI_BTN_VOL_DOWN; + if (strcmp(token, "MODE") == 0) return UI_BTN_MODE; + return UI_BTN_UNKNOWN; +} + +static inline UiBtnAction uiBtnActionFromToken(const char* token) { + if (token == NULL) { + return UI_BTN_ACTION_UNKNOWN; + } + if (strcmp(token, "down") == 0) return UI_BTN_ACTION_DOWN; + if (strcmp(token, "up") == 0) return UI_BTN_ACTION_UP; + if (strcmp(token, "click") == 0) return UI_BTN_ACTION_CLICK; + if (strcmp(token, "long") == 0) return UI_BTN_ACTION_LONG; + return UI_BTN_ACTION_UNKNOWN; +} + +static inline UiTouchAction uiTouchActionFromToken(const char* token) { + if (token == NULL) { + return UI_TOUCH_ACTION_UNKNOWN; + } + if (strcmp(token, "down") == 0) return UI_TOUCH_ACTION_DOWN; + if (strcmp(token, "move") == 0) return UI_TOUCH_ACTION_MOVE; + if (strcmp(token, "up") == 0) return UI_TOUCH_ACTION_UP; + return UI_TOUCH_ACTION_UNKNOWN; +} + +static inline const UiLinkField* uiLinkFindField(const UiLinkFrame* frame, const char* key) { + if (frame == NULL || key == NULL) { + return NULL; + } + for (uint8_t i = 0u; i < frame->field_count; ++i) { + if (strcmp(frame->fields[i].key, key) == 0) { + return &frame->fields[i]; + } + } + return NULL; +} + +static inline bool uiLinkCopyBounded(char* dst, size_t dst_len, const char* src, size_t src_len) { + if (dst == NULL || dst_len == 0u || src == NULL) { + return false; + } + if (src_len >= dst_len) { + return false; + } + memcpy(dst, src, src_len); + dst[src_len] = '\0'; + return true; +} + +static inline bool uiLinkParseLine(const char* line, UiLinkFrame* out) { + if (line == NULL || out == NULL) { + return false; + } + + memset(out, 0, sizeof(*out)); + + size_t line_len = strnlen(line, UILINK_V2_MAX_LINE + 1u); + if (line_len == 0u || line_len > UILINK_V2_MAX_LINE) { + return false; + } + + while (line_len > 0u && (line[line_len - 1u] == '\n' || line[line_len - 1u] == '\r')) { + --line_len; + } + if (line_len == 0u) { + return false; + } + + const char* line_end = line + line_len; + const char* star = static_cast(memchr(line, '*', line_len)); + size_t payload_len = line_len; + if (star != NULL) { + out->has_crc = true; + payload_len = static_cast(star - line); + const size_t crc_index = payload_len + 1u; + if (crc_index + 2u != line_len) { + return false; + } + if (!uiLinkParseHexByte(&line[crc_index], &out->crc_expected)) { + return false; + } + } + + if (payload_len == 0u || payload_len > UILINK_V2_MAX_LINE) { + return false; + } + + out->crc_computed = uiLinkCrc8(reinterpret_cast(line), payload_len); + out->crc_ok = (!out->has_crc) || (out->crc_expected == out->crc_computed); + if (out->has_crc && !out->crc_ok) { + return false; + } + + const char* payload_end = line + payload_len; + const char* cursor = line; + const char* comma = + static_cast(memchr(cursor, ',', static_cast(payload_end - cursor))); + if (comma == NULL) { + if (!uiLinkCopyBounded(out->type_token, sizeof(out->type_token), cursor, payload_len)) { + return false; + } + out->type = uiLinkMsgTypeFromToken(out->type_token); + return out->type != UILINK_MSG_UNKNOWN; + } + + const size_t type_len = static_cast(comma - cursor); + if (!uiLinkCopyBounded(out->type_token, sizeof(out->type_token), cursor, type_len)) { + return false; + } + out->type = uiLinkMsgTypeFromToken(out->type_token); + if (out->type == UILINK_MSG_UNKNOWN) { + return false; + } + + cursor = comma + 1u; + while (cursor < payload_end) { + if (out->field_count >= UILINK_V2_MAX_FIELDS) { + return false; + } + + const size_t remaining = static_cast(payload_end - cursor); + const char* next = static_cast(memchr(cursor, ',', remaining)); + const size_t token_len = (next == NULL) ? remaining : static_cast(next - cursor); + if (token_len == 0u) { + return false; + } + + const char* eq = static_cast(memchr(cursor, '=', token_len)); + if (eq == NULL) { + return false; + } + const size_t key_len = static_cast(eq - cursor); + if (key_len == 0u) { + return false; + } + if (token_len <= key_len + 1u) { + return false; + } + const size_t value_len = token_len - key_len - 1u; + + UiLinkField* field = &out->fields[out->field_count]; + if (!uiLinkCopyBounded(field->key, sizeof(field->key), cursor, key_len)) { + return false; + } + if (!uiLinkCopyBounded(field->value, sizeof(field->value), eq + 1u, value_len)) { + return false; + } + + ++out->field_count; + if (next == NULL) { + break; + } + cursor = next + 1u; + } + + return true; +} + +static inline size_t uiLinkBuildLine(char* out, + size_t out_size, + const char* type, + const UiLinkField* fields, + uint8_t field_count) { + if (out == NULL || out_size < 8u || type == NULL || type[0] == '\0') { + return 0u; + } + + size_t len = 0u; + const int type_len = snprintf(out, out_size, "%s", type); + if (type_len <= 0) { + return 0u; + } + len = (size_t)type_len; + + for (uint8_t i = 0u; i < field_count; ++i) { + if (fields == NULL || fields[i].key[0] == '\0') { + return 0u; + } + const int w = snprintf(out + len, + out_size - len, + ",%s=%s", + fields[i].key, + fields[i].value); + if (w <= 0 || (size_t)w >= (out_size - len)) { + return 0u; + } + len += (size_t)w; + } + + const uint8_t crc = uiLinkCrc8((const uint8_t*)out, len); + const int tail = snprintf(out + len, out_size - len, "*%02X\n", (unsigned int)crc); + if (tail <= 0 || (size_t)tail >= (out_size - len)) { + return 0u; + } + len += (size_t)tail; + return len; +} + +#ifdef __cplusplus +} +#endif diff --git a/lib/zacus_story_portable/protocol/ui_link_v2.md b/lib/zacus_story_portable/protocol/ui_link_v2.md new file mode 100644 index 0000000..8d16672 --- /dev/null +++ b/lib/zacus_story_portable/protocol/ui_link_v2.md @@ -0,0 +1,163 @@ +# UI Link v2 UART protocol + +This document defines the canonical UART link between ESP32 audio firmware and interchangeable UI firmware (ESP8266 OLED, RP2040 TFT). + +## 1. Transport + +- Physical: UART 3.3V TTL, full duplex. +- Default UART pins on ESP32: + - TX: GPIO22 + - RX: GPIO19 + - GND: common ground required +- Default baud: 57600 (configurable, both sides must match). +- Note: 57600 is 3x faster than 19200, stable on ESP8266 SoftwareSerial. +- Frame format (ASCII, line based): + +``` +,k=v,k=v*CC\n +``` + +Where: +- `` is an uppercase token (`HELLO`, `STAT`, etc.). +- `k=v` fields are comma separated key/value pairs. +- `CC` is CRC8 in uppercase hex, computed over bytes before `*`. +- CRC polynomial: `0x07`, init `0x00`, no reflection, no xorout. + +## 2. Versioning and compatibility + +- `proto=2` is mandatory in `HELLO`. +- Policy is additive-only: + - Adding optional fields/messages is allowed. + - Removing/renaming existing fields requires a deprecation cycle. +- Unknown fields must be ignored. +- Unknown message types must be ignored. + +## 3. Connection lifecycle (hot-swap) + +1. UI boots or is hot-plugged, sends `HELLO`. +2. ESP32 validates `proto=2` and replies `ACK`. +3. ESP32 sends `KEYFRAME` immediately after `ACK`. +4. ESP32 continues periodic `STAT` updates. +5. ESP32 sends `PING` every 1000 ms. +6. UI must answer `PONG`. +7. If no valid frame from UI for 1500 ms, ESP32 marks UI disconnected (headless mode) and waits for next `HELLO`. + +Any new `HELLO` from UI at runtime must force immediate `ACK` + `KEYFRAME` resync. + +## 4. Message catalog + +## 4.1 UI -> ESP32 + +### HELLO + +Required fields: +- `proto=2` + +Recommended fields: +- `ui_type=OLED|TFT` +- `ui_id=` +- `fw=` +- `caps=` + +Example: + +``` +HELLO,proto=2,ui_type=TFT,ui_id=rp2040-01,fw=1.0.0,caps=btn:1;touch:1;display:tft*7A +``` + +### CAPS (optional refresh) + +Used to refresh capabilities after boot. + +### BTN + +- `id=NEXT|PREV|OK|BACK|VOL_UP|VOL_DOWN|MODE` +- `action=down|up|click|long` +- `ts=` + +### TOUCH (optional raw touch) + +- `x=` +- `y=` +- `action=down|move|up` +- `ts=` + +### CMD (optional) + +- `op=request_keyframe|set_page|...` +- optional `arg=` + +### PONG + +- optional `ms=` + +## 4.2 ESP32 -> UI + +### ACK + +- `proto=2` +- `session=` +- optional `caps=` + +### KEYFRAME + +Complete UI state snapshot. Must include all currently relevant fields so UI can render from scratch after reconnect. + +### STAT + +Compact periodic telemetry update (delta-friendly). Must include sequence/time and mode fields. + +### PING + +- `ms=` + +## 5. State field conventions + +These fields are shared by `STAT` and `KEYFRAME` (subset allowed in `STAT`, full set required in `KEYFRAME`): + +- `seq` frame sequence +- `ms` esp uptime +- `mode` `SIGNAL|MP3|U_LOCK|STORY` +- `la` 0/1 +- `mp3` 0/1 +- `sd` 0/1 +- `key` last logical key (0..6) +- `track`, `track_total` +- `vol` 0..100 +- `tune_off` -8..8 +- `tune_conf` 0..100 +- `u_lock_listen` 0/1 +- `hold` 0..100 +- `startup` 0..1 (0=inactive, 1=boot_validation) +- `app` 0..3 (0=ulock_wait, 1=ulock_listen, 2=uson, 3=mp3) +- `ui_page` +- `ui_cursor`, `ui_offset`, `ui_count` +- `queue` +- `repeat` +- `fx` +- `backend` +- `scan` +- `err` + +Implementations may add optional fields. + +## 6. Timing defaults + +- ESP32 `STAT` period: 250 ms (or on meaningful change) +- ESP32 `KEYFRAME` period: 1000 ms and on (re)connect +- ESP32 `PING`: every 1000 ms +- UI disconnect timeout at ESP32: 1500 ms +- UI reconnect request timeout for downstream state: 1000..1500 ms recommended + +## 7. Error handling + +- Invalid CRC: drop frame. +- Malformed frame: drop frame. +- Missing required `HELLO` fields: ignore until a valid `HELLO`. +- BTN/TOUCH outside context: ignore and keep link alive. + +## 8. Reference implementation + +Portable helpers (CRC, parse, build, field lookup) are defined in: + +- `protocol/ui_link_v2.h` diff --git a/lib/zacus_story_portable/src/story_portable_runtime.cpp b/lib/zacus_story_portable/src/story_portable_runtime.cpp new file mode 100644 index 0000000..b2d2d3f --- /dev/null +++ b/lib/zacus_story_portable/src/story_portable_runtime.cpp @@ -0,0 +1,567 @@ +#include "zacus_story_portable/story_portable_runtime.h" + +#include +#include + +#include +#include + +#include "core/scenario_def.h" +#include "fs/story_fs_manager.h" +#include "generated/scenarios_gen.h" +#include "zacus_story_portable/tinyfsm_core.h" + +class StoryControllerV2 { + public: + struct StoryControllerV2Snapshot { + bool enabled = false; + bool running = false; + bool paused = false; + const char* scenarioId = nullptr; + const char* stepId = nullptr; + bool mp3GateOpen = true; + uint8_t queueDepth = 0U; + const char* appHostError = "OK"; + const char* engineError = "OK"; + uint32_t etape2DueMs = 0U; + bool testMode = false; + }; + + bool begin(uint32_t nowMs); + bool setScenario(const char* scenarioId, uint32_t nowMs, const char* source); + bool setScenarioFromDefinition(const ScenarioDef& scenario, uint32_t nowMs, const char* source); + void reset(uint32_t nowMs, const char* source); + void update(uint32_t nowMs); + bool jumpToStep(const char* stepId, uint32_t nowMs, const char* source); + bool postSerialEvent(const char* eventName, uint32_t nowMs, const char* source); + void printScenarioList(const char* source) const; + bool validateActiveScenario(const char* source) const; + StoryControllerV2Snapshot snapshot(bool enabled, uint32_t nowMs) const; + const char* lastError() const; +}; + +namespace { + +constexpr size_t kCatalogMax = 24U; + +void copyText(char* out, size_t outLen, const char* value) { + if (out == nullptr || outLen == 0U) { + return; + } + out[0] = '\0'; + if (value == nullptr || value[0] == '\0') { + return; + } + snprintf(out, outLen, "%s", value); +} + +bool isOkCode(const char* code) { + return code != nullptr && strcmp(code, "OK") == 0; +} + +class BeginEvent final : public zacus_story_portable::tinyfsm::Event { + public: + explicit BeginEvent(uint32_t now) : Event(Event::Kind::kBegin), nowMs(now) {} + const uint32_t nowMs; + mutable bool ok = false; +}; + +class LoadEvent final : public zacus_story_portable::tinyfsm::Event { + public: + LoadEvent(const char* id, uint32_t now, const char* src) + : Event(Event::Kind::kLoad), scenarioId(id), nowMs(now), source(src) {} + + const char* scenarioId; + const uint32_t nowMs; + const char* source; + mutable bool ok = false; +}; + +class UpdateEvent final : public zacus_story_portable::tinyfsm::Event { + public: + explicit UpdateEvent(uint32_t now) : Event(Event::Kind::kUpdate), nowMs(now) {} + const uint32_t nowMs; +}; + +class StopEvent final : public zacus_story_portable::tinyfsm::Event { + public: + StopEvent(uint32_t now, const char* src) + : Event(Event::Kind::kStop), nowMs(now), source(src) {} + const uint32_t nowMs; + const char* source; +}; + +} // namespace + +bool StoryPortableCatalog::listScenarios(StoryFsManager* fsManager, + StoryPortableCatalogEntry* out, + size_t maxCount, + size_t* outCount) { + if (outCount != nullptr) { + *outCount = 0U; + } + if (out == nullptr || maxCount == 0U) { + return false; + } + + size_t count = 0U; + auto addOrMerge = [&](const char* id, bool fromFs, bool fromGenerated, uint16_t version, uint32_t durationS) { + if (id == nullptr || id[0] == '\0') { + return; + } + for (size_t i = 0U; i < count; ++i) { + if (strcmp(out[i].id, id) == 0) { + out[i].fromLittleFs = out[i].fromLittleFs || fromFs; + out[i].fromGenerated = out[i].fromGenerated || fromGenerated; + if (fromFs) { + out[i].version = version; + out[i].estimatedDurationS = durationS; + } + return; + } + } + if (count >= maxCount) { + return; + } + copyText(out[count].id, sizeof(out[count].id), id); + out[count].fromLittleFs = fromFs; + out[count].fromGenerated = fromGenerated; + out[count].version = version; + out[count].estimatedDurationS = durationS; + ++count; + }; + + if (fsManager != nullptr) { + StoryScenarioInfo infos[kCatalogMax] = {}; + size_t fsCount = 0U; + if (fsManager->listScenarios(infos, kCatalogMax, &fsCount)) { + for (size_t i = 0U; i < fsCount; ++i) { + addOrMerge(infos[i].id, true, false, infos[i].version, infos[i].estimatedDurationS); + } + } + } + + const uint8_t generatedCount = generatedScenarioCount(); + for (uint8_t i = 0U; i < generatedCount; ++i) { + const char* id = generatedScenarioIdAt(i); + addOrMerge(id, false, true, 0U, 0U); + } + + if (outCount != nullptr) { + *outCount = count; + } + return count > 0U; +} + +bool StoryPortableAssets::validateChecksum(StoryFsManager* fsManager, + const char* resourceType, + const char* resourceId) { + if (fsManager == nullptr) { + return false; + } + return fsManager->validateChecksum(resourceType, resourceId); +} + +void StoryPortableAssets::listResources(StoryFsManager* fsManager, const char* resourceType) { + if (fsManager == nullptr) { + return; + } + fsManager->listResources(resourceType); +} + +bool StoryPortableAssets::fsInfo(StoryFsManager* fsManager, + uint32_t* totalBytes, + uint32_t* usedBytes, + uint16_t* scenarioCount) { + if (fsManager == nullptr) { + return false; + } + return fsManager->fsInfo(totalBytes, usedBytes, scenarioCount); +} + +namespace { + +class IdleState; +class RunningState; +class ErrorState; + +IdleState& idleState(); +RunningState& runningState(); +ErrorState& errorState(); + +class IdleState final : public zacus_story_portable::tinyfsm::State { + public: + const char* name() const override { + return "idle"; + } + + void onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) override; +}; + +class RunningState final : public zacus_story_portable::tinyfsm::State { + public: + const char* name() const override { + return "running"; + } + + void onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) override; +}; + +class ErrorState final : public zacus_story_portable::tinyfsm::State { + public: + const char* name() const override { + return "error"; + } + + void onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) override; +}; + +IdleState& idleState() { + static IdleState state; + return state; +} + +RunningState& runningState() { + static RunningState state; + return state; +} + +ErrorState& errorState() { + static ErrorState state; + return state; +} + +bool runtimeApplyScenario(StoryPortableRuntime& runtime, + const char* scenarioId, + uint32_t nowMs, + const char* source) { + return runtime.setScenario(scenarioId, nowMs, source); +} + +void moveState(StoryPortableRuntime& runtime, StoryPortableRuntime::RuntimeState state) { + runtime.setState(state); +} + +void IdleState::onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) { + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kBegin) { + const auto& begin = static_cast(event); + LoadEvent load("DEFAULT", begin.nowMs, "story_portable_begin"); + onEvent(runtime, load); + begin.ok = load.ok; + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kLoad) { + const auto& load = static_cast(event); + const bool ok = runtimeApplyScenario(runtime, load.scenarioId, load.nowMs, load.source); + load.ok = ok; + moveState(runtime, ok ? StoryPortableRuntime::RuntimeState::kRunning + : StoryPortableRuntime::RuntimeState::kError); + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kStop) { + moveState(runtime, StoryPortableRuntime::RuntimeState::kIdle); + } +} + +void RunningState::onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) { + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kLoad) { + const auto& load = static_cast(event); + const bool ok = runtimeApplyScenario(runtime, load.scenarioId, load.nowMs, load.source); + load.ok = ok; + moveState(runtime, ok ? StoryPortableRuntime::RuntimeState::kRunning + : StoryPortableRuntime::RuntimeState::kError); + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kUpdate) { + const auto& update = static_cast(event); + if (runtime.controllerV2() != nullptr) { + runtime.controllerV2()->update(update.nowMs); + } + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kStop) { + const auto& stop = static_cast(event); + if (runtime.controllerV2() != nullptr) { + runtime.controllerV2()->reset(stop.nowMs, stop.source); + } + moveState(runtime, StoryPortableRuntime::RuntimeState::kIdle); + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kBegin) { + auto& begin = static_cast(event); + begin.ok = true; + } +} + +void ErrorState::onEvent(StoryPortableRuntime& runtime, + const zacus_story_portable::tinyfsm::Event& event) { + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kLoad) { + const auto& load = static_cast(event); + const bool ok = runtimeApplyScenario(runtime, load.scenarioId, load.nowMs, load.source); + load.ok = ok; + moveState(runtime, ok ? StoryPortableRuntime::RuntimeState::kRunning + : StoryPortableRuntime::RuntimeState::kError); + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kBegin) { + auto& begin = static_cast(event); + LoadEvent load("DEFAULT", begin.nowMs, "story_portable_begin"); + onEvent(runtime, load); + begin.ok = load.ok; + return; + } + + if (event.kind == zacus_story_portable::tinyfsm::Event::Kind::kStop) { + const auto& stop = static_cast(event); + if (runtime.controllerV2() != nullptr) { + runtime.controllerV2()->reset(stop.nowMs, stop.source); + } + moveState(runtime, StoryPortableRuntime::RuntimeState::kIdle); + } +} + +} // namespace + +void StoryPortableRuntime::configure(const StoryPortableConfig& config) { + config_ = config; +} + +void StoryPortableRuntime::bind(StoryControllerV2* controllerV2, StoryFsManager* fsManager) { + controllerV2_ = controllerV2; + fsManager_ = fsManager; +} + +bool StoryPortableRuntime::begin(uint32_t nowMs) { + BeginEvent event(nowMs); + switch (state_) { + case RuntimeState::kIdle: + idleState().onEvent(*this, event); + break; + case RuntimeState::kRunning: + runningState().onEvent(*this, event); + break; + case RuntimeState::kError: + default: + errorState().onEvent(*this, event); + break; + } + return event.ok; +} + +bool StoryPortableRuntime::tryLoadFromLittleFs(const char* scenarioId, uint32_t nowMs, const char* source) { + if (fsManager_ == nullptr || controllerV2_ == nullptr) { + return false; + } + if (!fsManager_->loadScenario(scenarioId)) { + return false; + } + const ScenarioDef* scenario = fsManager_->scenario(); + if (scenario == nullptr) { + return false; + } + return controllerV2_->setScenarioFromDefinition(*scenario, nowMs, source); +} + +bool StoryPortableRuntime::loadScenario(const char* scenarioId, uint32_t nowMs, const char* source) { + return setScenario(scenarioId, nowMs, source); +} + +bool StoryPortableRuntime::setScenario(const char* scenarioId, uint32_t nowMs, const char* source) { + if (controllerV2_ == nullptr) { + setError("controller_missing"); + state_ = RuntimeState::kError; + return false; + } + + const char* requested = (scenarioId != nullptr && scenarioId[0] != '\0') ? scenarioId : "DEFAULT"; + + if (config_.preferLittleFs) { + if (tryLoadFromLittleFs(requested, nowMs, source)) { + scenarioFromLittleFs_ = true; + clearError(); + state_ = RuntimeState::kRunning; + return true; + } + if (config_.strictFsOnly) { + setError("littlefs_scenario_missing"); + state_ = RuntimeState::kError; + return false; + } + } + + if (!config_.allowGeneratedFallback && config_.preferLittleFs) { + setError("fallback_disabled"); + state_ = RuntimeState::kError; + return false; + } + + if (controllerV2_->setScenario(requested, nowMs, source)) { + scenarioFromLittleFs_ = false; + clearError(); + state_ = RuntimeState::kRunning; + return true; + } + + setError("scenario_not_found"); + state_ = RuntimeState::kError; + return false; +} + +void StoryPortableRuntime::update(uint32_t nowMs) { + UpdateEvent event(nowMs); + switch (state_) { + case RuntimeState::kIdle: + idleState().onEvent(*this, event); + break; + case RuntimeState::kRunning: + runningState().onEvent(*this, event); + break; + case RuntimeState::kError: + default: + errorState().onEvent(*this, event); + break; + } +} + +void StoryPortableRuntime::stop(uint32_t nowMs, const char* source) { + StopEvent event(nowMs, source); + switch (state_) { + case RuntimeState::kIdle: + idleState().onEvent(*this, event); + break; + case RuntimeState::kRunning: + runningState().onEvent(*this, event); + break; + case RuntimeState::kError: + default: + errorState().onEvent(*this, event); + break; + } + if (state_ == RuntimeState::kIdle) { + clearError(); + } +} + +StoryPortableSnapshot StoryPortableRuntime::snapshot(bool enabled, uint32_t nowMs) const { + StoryPortableSnapshot out = {}; + out.scenarioFromLittleFs = scenarioFromLittleFs_; + out.lastError = lastError_; + out.runtimeState = stateLabel(); + + if (controllerV2_ == nullptr) { + return out; + } + + const StoryControllerV2::StoryControllerV2Snapshot raw = controllerV2_->snapshot(enabled, nowMs); + out.initialized = raw.enabled || raw.running; + out.running = raw.running; + out.mp3GateOpen = raw.mp3GateOpen; + out.testMode = raw.testMode; + out.scenarioId = raw.scenarioId; + out.stepId = raw.stepId; + if (isOkCode(lastError_)) { + const char* runtimeError = controllerV2_->lastError(); + if (runtimeError != nullptr && runtimeError[0] != '\0') { + out.lastError = runtimeError; + } + } + return out; +} + +const char* StoryPortableRuntime::lastError() const { + return lastError_; +} + +bool StoryPortableRuntime::scenarioFromLittleFs() const { + return scenarioFromLittleFs_; +} + +const char* StoryPortableRuntime::stateLabel() const { + switch (state_) { + case RuntimeState::kIdle: + return "idle"; + case RuntimeState::kRunning: + return "running"; + case RuntimeState::kError: + default: + return "error"; + } +} + +StoryPortableRuntime::RuntimeState StoryPortableRuntime::state() const { + return state_; +} + +void StoryPortableRuntime::setState(RuntimeState state) { + state_ = state; +} + +void StoryPortableRuntime::printScenarioList(const char* source) const { + StoryPortableCatalogEntry entries[kCatalogMax] = {}; + size_t count = 0U; + if (!StoryPortableCatalog::listScenarios(fsManager_, entries, kCatalogMax, &count)) { + if (controllerV2_ != nullptr) { + controllerV2_->printScenarioList(source); + } + return; + } + + Serial.printf("[STORY_PORTABLE] LIST via=%s count=%u\n", + source != nullptr ? source : "-", + static_cast(count)); + for (size_t i = 0U; i < count; ++i) { + Serial.printf("[STORY_PORTABLE] LIST[%u] id=%s fs=%u gen=%u version=%u duration_s=%lu\n", + static_cast(i), + entries[i].id[0] != '\0' ? entries[i].id : "-", + entries[i].fromLittleFs ? 1U : 0U, + entries[i].fromGenerated ? 1U : 0U, + static_cast(entries[i].version), + static_cast(entries[i].estimatedDurationS)); + } +} + +bool StoryPortableRuntime::validateActiveScenario(const char* source) const { + if (controllerV2_ == nullptr) { + return false; + } + return controllerV2_->validateActiveScenario(source); +} + +bool StoryPortableRuntime::validateChecksum(const char* resourceType, const char* resourceId) const { + return StoryPortableAssets::validateChecksum(fsManager_, resourceType, resourceId); +} + +void StoryPortableRuntime::listResources(const char* resourceType) const { + StoryPortableAssets::listResources(fsManager_, resourceType); +} + +bool StoryPortableRuntime::fsInfo(uint32_t* totalBytes, uint32_t* usedBytes, uint16_t* scenarioCount) const { + return StoryPortableAssets::fsInfo(fsManager_, totalBytes, usedBytes, scenarioCount); +} + +StoryControllerV2* StoryPortableRuntime::controllerV2() const { + return controllerV2_; +} + +StoryFsManager* StoryPortableRuntime::fsManager() const { + return fsManager_; +} + +void StoryPortableRuntime::setError(const char* message) { + copyText(lastError_, sizeof(lastError_), message); +} + +void StoryPortableRuntime::clearError() { + copyText(lastError_, sizeof(lastError_), "OK"); +} diff --git a/lib/zacus_story_portable/story_generator/RELEASE_STORY_V2.md b/lib/zacus_story_portable/story_generator/RELEASE_STORY_V2.md new file mode 100644 index 0000000..b7216ab --- /dev/null +++ b/lib/zacus_story_portable/story_generator/RELEASE_STORY_V2.md @@ -0,0 +1,5 @@ +# Story V2 Release Handbook + +Ce document a ete deplace vers: + +- `docs/protocols/RELEASE_STORY_V2.md` diff --git a/lib/zacus_story_portable/story_generator/gen_split_scenario.py b/lib/zacus_story_portable/story_generator/gen_split_scenario.py new file mode 100644 index 0000000..ed1ab63 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/gen_split_scenario.py @@ -0,0 +1,41 @@ +import os +import sys +import yaml + +# Usage: python gen_split_scenario.py + +def main(): + if len(sys.argv) != 3: + print("Usage: python gen_split_scenario.py ") + sys.exit(1) + scenario_yaml = sys.argv[1] + output_dir = sys.argv[2] + with open(scenario_yaml, 'r') as f: + scenario = yaml.safe_load(f) + os.makedirs(output_dir, exist_ok=True) + + # Apps écran + app_ids = set() + for step in scenario.get('steps', []): + for app in step.get('apps', []): + app_ids.add(app) + for app in app_ids: + app_file = os.path.join(output_dir, f"app_{app.lower()}.yaml") + with open(app_file, 'w') as f: + f.write(f"id: {app}\nconfig:\n # TODO: compléter la config\n") + + # Scènes + scene_ids = set() + for step in scenario.get('steps', []): + scene = step.get('screen_scene_id') + if scene: + scene_ids.add(scene) + for scene in scene_ids: + scene_file = os.path.join(output_dir, f"scene_{scene.lower()}.yaml") + with open(scene_file, 'w') as f: + f.write(f"id: {scene}\ncontent:\n # TODO: compléter le contenu\n") + + print(f"Génération terminée dans {output_dir}") + +if __name__ == "__main__": + main() diff --git a/lib/zacus_story_portable/story_generator/story_specs/README.md b/lib/zacus_story_portable/story_generator/story_specs/README.md new file mode 100644 index 0000000..2fb3140 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/README.md @@ -0,0 +1,26 @@ + +# ⚠️ DEPRECATED — Voir la source de vérité + +> **[Mise à jour 2026]** +> +> **Tous les assets LittleFS (scénarios, écrans, scènes, audio, etc.) sont désormais centralisés dans le dossier `hardware/firmware/data/` à la racine du projet.** +> +> Ce dossier unique sert de source pour le flash LittleFS sur ESP32, ESP8266 et RP2040. Les anciens dossiers `data/` dans les sous-projets doivent être migrés/supprimés. + + +**TOUS les specs, prompts, templates et scénarios Story V2 sont centralisés dans :** + +``` +hardware/firmware/docs/protocols/story_specs/ +``` + +Ce dossier (`story_generator/story_specs/`) n'est qu'une **référence historique** et n'est **PLUS MAINTENU**. + +## Redirects + +- **Prompts authoring**: `../docs/protocols/story_specs/prompts/` +- **Schéma + templates**: `../docs/protocols/story_specs/schema/` et `templates/` +- **Scénarios exemples**: `../docs/protocols/story_specs/scenarios/` +- **Guide authoring**: `../docs/protocols/GENERER_UN_SCENARIO_STORY_V2.md` + +Merci de mettre à jour tous vos repères vers la source de vérité canonique dans `docs/protocols/`. diff --git a/lib/zacus_story_portable/story_generator/story_specs/prompts/spectre_radio_lab.prompt.md b/lib/zacus_story_portable/story_generator/story_specs/prompts/spectre_radio_lab.prompt.md new file mode 100644 index 0000000..9a16920 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/prompts/spectre_radio_lab.prompt.md @@ -0,0 +1,5 @@ +# Prompt Story — SPECTRE_RADIO_LAB + +Ce prompt est desormais maintenu ici: + +- `docs/protocols/story_specs/prompts/spectre_radio_lab.prompt.md` diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/README.md b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/README.md new file mode 100644 index 0000000..70fba9c --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/README.md @@ -0,0 +1,39 @@ +# Spécification du scénario DEFAULT + +Ce dossier contient les fichiers individuels pour chaque app écran et chaque scène du scénario par défaut. + +- Chaque app écran (ex : APP_SCREEN, APP_GATE, etc.) doit être définie dans un fichier séparé (ex : app_screen.yaml). +- Chaque scène (ex : SCENE_LOCKED, SCENE_BROKEN, etc.) doit être définie dans un fichier séparé (ex : scene_locked.yaml). +- Tous ces fichiers seront stockés sur le LittleFS, dans un dossier par scénario (ici : DEFAULT). + +## Structure attendue + +- scenarios/DEFAULT/app_screen.yaml +- scenarios/DEFAULT/app_gate.yaml +- scenarios/DEFAULT/app_audio.yaml +- scenarios/DEFAULT/scene_locked.yaml +- scenarios/DEFAULT/scene_broken.yaml +- scenarios/DEFAULT/scene_la_detector.yaml +- scenarios/DEFAULT/scene_test_lab.yaml +- scenarios/DEFAULT/scene_win.yaml +- scenarios/DEFAULT/scene_ready.yaml + +## Exemple de fichier app écran +```yaml +id: APP_SCREEN +config: + type: SCREEN_SCENE + ... +``` + +## Exemple de fichier scène +```yaml +id: SCENE_LOCKED +content: + ... +``` + +## À faire +- Déplacer la définition de chaque app écran et scène dans un fichier dédié. +- Adapter les scripts de génération pour prendre en compte cette nouvelle structure. +- S’assurer que le firmware charge les apps/écrans/scènes depuis LittleFS, dossier par scénario. diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_audio.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_audio.yaml new file mode 100644 index 0000000..f1268fa --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_audio.yaml @@ -0,0 +1,4 @@ +id: APP_AUDIO +config: + type: AUDIO_PACK + description: Gestion des sons et packs audio diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_gate.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_gate.yaml new file mode 100644 index 0000000..6641c66 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_gate.yaml @@ -0,0 +1,4 @@ +id: APP_GATE +config: + type: MP3_GATE + description: Contrôle du passage/fin de scénario diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_screen.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_screen.yaml new file mode 100644 index 0000000..126a0d2 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/app_screen.yaml @@ -0,0 +1,4 @@ +id: APP_SCREEN +config: + type: SCREEN_SCENE + description: Ecran principal du scénario par défaut diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_broken.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_broken.yaml new file mode 100644 index 0000000..71c110a --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_broken.yaml @@ -0,0 +1,3 @@ +id: SCENE_BROKEN +content: + description: Ecran de transition, système "cassé" diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 2.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 2.yaml new file mode 100644 index 0000000..d822641 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 2.yaml @@ -0,0 +1,3 @@ +id: SCENE_LA_DETECT +content: + description: Ecran de détection LA diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 3.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 3.yaml new file mode 100644 index 0000000..d822641 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect 3.yaml @@ -0,0 +1,3 @@ +id: SCENE_LA_DETECT +content: + description: Ecran de détection LA diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect.yaml new file mode 100644 index 0000000..d822641 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detect.yaml @@ -0,0 +1,3 @@ +id: SCENE_LA_DETECT +content: + description: Ecran de détection LA diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detector.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detector.yaml new file mode 100644 index 0000000..72dc86b --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_la_detector.yaml @@ -0,0 +1,3 @@ +id: SCENE_LA_DETECTOR +content: + description: Ecran de détection LA diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_locked.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_locked.yaml new file mode 100644 index 0000000..2cd5600 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_locked.yaml @@ -0,0 +1,3 @@ +id: SCENE_LOCKED +content: + description: Ecran verrouillé, début du scénario diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_ready.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_ready.yaml new file mode 100644 index 0000000..07d601d --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_ready.yaml @@ -0,0 +1,3 @@ +id: SCENE_READY +content: + description: Ecran prêt, fin du scénario diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 2.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 2.yaml new file mode 100644 index 0000000..c9a980e --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 2.yaml @@ -0,0 +1,3 @@ +id: SCENE_TEST_LAB +content: + description: Mire fixe en barres de couleur pour calibration palette et rendu LVGL diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 3.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 3.yaml new file mode 100644 index 0000000..c9a980e --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab 3.yaml @@ -0,0 +1,3 @@ +id: SCENE_TEST_LAB +content: + description: Mire fixe en barres de couleur pour calibration palette et rendu LVGL diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab.yaml new file mode 100644 index 0000000..c9a980e --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_test_lab.yaml @@ -0,0 +1,3 @@ +id: SCENE_TEST_LAB +content: + description: Mire fixe en barres de couleur pour calibration palette et rendu LVGL diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_win.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_win.yaml new file mode 100644 index 0000000..7b4dbf9 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/DEFAULT/scene_win.yaml @@ -0,0 +1,3 @@ +id: SCENE_WIN +content: + description: Ecran de victoire diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/default_unlock_win_etape2.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/default_unlock_win_etape2.yaml new file mode 100644 index 0000000..f4ceb69 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/default_unlock_win_etape2.yaml @@ -0,0 +1,3 @@ +# NOTE: This scenario has moved. +# Canonical file: +# docs/protocols/story_specs/scenarios/default_unlock_win_etape2.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express.yaml new file mode 100644 index 0000000..0c1afef --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express.yaml @@ -0,0 +1,3 @@ +# NOTE: This scenario has moved. +# Canonical file: +# docs/protocols/story_specs/scenarios/example_unlock_express.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express_done.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express_done.yaml new file mode 100644 index 0000000..f0014f2 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/example_unlock_express_done.yaml @@ -0,0 +1,3 @@ +# NOTE: This scenario has moved. +# Canonical file: +# docs/protocols/story_specs/scenarios/example_unlock_express_done.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/spectre_radio_lab.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/spectre_radio_lab.yaml new file mode 100644 index 0000000..c8f612d --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/spectre_radio_lab.yaml @@ -0,0 +1,3 @@ +# NOTE: This scenario has moved. +# Canonical file: +# docs/protocols/story_specs/scenarios/spectre_radio_lab.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/scenarios/zacus_v1_unlock_and_etape2.yaml b/lib/zacus_story_portable/story_generator/story_specs/scenarios/zacus_v1_unlock_and_etape2.yaml new file mode 100644 index 0000000..3ed4f0c --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/scenarios/zacus_v1_unlock_and_etape2.yaml @@ -0,0 +1,3 @@ +# NOTE: This scenario has moved. +# Canonical file: +# docs/protocols/story_specs/scenarios/zacus_v1_unlock_and_etape2.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/schema/story_spec_v1.yaml b/lib/zacus_story_portable/story_generator/story_specs/schema/story_spec_v1.yaml new file mode 100644 index 0000000..bbc2965 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/schema/story_spec_v1.yaml @@ -0,0 +1,3 @@ +# NOTE: This schema has moved. +# Canonical file: +# docs/protocols/story_specs/schema/story_spec_v1.yaml diff --git a/lib/zacus_story_portable/story_generator/story_specs/templates/scenario.template.yaml b/lib/zacus_story_portable/story_generator/story_specs/templates/scenario.template.yaml new file mode 100644 index 0000000..23503d4 --- /dev/null +++ b/lib/zacus_story_portable/story_generator/story_specs/templates/scenario.template.yaml @@ -0,0 +1,3 @@ +# NOTE: This template has moved. +# Canonical file: +# docs/protocols/story_specs/templates/scenario.template.yaml diff --git a/lib/zacus_story_portable/story_screen_smoke.py b/lib/zacus_story_portable/story_screen_smoke.py new file mode 100644 index 0000000..daf3960 --- /dev/null +++ b/lib/zacus_story_portable/story_screen_smoke.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python3 +"""Drive Story V3 via serial JSON-lines and validate screen sync activity.""" + +from __future__ import annotations + +import argparse +import json +import re +import sys +import time +from collections import OrderedDict + +try: + import serial +except ImportError: + print("pip install pyserial", file=sys.stderr) + sys.exit(2) + +SCENE_SYNC_RE = re.compile(r"\[SCREEN_SYNC\] seq=(\d+)") + + +class ScreenTransitionLog: + def __init__(self) -> None: + self.events = OrderedDict() + self.steps = set() + self.sync_seq = [] + self.last_seq = None + self.sync_transitions = 0 + + def record(self, ts: float, step: str | None, seq: int | None) -> None: + if step: + self.steps.add(step) + if seq is not None: + self.sync_seq.append(seq) + if self.last_seq is not None and seq != self.last_seq: + self.sync_transitions += 1 + self.last_seq = seq + self.events[ts] = (step or "-", "" if seq is None else str(seq)) + + def summary(self) -> dict[str, object]: + return { + "steps": sorted(self.steps), + "step_count": len(self.steps), + "sync_samples": len(self.sync_seq), + "sync_transitions": self.sync_transitions, + } + + +def send_cmd(ser, cmd: str, label: str = "") -> None: + if label: + print(f" [cmd] {label}: {cmd}") + ser.write((cmd + "\n").encode("utf-8")) + ser.flush() + time.sleep(0.25) + + +def send_json_cmd(ser, cmd: str, data: dict[str, object] | None = None, label: str = "") -> None: + payload = {"cmd": cmd} + if data: + payload["data"] = data + send_cmd(ser, json.dumps(payload, separators=(",", ":")), label or cmd) + + +def parse_json_line(line: str) -> tuple[str | None, str | None]: + if not line.startswith("{"): + return None, None + try: + payload = json.loads(line) + except json.JSONDecodeError: + return None, None + if not isinstance(payload, dict): + return None, None + data = payload.get("data") + if not isinstance(data, dict): + return None, None + step = data.get("step") + scenario = data.get("scenario") + if isinstance(step, str) and isinstance(scenario, str): + return scenario, step + if isinstance(step, str): + return None, step + return None, None + + +def collect_and_parse(ser, duration_s: float, log: ScreenTransitionLog, label: str = "") -> int: + deadline = time.time() + duration_s + start_time = time.time() + line_count = 0 + while time.time() < deadline: + raw = ser.readline() + if not raw: + continue + + line = raw.decode("utf-8", errors="ignore").strip() + if not line: + continue + line_count += 1 + + ts = time.time() - start_time + seq = None + step = None + + match = SCENE_SYNC_RE.search(line) + if match: + seq = int(match.group(1)) + + _, json_step = parse_json_line(line) + if json_step: + step = json_step + + if seq is not None or step is not None: + log.record(ts, step, seq) + + if "[SCREEN_SYNC]" in line or line.startswith("{"): + prefix = " [rx]" if label else "[rx]" + print(f"{prefix} {line[:120]}") + return line_count + + +def verify_ui_link(ser) -> bool: + print("[test] Verifying UI link (stabilization 2s)...") + time.sleep(2.0) + send_cmd(ser, "UI_LINK_STATUS", "check link") + deadline = time.time() + 5.0 + while time.time() < deadline: + raw = ser.readline() + if not raw: + continue + line = raw.decode("utf-8", errors="ignore").strip() + if not line: + continue + if "[UI_LINK_STATUS]" in line: + print(f" [rx] {line[:120]}") + if "connected=1" in line: + print(" [ok] UI link connected") + return True + print("[fail] UI link not connected", file=sys.stderr) + return False + + +def main() -> int: + parser = argparse.ArgumentParser(description="Story V3 screen sync validation.") + parser.add_argument("--port", required=True, help="Serial port (ESP32)") + parser.add_argument("--baud", type=int, default=115200, help="Serial baud") + parser.add_argument("--min-steps", type=int, default=1, help="Minimum distinct steps") + parser.add_argument("--min-sync-transitions", type=int, default=1, help="Minimum SCREEN_SYNC seq transitions") + args = parser.parse_args() + + log = ScreenTransitionLog() + try: + with serial.Serial(args.port, args.baud, timeout=0.5) as ser: + time.sleep(1.2) + ser.reset_input_buffer() + + if not verify_ui_link(ser): + return 3 + + print("[test] Enabling story test mode...") + send_cmd(ser, "STORY_TEST_ON", "test mode ON") + send_cmd(ser, "STORY_TEST_DELAY 1000", "test delay") + + print("[test] Initial story status...") + send_json_cmd(ser, "story.status", label="story.status") + collect_and_parse(ser, 2.0, log, "phase=init") + + print("[test] Arming story...") + send_cmd(ser, "STORY_ARM", "arm") + send_json_cmd(ser, "story.status", label="story.status") + collect_and_parse(ser, 2.0, log, "phase=armed") + + print("[test] Forcing ETAPE2 transition...") + send_cmd(ser, "STORY_FORCE_ETAPE2", "force etape2") + send_json_cmd(ser, "story.status", label="story.status") + collect_and_parse(ser, 3.0, log, "phase=etape2") + + print("[test] Final status...") + send_json_cmd(ser, "story.status", label="story.status") + send_json_cmd(ser, "story.validate", label="story.validate") + collect_and_parse(ser, 2.0, log, "phase=final") + + send_cmd(ser, "STORY_TEST_OFF", "test mode OFF") + except Exception as exc: + print(f"[error] serial failure: {exc}", file=sys.stderr) + return 2 + + summary = log.summary() + print("\n[summary]") + print(f" Steps observed: {summary['step_count']} -> {summary['steps']}") + print(f" SCREEN_SYNC samples: {summary['sync_samples']}") + print(f" SCREEN_SYNC transitions: {summary['sync_transitions']}") + + fail_reasons = [] + if int(summary["step_count"]) < args.min_steps: + fail_reasons.append(f"steps={summary['step_count']} < min={args.min_steps}") + if int(summary["sync_transitions"]) < args.min_sync_transitions: + fail_reasons.append( + f"sync_transitions={summary['sync_transitions']} < min={args.min_sync_transitions}" + ) + + if fail_reasons: + print(f"\n[fail] {'; '.join(fail_reasons)}", file=sys.stderr) + return 4 + + print("\n[ok] screen validation passed") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/lib/zacus_story_portable/sync_ui_screens.sh b/lib/zacus_story_portable/sync_ui_screens.sh new file mode 100755 index 0000000..0ab9f66 --- /dev/null +++ b/lib/zacus_story_portable/sync_ui_screens.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Synchronise les fichiers JSON d'écrans vers le dossier LittleFS de l'UI RP2040 +# Usage: ./tools/dev/sync_ui_screens.sh + +set -euo pipefail +cd "$(dirname "$0")/../.." +source tools/dev/layout_paths.sh + +SRC="$(pwd)/artifacts/littlefs_build/screens" +UI_TFT_SRC_ROOT="$(fw_ui_tft_src)" +DST="$(cd "$UI_TFT_SRC_ROOT/.." && pwd)/data" + +if [ ! -d "$SRC" ]; then + echo "[FAIL] Source screens introuvable: $SRC" >&2 + exit 1 +fi +mkdir -p "$DST" +cp -v "$SRC"/*.json "$DST"/ +echo "[OK] Synchronisation des écrans UI terminée." diff --git a/lib/zacus_story_portable/test_4scenarios_all.py b/lib/zacus_story_portable/test_4scenarios_all.py new file mode 100755 index 0000000..5877bdc --- /dev/null +++ b/lib/zacus_story_portable/test_4scenarios_all.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python3 +""" +Complete test harness: 4 scenarios + screen validation + disconnect/reconnect + 4h stability +Uses pyserial for direct hardware communication +""" + +import sys +import time +import argparse +import json +from collections import OrderedDict +from datetime import datetime +import re + +try: + import serial +except ImportError: + print("pip install pyserial", file=sys.stderr) + sys.exit(2) + +def ts(msg): + """Print with timestamp""" + now = datetime.now().strftime("%H:%M:%S") + print(f"[{now}] {msg}", flush=True) + +def open_serial(port, baud): + """Open serial port""" + try: + ser = serial.Serial(port, baud, timeout=2) + time.sleep(0.5) + ser.flushInput() + ser.flushOutput() + return ser + except Exception as e: + ts(f"✗ Cannot open {port}: {e}") + return None + +def send_cmd(ser, cmd, label=""): + """Send a serial command""" + try: + if label: + ts(f" [cmd] {label}: {cmd}") + ser.write((cmd + "\n").encode("utf-8")) + ser.flush() + time.sleep(0.3) + except Exception as e: + ts(f" ✗ Send failed: {e}") + +def collect_responses(ser, duration_s=2.0): + """Collect serial responses""" + responses = [] + deadline = time.time() + duration_s + while time.time() < deadline: + try: + raw = ser.readline() + if raw: + line = raw.decode("utf-8", errors="ignore").strip() + if line and (line.startswith("{") or '[SCREEN_SYNC]' in line or '[UI_LINK_STATUS]' in line): + responses.append(line) + except: + pass + return responses + +class ScreenLog: + """Track screen transitions""" + def __init__(self): + self.screens = set() + self.steps = set() + self.transitions = [] + self.last_screen = None + self.last_step = None + + def parse(self, line): + """Extract synthetic screen/step from JSON status or screen sync lines.""" + screen = None + step = None + if line.startswith("{"): + try: + payload = json.loads(line) + except Exception: + payload = {} + data = payload.get("data", {}) if isinstance(payload, dict) else {} + if isinstance(data, dict): + raw_step = data.get("step") + if isinstance(raw_step, str): + step = raw_step + m = re.search(r'\[SCREEN_SYNC\]\s+seq=(\d+)', line) + if m: + screen = f"SYNC_{m.group(1)}" + return screen, step + + def record(self, screen, step): + """Record a state""" + if screen: + self.screens.add(screen) + if self.last_screen and self.last_screen != screen: + self.transitions.append((self.last_screen, screen, step)) + self.last_screen = screen + if step: + self.steps.add(step) + self.last_step = step + + def summary(self): + """Return summary""" + return { + 'screens': sorted(self.screens), + 'steps': sorted(self.steps), + 'transitions': self.transitions, + 'pass': len(self.transitions) > 0 or len(self.steps) > 0 + } + +def verify_ui_link(ser): + """Verify UI link before test""" + ts("Verifying UI link (3 sec stabilization)...") + time.sleep(3.0) + send_cmd(ser, "UI_LINK_STATUS", "check link") + responses = collect_responses(ser, 2.0) + for resp in responses: + if 'connected=1' in resp: + ts(" ✓ UI link connected") + return True + ts(" ✗ UI link not connected (continuing anyway)") + return True # Don't block + +def test_scenario(ser, scenario_id, scenario_name): + """Test single scenario with screen validation""" + ts(f"\n{'='*70}") + ts(f"Testing scenario: {scenario_name} ({scenario_id})") + ts(f"{'='*70}") + + log = ScreenLog() + start = time.time() + + try: + # Setup + send_cmd(ser, "STORY_TEST_ON", "test mode ON") + send_cmd(ser, "STORY_TEST_DELAY 1000", "test delay 1s") + send_cmd(ser, json.dumps({"cmd": "story.load", "data": {"scenario": scenario_id}}, separators=(",", ":")), f"load {scenario_name}") + time.sleep(0.5) + + # Collect initial + ts("Initial state...") + send_cmd(ser, json.dumps({"cmd": "story.status"}, separators=(",", ":")), "get status") + for resp in collect_responses(ser, 1.0): + screen, step = log.parse(resp) + log.record(screen, step) + if screen: + ts(f" → {screen} @ {step}") + + # Arm and transition + ts("Arming and forcing transition...") + send_cmd(ser, "STORY_ARM", "arm story") + time.sleep(0.5) + send_cmd(ser, "STORY_FORCE_ETAPE2", "force etape2") + time.sleep(0.5) + + # Collect final + ts("Final state...") + send_cmd(ser, json.dumps({"cmd": "story.status"}, separators=(",", ":")), "get final status") + for resp in collect_responses(ser, 1.0): + screen, step = log.parse(resp) + log.record(screen, step) + if screen: + ts(f" → {screen} @ {step}") + + # Disable + send_cmd(ser, "STORY_TEST_OFF", "disable test") + + except Exception as e: + ts(f"✗ Error: {e}") + return False + + # Report + elapsed = time.time() - start + summary = log.summary() + + ts(f"\n[result] {scenario_name}") + ts(f" Screens: {summary['screens']}") + ts(f" Steps: {summary['steps']}") + ts(f" Transitions: {summary['transitions']}") + ts(f" Duration: {elapsed:.1f}s") + + if summary['pass']: + ts(f"✓ PASSED\n") + return True + else: + ts(f"✗ FAILED (no transitions)\n") + return False + +def test_disconnect(ser, scenario_id='DEFAULT'): + """Test disconnect/reconnect resilience""" + ts(f"\n{'='*70}") + ts("Testing disconnect/reconnect") + ts(f"{'='*70}") + + try: + ts("Starting scenario...") + send_cmd(ser, "STORY_TEST_ON", "test on") + send_cmd(ser, json.dumps({"cmd": "story.load", "data": {"scenario": scenario_id}}, separators=(",", ":")), "load") + send_cmd(ser, "STORY_ARM", "arm") + time.sleep(1.0) + + ts("Simulating 2s disconnect...") + time.sleep(2.0) + + ts("Checking reconnect...") + send_cmd(ser, json.dumps({"cmd": "story.status"}, separators=(",", ":")), "status after disconnect") + for resp in collect_responses(ser, 1.0): + if '"running":true' in resp: + ts(" ✓ Reconnected, story still running") + send_cmd(ser, "STORY_TEST_OFF", "disable") + return True + + ts(" ✗ Not running after disconnect") + return False + + except Exception as e: + ts(f"✗ Error: {e}") + return False + +def test_4h_stable(ser): + """Run 4 scenarios in loop for 4 hours""" + ts(f"\n{'='*70}") + ts("4-hour stability test") + ts(f"{'='*70}") + + scenarios = [ + ('DEFAULT', 'default_unlock_win_etape2'), + ('EXPRESS', 'example_unlock_express'), + ('EXPRESS_DONE', 'example_unlock_express_done'), + ('SPECTRE', 'spectre_radio_lab'), + ] + + start = time.time() + duration_sec = 4 * 3600 + iteration = 0 + passes = 0 + fails = 0 + + while (time.time() - start) < duration_sec: + iteration += 1 + elapsed_min = (time.time() - start) / 60.0 + remaining_min = (duration_sec - (time.time() - start)) / 60.0 + + for sid, sname in scenarios: + if (time.time() - start) >= duration_sec: + break + ts(f"\n[{elapsed_min:.0f}m/{remaining_min:.0f}m] Iter {iteration}: {sname}") + if test_scenario(ser, sid, sname): + passes += 1 + else: + fails += 1 + + elapsed_sec = time.time() - start + ts(f"\n4-hour test complete ({elapsed_sec/3600:.1f}h actual)") + ts(f" Total: {passes + fails}") + ts(f" Passed: {passes}") + ts(f" Failed: {fails}") + rate = 100 * passes / (passes + fails) if (passes + fails) > 0 else 0 + ts(f" Pass rate: {rate:.1f}%\n") + + return fails == 0 + +def main(): + parser = argparse.ArgumentParser(description='Test 4 scenarios + stability') + parser.add_argument('--port', required=True, help='Serial port') + parser.add_argument('--baud', type=int, default=115200, help='Baud rate') + parser.add_argument('--mode', choices=['quick', 'disconnect', '4h'], default='quick', + help='quick: 4 scenarios, disconnect: +reconnect, 4h: 4h loop') + args = parser.parse_args() + + ser = open_serial(args.port, args.baud) + if not ser: + ts("✗ Cannot open serial port") + sys.exit(1) + + verify_ui_link(ser) + + scenarios = [ + ('DEFAULT', 'default_unlock_win_etape2'), + ('EXPRESS', 'example_unlock_express'), + ('EXPRESS_DONE', 'example_unlock_express_done'), + ('SPECTRE', 'spectre_radio_lab'), + ] + + passes = 0 + fails = 0 + + # Run 4 scenarios + for sid, sname in scenarios: + if test_scenario(ser, sid, sname): + passes += 1 + else: + fails += 1 + + # Disconnect test + if args.mode in ['disconnect', '4h']: + if test_disconnect(ser): + passes += 1 + else: + fails += 1 + + # 4h stability + if args.mode == '4h': + if test_4h_stable(ser): + passes += 1 + else: + fails += 1 + + # Close + try: + ser.close() + except: + pass + + # Final summary + ts(f"\n{'='*70}") + ts("FINAL SUMMARY") + ts(f"{'='*70}") + ts(f"Mode: {args.mode}") + ts(f"Total: {passes + fails}") + ts(f"Passed: {passes}") + ts(f"Failed: {fails}") + rate = 100 * passes / (passes + fails) if (passes + fails) > 0 else 0 + ts(f"Success rate: {rate:.1f}%") + ts(f"{'='*70}\n") + + sys.exit(0 if fails == 0 else 1) + +if __name__ == '__main__': + main() diff --git a/lib/zacus_story_portable/test_4scenarios_complete.py b/lib/zacus_story_portable/test_4scenarios_complete.py new file mode 100755 index 0000000..7e285c8 --- /dev/null +++ b/lib/zacus_story_portable/test_4scenarios_complete.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +""" +Test harness: 4 scenarios + screen validation + disconnect/reconnect + 4h stability +Extends story_screen_smoke.py with multi-scenario testing +""" + +import sys +import time +import argparse +from pathlib import Path +from datetime import datetime, timedelta +from collections import OrderedDict +import re + +try: + import serial +except ImportError: + print("pip install pyserial", file=sys.stderr) + sys.exit(2) + +def timestamped(msg): + ts = datetime.now().strftime("%H:%M:%S") + print(f"[{ts}] {msg}") + +def open_serial(port, baud): + """Open serial port""" + try: + ser = serial.Serial(port, baud, timeout=2) + time.sleep(0.5) + ser.flushInput() + ser.flushOutput() + return ser + except Exception as e: + timestamped(f"✗ Cannot open {port}: {e}") + return None + +def send_cmd(ser, cmd, label=""): + """Send a serial command""" + if label: + timestamped(f" → {label}: {cmd}") + try: + ser.write((cmd + "\n").encode("utf-8")) + ser.flush() + time.sleep(0.25) + except Exception as e: + timestamped(f" ✗ Send failed: {e}") + +def collect_responses(ser, duration_s=2.0): + """Collect serial responses for duration_s""" + responses = [] + deadline = time.time() + duration_s + while time.time() < deadline: + try: + raw = ser.readline() + if raw: + line = raw.decode("utf-8", errors="ignore").strip() + if line: + responses.append(line) + except: + pass + return responses + +class ScreenTransitionLog: + """Track screen scene transitions""" + def __init__(self): + self.events = OrderedDict() + self.scenes = set() + self.steps = set() + self.transitions = [] + + def parse_status(self, line): + """Extract screen, step from STORY_V2 STATUS line""" + match = re.search(r'screen=(\w+)', line) + screen = match.group(1) if match else None + match = re.search(r'step=(\w+)', line) + step = match.group(1) if match else None + return screen, step + + def add_event(self, seq, screen, step): + """Record an event with scene/step""" + if screen and step: + key = (screen, step) + if key not in self.events: + self.events[key] = seq + self.scenes.add(screen) + self.steps.add(step) + # Check transition + if len(self.events) > 1: + prev_key = list(self.events.keys())[-2] + self.transitions.append((prev_key[0], screen, step)) + + def summary(self): + """Return test summary""" + return { + 'scenes': sorted(list(self.scenes)), + 'steps': sorted(list(self.steps)), + 'transitions': self.transitions, + 'pass': len(self.transitions) > 0 + } + +def main(): + parser = argparse.ArgumentParser(description='Test 4 scenarios + stability') + parser.add_argument('--port', required=True, help='Serial port (e.g., /dev/cu.SLAB_USBtoUART7)') + parser.add_argument('--baud', type=int, default=115200, help='Baud rate') + parser.add_argument('--mode', choices=['quick', 'disconnect', '4h'], default='quick', + help='Test mode: quick (4 scenarios), disconnect (+ reconnect test), 4h (stability)') + args = parser.parse_args() + + # Verify UI link first + if not verify_ui_link(args.port, args.baud): + sys.exit(1) + + scenarios = [ + ('DEFAULT', 'default_unlock_win_etape2'), + ('EXPRESS', 'example_unlock_express'), + ('EXPRESS_DONE', 'example_unlock_express_done'), + ('SPECTRE', 'spectre_radio_lab'), + ] + + passes = 0 + fails = 0 + + # Test all 4 scenarios + for scenario_id, scenario_name in scenarios: + if test_scenario(args.port, args.baud, scenario_id, scenario_name): + passes += 1 + else: + fails += 1 + + # Disconnect/reconnect test + if args.mode in ['disconnect', '4h']: + if test_disconnect_reconnect(args.port, args.baud): + passes += 1 + else: + fails += 1 + + # 4-hour stability test + if args.mode == '4h': + if test_stability_4h(args.port, args.baud): + passes += 1 + else: + fails += 1 + + # Final summary + timestamped(f"\n{'='*70}") + timestamped(f"FINAL SUMMARY") + timestamped(f"{'='*70}") + timestamped(f"Mode: {args.mode}") + timestamped(f"Total tests: {passes + fails}") + timestamped(f"Passed: {passes}") + timestamped(f"Failed: {fails}") + timestamped(f"Success rate: {100*passes/(passes+fails) if (passes+fails) > 0 else 0:.1f}%") + timestamped(f"{'='*70}\n") + + sys.exit(0 if fails == 0 else 1) + +if __name__ == '__main__': + main() diff --git a/lib/zacus_story_portable/test_story_4scenarios.py b/lib/zacus_story_portable/test_story_4scenarios.py new file mode 100644 index 0000000..ca7b000 --- /dev/null +++ b/lib/zacus_story_portable/test_story_4scenarios.py @@ -0,0 +1,166 @@ +#!/usr/bin/env python3 +"""Run a 4-scenario Story serial loop using current Freenove serial commands.""" + +import argparse +import re +import sys +import time +from collections import OrderedDict +from datetime import datetime +from pathlib import Path + +try: + import serial +except ImportError: + print("pip install pyserial", file=sys.stderr) + sys.exit(2) + +SCENARIOS = OrderedDict( + [ + ("DEFAULT", "DEFAULT"), + ("EXPRESS", "EXAMPLE_UNLOCK_EXPRESS"), + ("EXPRESS_DONE", "EXEMPLE_UNLOCK_EXPRESS_DONE"), + ("SPECTRE", "SPECTRE_RADIO_LAB"), + ] +) + +STATUS_RE = re.compile( + r"\bSTATUS\b.*\bscenario=([A-Z0-9_]+)\b.*\bstep=([A-Z0-9_]+)\b.*\bscreen=([A-Z0-9_]+)\b" +) + + +def ts(msg: str) -> str: + now = datetime.now().strftime("%H:%M:%S") + return f"[{now}] {msg}" + + +def open_serial(port: str, baud: int) -> serial.Serial: + ser = serial.Serial(port, baud, timeout=1.0) + time.sleep(0.5) + ser.flushInput() + ser.flushOutput() + return ser + + +def send_cmd(ser: serial.Serial, cmd: str) -> None: + ser.write((cmd + "\n").encode("utf-8")) + ser.flush() + time.sleep(0.2) + + +def collect_lines(ser: serial.Serial, duration_s: float = 2.0) -> list[str]: + lines = [] + deadline = time.time() + duration_s + while time.time() < deadline: + raw = ser.readline() + if not raw: + continue + line = raw.decode("utf-8", errors="ignore").strip() + if line: + lines.append(line) + return lines + + +def wait_for_token(ser: serial.Serial, token: str, timeout_s: float = 2.0) -> bool: + deadline = time.time() + timeout_s + while time.time() < deadline: + for line in collect_lines(ser, 0.2): + if token in line: + return True + return False + + +def wait_for_sc_load_ack(ser: serial.Serial, scenario_id: str, timeout_s: float = 2.5) -> bool: + deadline = time.time() + timeout_s + while time.time() < deadline: + for line in collect_lines(ser, 0.2): + if f"ACK SC_LOAD id={scenario_id} ok=1" in line: + return True + if f"ACK SC_LOAD id={scenario_id} ok=0" in line or "ERR SC_LOAD" in line: + return False + return False + + +def fetch_status(ser: serial.Serial, timeout_s: float = 2.5) -> tuple[str, str, str] | None: + deadline = time.time() + timeout_s + while time.time() < deadline: + send_cmd(ser, "STATUS") + for line in collect_lines(ser, 0.6): + match = STATUS_RE.search(line) + if match: + scenario_id, step_id, screen_id = match.groups() + return scenario_id, step_id, screen_id + return None + + +def run_scenario(ser: serial.Serial, name: str, scenario_id: str, log) -> bool: + log.write(ts(f"Scenario {name} ({scenario_id})\n")) + send_cmd(ser, f"SC_LOAD {scenario_id}") + if not wait_for_sc_load_ack(ser, scenario_id, 3.0): + log.write(ts(f"FAIL load {scenario_id}\n")) + return False + + status = fetch_status(ser, timeout_s=3.0) + if status is None: + log.write(ts(f"FAIL status {scenario_id}\n")) + return False + status_scenario, status_step, status_screen = status + if status_scenario != scenario_id: + log.write(ts(f"FAIL status scenario mismatch expected={scenario_id} got={status_scenario}\n")) + return False + if status_screen in {"", "n/a"}: + log.write(ts(f"FAIL status screen invalid step={status_step} screen={status_screen}\n")) + return False + + log.write( + ts( + "STATUS " + f"scenario={status_scenario} step={status_step} screen={status_screen}" + "\n" + ) + ) + # Low-cost behavior check: BTN_NEXT should always be accepted as a serial event command. + send_cmd(ser, "SC_EVENT serial BTN_NEXT") + if not wait_for_token(ser, "ACK SC_EVENT", 2.0): + log.write(ts("FAIL SC_EVENT serial BTN_NEXT\n")) + return False + + log.write(ts("OK\n")) + return True + + +def main() -> int: + parser = argparse.ArgumentParser(description="Story 4-scenario serial loop") + parser.add_argument("--port", required=True, help="Serial port (ESP32)") + parser.add_argument("--baud", type=int, default=115200, help="Serial baud") + parser.add_argument("--log", default="", help="Optional log path") + args = parser.parse_args() + + log_path = args.log + if not log_path: + stamp = datetime.now().strftime("%Y%m%d-%H%M%S") + log_path = f"artifacts/rc_live/test_4scenarios_{stamp}.log" + Path(log_path).parent.mkdir(parents=True, exist_ok=True) + + try: + ser = open_serial(args.port, args.baud) + except Exception as exc: + print(ts(f"ERROR cannot open serial: {exc}")) + return 2 + + ok = True + with open(log_path, "w", encoding="utf-8") as log: + send_cmd(ser, "RESET") + collect_lines(ser, 1.0) + for name, scenario_id in SCENARIOS.items(): + if not run_scenario(ser, name, scenario_id, log): + ok = False + break + + ser.close() + print(ts(f"Log: {log_path}")) + return 0 if ok else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..c684fa8 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,288 @@ +# +# PlatformIO Project Configuration File (global) +# Permet de builder tous les firmwares depuis la racine du projet +# +[platformio] +default_envs = freenove_esp32s3_full_with_ui +src_dir = hardware/firmware +boards_dir = boards + +; ===================== ESP32 ===================== + +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +board_build.partitions = no_ota.csv +board_build.filesystem = littlefs +build_src_filter = + -<*> + + + +<../libs/story/src/> + +<../libs/story/story_engine.cpp> + -<../libs/story/src/ui/mp3_ui_model_v2.cpp> +monitor_speed = 115200 +monitor_filters = time, esp32_exception_decoder +monitor_echo = yes +monitor_eol = LF +monitor_rts = 0 +monitor_dtr = 0 +lib_deps = + earlephilhower/ESP8266Audio@^1.9.7 + https://github.com/pschatzmann/arduino-audio-tools.git#v1.2.2 + sensorium/Mozzi@^2.0.2 + https://github.com/pschatzmann/arduino-audio-driver.git#84c7de2eb47efe43bcc769783bb1853ee8a32f21 + bblanchon/ArduinoJson@^6.21.5 + https://github.com/me-no-dev/AsyncTCP.git + https://github.com/me-no-dev/ESPAsyncWebServer.git +build_flags = + -I$PROJECT_DIR/protocol + -Ihardware/firmware/esp32_audio/src + -Ihardware/libs/story/src + -Ihardware/libs/story + -DCORE_DEBUG_LEVEL=1 + -DUSON_STORY_V2_DEFAULT=1 + -DUSON_TRACK_CATALOG_MAX_TRACKS=200 + +; ===================== freenove_esp32s3_full_with_ui ===================== + +[env:freenove_esp32s3_full_with_ui] +platform = espressif32@^6.5.0 +# Physical board: ESP32-S3-WROOM-1-N16R8 (16MB flash / 16MB PSRAM) +board = freenove_esp32_s3_wroom_n16r8 +framework = arduino +upload_port = /dev/cu.usbmodem5AB907* +monitor_port = /dev/cu.usbmodem5AB907* +board_build.flash_size = 16MB +board_upload.flash_size = 16MB +board_upload.maximum_size = 6291456 +board_build.partitions = partitions/freenove_esp32s3_app6mb_fs6mb.csv +board_build.filesystem = littlefs +build_src_filter = + -<*> + +<../ui_freenove_allinone/src/> + -<../ui_freenove_allinone/src/app/runtime_web_service?2.cpp> + -<../ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_bold_12?2.c> + -<../ui_freenove_allinone/src/ui/fonts/lv_font_ibmplexmono_italic_24?2.c> + -<../ui_freenove_allinone/src/ui/ui_manager_display?2.cpp> + -<../ui_freenove_allinone/src/ui/ui_manager_intro?2.cpp> + -<../ui_freenove_allinone/src/main.cpp> + -<../ui_freenove_allinone/src/scenario_manager.cpp> + -<../ui_freenove_allinone/src/ui_manager.cpp> + -<../ui_freenove_allinone/src/audio_manager.cpp> + -<../ui_freenove_allinone/src/storage_manager.cpp> + -<../ui_freenove_allinone/src/camera_manager.cpp> + -<../ui_freenove_allinone/src/button_manager.cpp> + -<../ui_freenove_allinone/src/touch_manager.cpp> + -<../ui_freenove_allinone/src/hardware_manager.cpp> + -<../ui_freenove_allinone/src/network_manager.cpp> + -<../ui_freenove_allinone/src/media_manager.cpp> +monitor_speed = 115200 +monitor_filters = time, esp32_exception_decoder +monitor_echo = yes +monitor_eol = LF +monitor_rts = 0 +monitor_dtr = 0 +lib_deps = + bodmer/TFT_eSPI@^2.5.43 + lovyan03/LovyanGFX@^1.2.7 + lvgl/lvgl@^8.3.11 + esphome/ESP32-audioI2S@^2.3.0 + bblanchon/ArduinoJson@^6.21.5 + adafruit/Adafruit NeoPixel@^1.12.3 + https://github.com/alvarowolfx/ESP32QRCodeReader.git +build_flags = + -I$PROJECT_DIR/protocol + -I$PROJECT_DIR/../ui_freenove_allinone/include + -I$PROJECT_DIR/hardware/libs/story/src + -I$PROJECT_DIR/hardware/libs/story + -O2 + -ffast-math + -DCORE_DEBUG_LEVEL=0 + -DFREENOVE_USE_PSRAM=1 + -DFREENOVE_PSRAM_UI_DRAW_BUFFER=1 + -DFREENOVE_PSRAM_CAMERA_FRAMEBUFFER=1 + -DZACUS_FW_VERSION=\"freenove_esp32s3\" + -DUSE_LVGL=1 + -DUSE_AUDIO=1 + -DUSE_CAM=1 + -DUSE_SD=1 + -DUI_COLOR_256=0 + -DUI_COLOR_565=1 + -DUI_FORCE_THEME_256=0 + -DUI_DRAW_BUF_LINES=16 + -DUI_DRAW_BUF_IN_PSRAM=1 + -DUI_AUDIO_RINGBUF_IN_PSRAM=1 + -DUI_CAMERA_FB_IN_PSRAM=1 + -DUI_DMA_TX_IN_DRAM=1 + -DUI_DMA_FLUSH_ASYNC=1 + -DUI_DMA_RGB332_ASYNC_EXPERIMENTAL=0 + -DUI_DMA_TRANS_BUF_LINES=16 + -DUI_ENABLE_SIMD_PATH=1 + -DUI_SIMD_EXPERIMENTAL=0 + -DUI_SIMD_USE_ESP_DSP=1 + -DUI_FULL_FRAME_BENCH=0 + -DUI_DEMO_AUTORUN_WIN_ETAPE=0 + -DUI_WIN_ETAPE_SIMPLIFIED=0 + -DUI_FX_BACKEND_LGFX=1 + -DUI_FX_DMA_BLIT=0 + -DUI_BOING_SHADOW_ASM=1 + -DUI_FX_SPRITE_W=160 + -DUI_FX_SPRITE_H=120 + -DUI_FX_TARGET_FPS=18 + -DFREENOVE_ENABLE_TASK_TOPOLOGY=0 + -DUI_LV_MEM_SIZE_KB=128 + -DUI_FONT_PIXEL_ENABLE=1 + -DUI_FONT_TITLE_XL_ENABLE=1 + -DUI_ENABLE_MEM_MONITOR=0 + -DUI_ENABLE_PERF_MONITOR=0 + -DLV_CONF_INCLUDE_SIMPLE=1 + -DFREENOVE_MEDIA_KIT + -include ui_freenove_config.h + -DTFT_RGB_ORDER=TFT_BGR + -DFREENOVE_LCD_VARIANT_FNK0102A=0 + -DFREENOVE_LCD_VARIANT_FNK0102B=0 + -DFREENOVE_LCD_VARIANT_FNK0102H=1 + -DFREENOVE_LCD_USE_HSPI=1 + -DFREENOVE_HAS_TOUCH=0 + +[env:freenove_esp32s3] +extends = env:freenove_esp32s3_full_with_ui + +[env:freenove_esp32s3_touch] +extends = env:freenove_esp32s3_full_with_ui +build_unflags = + -DFREENOVE_HAS_TOUCH=0 +build_flags = + ${env:freenove_esp32s3_full_with_ui.build_flags} + -DFREENOVE_HAS_TOUCH=1 + +[env:esp32_release] +extends = env:esp32dev +build_unflags = -DUSON_STORY_V2_DEFAULT=1 +build_flags = ${env:esp32dev.build_flags} -DUSON_STORY_V2_DEFAULT=0 + +; ===================== ui_rp2040_ili9488 ===================== + +[env:ui_rp2040_ili9488] +platform = https://github.com/maxgerhardt/platform-raspberrypi.git +board = rpipico +framework = arduino +build_src_filter = + -<*> + + +monitor_speed = 115200 +board_build.filesystem = littlefs +lib_deps = + bodmer/TFT_eSPI@^2.5.43 + paulstoffregen/XPT2046_Touchscreen@0.0.0-alpha+sha.26b691b2c8 + bblanchon/ArduinoJson@^6.21.5 + lvgl/lvgl@^8.3.11 +build_flags = + -I$PROJECT_DIR/protocol + -Ihardware/firmware/ui/rp2040_tft/include + -DLV_CONF_INCLUDE_SIMPLE + -DUSER_SETUP_LOADED=1 + -DTFT_MISO=4 + -DTFT_MOSI=3 + -DTFT_SCLK=2 + -DTFT_CS=5 + -DTFT_DC=6 + -DTFT_RST=7 + -DTOUCH_CS=9 + -DSPI_FREQUENCY=40000000 + -DSPI_READ_FREQUENCY=20000000 + -DSPI_TOUCH_FREQUENCY=2500000 + -DSUPPORT_TRANSACTIONS + -DUI_LCD_SPI_HOST=0 + -DUI_TOUCH_IRQ_PIN=15 + -DUI_UART_RX_PIN=1 + -DUI_UART_TX_PIN=0 + -DUI_SERIAL_BAUD=57600 + -DUI_ROTATION=1 + -DILI9488_DRIVER + -DTFT_RGB_ORDER=TFT_BGR + + + +; ===================== (ui_rp2040_ili9486) ===================== + +[env:ui_rp2040_ili9486] +platform = https://github.com/maxgerhardt/platform-raspberrypi.git +board = rpipico +framework = arduino +build_src_filter = + -<*> + + +monitor_speed = 115200 +board_build.filesystem = littlefs +lib_deps = + bodmer/TFT_eSPI@^2.5.43 + paulstoffregen/XPT2046_Touchscreen@0.0.0-alpha+sha.26b691b2c8 + bblanchon/ArduinoJson@^6.21.5 + lvgl/lvgl@^8.3.11 +build_flags = + -I$PROJECT_DIR/protocol + -Ihardware/firmware/ui/rp2040_tft/include + -DLV_CONF_INCLUDE_SIMPLE + -DUSER_SETUP_LOADED=1 + -DFREENOVE_MEDIA_KIT + -include ui_freenove_config.h + -DFREENOVE_LCD_WIDTH=480 + -DFREENOVE_LCD_HEIGHT=320 + -DFREENOVE_TFT_CS=5 + -DFREENOVE_TFT_DC=6 + -DFREENOVE_TFT_RST=7 + -DFREENOVE_TFT_MOSI=3 + -DFREENOVE_TFT_MISO=4 + -DFREENOVE_TFT_SCK=2 + -DFREENOVE_TOUCH_CS=9 + -DFREENOVE_TOUCH_IRQ=15 + -DFREENOVE_UART_TX=0 + -DFREENOVE_UART_RX=1 + -DFREENOVE_LCD_ROTATION=1 + -DSPI_FREQUENCY=40000000 + -DSPI_READ_FREQUENCY=20000000 + -DSPI_TOUCH_FREQUENCY=2500000 + -DSUPPORT_TRANSACTIONS + -DUI_LCD_SPI_HOST=0 + -DUI_SERIAL_BAUD=57600 + -DUI_ROTATION=1 + -DILI9488_DRIVER + -DTFT_RGB_ORDER=TFT_BGR + +; ===================== ESP8266 OLED ===================== + +[env:esp8266_oled] +platform = espressif8266 +board = nodemcuv2 +framework = arduino +build_src_filter = + -<*> + + +monitor_speed = 115200 +monitor_filters = time, colorize, esp8266_exception_decoder +monitor_echo = yes +monitor_eol = LF +monitor_rts = 0 +monitor_dtr = 0 +lib_deps = + adafruit/Adafruit SSD1306@^2.5.13 + adafruit/Adafruit GFX Library@^1.12.1 + plerup/EspSoftwareSerial@^8.2.0 + olikraus/U8g2@^2.36.2 + bblanchon/ArduinoJson@^6.21.5 +build_flags = + -Iprotocol + +# +# Pour builder tous les firmwares : +# pio run +# Pour builder un firmware spécifique : +# pio run -e +# Pour flasher/monitorer : +# pio run -e -t upload --upload-port +# pio device monitor -e --port +# +# Voir docs/protocols/ pour la documentation centralisée +# diff --git a/ui_freenove_allinone/AGENT_FUSION.md b/ui_freenove_allinone/AGENT_FUSION.md new file mode 100644 index 0000000..d78a45f --- /dev/null +++ b/ui_freenove_allinone/AGENT_FUSION.md @@ -0,0 +1,37 @@ + +# AGENT_FUSION.md – Firmware All-in-One Freenove + +## Objectif + +Fusionner les rôles audio, scénario, UI, stockage et gestion hardware dans un firmware unique pour le Media Kit Freenove, avec structure modulaire, traçabilité agent, et conformité aux specs suivantes : + + +### Plan d’intégration complète (couverture specs) + +- Fichiers de scènes et écrans individuels, stockés sur LittleFS (data/) ✔️ +- Navigation UI dynamique (LVGL, écrans générés depuis fichiers) ✔️ +- Exécution de scénarios (lecture, transitions, actions, audio) ✔️ +- Gestion audio (lecture/stop, mapping fichiers LittleFS) ✔️ +- Gestion boutons et tactile (événements, mapping, callbacks) ✔️ +- Fallback robuste si fichier manquant (scénario par défaut) ✔️ +- Génération de logs et artefacts (logs/, artifacts/) ✔️ +- Validation hardware sur Freenove (affichage, audio, boutons, tactile) ⏳ +- Documentation et onboarding synchronisés ⏳ + +### Structure modulaire + +- audio_manager.{h,cpp} : gestion audio +- scenario_manager.{h,cpp} : gestion scénario +- ui_manager.{h,cpp} : gestion UI dynamique (LVGL) +- button_manager.{h,cpp} : gestion boutons +- touch_manager.{h,cpp} : gestion tactile +- storage_manager.{h,cpp} : gestion LittleFS, fallback + +### Points critiques à valider + +- Robustesse du fallback LittleFS +- Synchronisation UI/scénario/audio +- Mapping dynamique boutons/tactile +- Logs d’évidence et artefacts produits + +Voir AGENT_TODO.md pour le suivi détaillé et la progression. diff --git a/ui_freenove_allinone/AGENT_TODO.md b/ui_freenove_allinone/AGENT_TODO.md new file mode 100644 index 0000000..fe58301 --- /dev/null +++ b/ui_freenove_allinone/AGENT_TODO.md @@ -0,0 +1,56 @@ +## Validation hardware – TODO détaillée + +- [ ] Compiler et flasher le firmware sur le Freenove Media Kit +- [ ] Préparer les fichiers de test sur LittleFS (/data/scene_*.json, /data/screen_*.json, /data/*.wav) +- [ ] Vérifier l’affichage TFT (boot, écran dynamique, transitions) +- [ ] Tester la réactivité tactile (zones, coordonnées, mapping) +- [ ] Tester les boutons physiques (appui, mapping, transitions) +- [ ] Tester la lecture audio (fichiers présents/absents, fallback) +- [ ] Observer les logs série (initialisation, actions, erreurs) +- [ ] Générer et archiver les logs d’évidence (logs/) +- [ ] Produire un artefact de validation (artifacts/) +- [ ] Documenter toute anomalie ou limitation hardware constatée + +## Revue finale – Checklist agents + +- [ ] Vérifier la cohérence de la structure (dossiers, modules, scripts) +- [ ] Relire AGENT_FUSION.md (objectifs, couverture specs, structure) +- [ ] Relire README.md (usage, build, validation, modules) +- [ ] Relire la section onboarding (docs/QUICKSTART.md, etc.) +- [ ] Vérifier la présence et la robustesse du fallback LittleFS +- [ ] Vérifier la traçabilité des logs et artefacts +- [ ] Vérifier la synchronisation UI/scénario/audio +- [ ] Vérifier la gestion dynamique des boutons/tactile +- [ ] Vérifier la non-régression sur les autres firmwares (split) + +# TODO Agent – Firmware All-in-One Freenove + + +## Plan d’intégration détaillé (COMPLÉTÉ) + +- [x] Vérifier la présence du scénario par défaut sur LittleFS +- [x] Charger la liste des fichiers de scènes et d’écrans (data/) +- [x] Initialiser la navigation UI (LVGL, écrans dynamiques) +- [x] Mapper les callbacks boutons/tactile vers la navigation UI +- [x] Préparer le fallback LittleFS si fichier manquant +- [x] Logger l’initialisation (logs/) + +- [x] Boucle principale d’intégration + - [x] Navigation UI (LVGL, écrans dynamiques) + - [x] Exécution scénario (lecture, actions, transitions) + - [x] Gestion audio (lecture, stop, files LittleFS) + - [x] Gestion boutons/tactile (événements, mapping) + - [x] Gestion stockage (LittleFS, fallback) + - [x] Logs/artefacts + +## Validation hardware (EN COURS) + +- [ ] Tests sur Freenove Media Kit (affichage, audio, boutons, tactile) +- [ ] Génération de logs d’évidence (logs/) +- [ ] Production d’artefacts de validation (artifacts/) + +## Documentation + +- [ ] Mise à jour README.md (usage, build, structure) +- [ ] Mise à jour AGENT_FUSION.md (règles d’intégration, conventions) +- [ ] Synchronisation avec la doc onboarding principale diff --git a/ui_freenove_allinone/RC_FINAL_BOARD.md b/ui_freenove_allinone/RC_FINAL_BOARD.md new file mode 100644 index 0000000..a2571b3 --- /dev/null +++ b/ui_freenove_allinone/RC_FINAL_BOARD.md @@ -0,0 +1,155 @@ +# Multiplexage des broches – Attention + +Cible matérielle : **ESP32-S3-WROOM-1-N16R8**. + +Certaines broches sont partagées entre plusieurs fonctions : +- GPIO 4 : utilisé pour le rétroéclairage (BL) et le bouton 3 (BTN3) +- GPIO 5 : utilisé pour le Chip Select TFT (CS) et le bouton 4 (BTN4) + +Ce multiplexage impose : +- De ne pas activer simultanément les deux fonctions sur une même broche +- De documenter explicitement ce partage dans le firmware et la doc +- De vérifier le comportement lors des tests (priorité, conflits) + +Recommandation : ajouter des commentaires dans ui_freenove_config.h et tester chaque usage séparément. +# Périphériques additionnels – Détail par fonction + +## I2C +- SDA : GPIO 8 +- SCL : GPIO 9 +- Usage : bus capteurs (ex : MPU6050, DHT11) +- Remarque : vérifier pull-up, adresser chaque périphérique + +## LED +- LED : GPIO 13 +- Usage : indicateur d’état, feedback utilisateur +- Remarque : pilotable en PWM + +## Buzzer +- Buzzer : GPIO 12 +- Usage : signal sonore, alerte +- Remarque : pilotable en PWM + +## DHT11 +- DHT11 : GPIO 14 +- Usage : capteur température/humidité +- Remarque : nécessite librairie DHT11, attention au timing + +## MPU6050 +- MPU6050 : I2C (SDA=8, SCL=9), adresse 0x68 +- Usage : capteur IMU (accéléro/gyro) +- Remarque : vérifier alimentation, pull-up I2C +# Synthèse technique & onboarding audio ESP32-S3 (Freenove) + +### Absence de DAC matériel et fallback I2S + +- **ESP32-S3 ne possède pas de DAC intégré** : toute sortie audio doit passer par l’interface I2S. +- **I2S (Inter-IC Sound)** : protocole série dédié à l’audio, géré par deux périphériques sur ESP32-S3. Permet d’envoyer des samples vers un DAC externe ou un ampli via filtre passe-bas. +- **Modes supportés** : Standard (Philips/MSB/PCM), PDM, TDM. Mode standard ou PDM recommandé. +- **API Espressif** : utiliser les drivers ESP-IDF (`driver/i2s_std.h`, `driver/i2s_pdm.h`). +- **Exemple minimal** : initialiser canal TX, configurer mode standard, activer canal, envoyer samples. +- **Recommandations** : + - Utiliser un DAC externe (ex : ES8311, PCM5102, ampli + filtre RC) + - Adapter le mapping GPIO selon le schéma Freenove + - Pour PDM, exploiter le convertisseur PCM2PDM matériel + - Consulter les exemples Espressif : [i2s_basic/i2s_std](https://github.com/espressif/esp-idf/tree/master/examples/peripherals/i2s/i2s_basic/i2s_std), [i2s_codec/i2s_es8311](https://github.com/espressif/esp-idf/tree/master/examples/peripherals/i2s/i2s_codec/i2s_es8311) + +### Onboarding : Marche à suivre pour l’audio ESP32-S3 + +1. **Vérifier le schéma hardware** : identifier les broches I2S (BCLK, WS, DOUT) et le DAC/ampli. +2. **Configurer le firmware** : adapter le mapping dans `ui_freenove_config.h` et `platformio.ini`. +3. **Utiliser le fallback I2S** : remplacer tout appel à `dacWrite` par une routine I2S (`i2sWriteSample`). +4. **Initialiser I2S** : suivre l’exemple Espressif pour la configuration du canal, du clock, des slots et des GPIO. +5. **Tester l’audio** : utiliser un signal simple (ex : sinusoïde) pour valider la sortie. +6. **Documenter la traçabilité** : reporter les étapes, patchs et artefacts dans [docs/AGENT_TODO.md](docs/AGENT_TODO.md). + +### Liens techniques + +- [Espressif I2S API Reference](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/peripherals/i2s.html) +- [Exemples I2S Espressif](https://github.com/espressif/esp-idf/tree/master/examples/peripherals/i2s) +- [Datasheet ESP32-S3](https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf) +- [Arduino-ESP32 Documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/) + +--- + +## Synthèse audit et traçabilité (17/02/2026) + +- Audit de cohérence exécuté (artifacts/audit/firmware_20260217) : RESULT=PASS +- Mapping hardware, scripts, onboarding, traçabilité validés +- Correction audio ESP32-S3 : fallback I2S, conditional compilation, documentation +- Evidence : logs et artefacts non versionnés, paths/timestamps tracés dans AGENT_TODO.md et rapport d’audit +- Rapport et synthèse prêts à partager (voir artifacts/audit/firmware_20260217) + +--- + +## Mode ciblé et automatisation (2026) + +- Pour cibler un environnement spécifique (ex : Freenove ESP32-S3), utiliser la variable d’environnement : + - `ZACUS_ENV="freenove_esp32s3" ./tools/dev/run_matrix_and_smoke.sh` +- Ne pas passer d’argument en ligne de commande (option non reconnue) +- Le cockpit détecte automatiquement le hardware et propose le build/smoke ciblé +- Les logs et artefacts sont synchronisés avec AGENT_TODO.md pour traçabilité +- En cas d’échec UI link, consulter les logs et relancer le test (retry automatique en cours d’intégration) + +--- + +# Onboarding : sélection d’environnement + +- La sélection de l’environnement hardware (Freenove ESP32-S3, ESP32, ESP8266, etc.) se fait **exclusivement** via la variable d’environnement `ZACUS_ENV`. +- Ne jamais passer l’environnement en argument CLI : tous les scripts (build, flash, smoke) détectent la cible via `ZACUS_ENV`. +- Exemple : pour tester sur Freenove ESP32-S3 : + + ```bash + export ZACUS_ENV="freenove_esp32s3" + ./tools/dev/cockpit.sh smoke + ``` + +- Les scripts cockpit.sh, build_all.sh, run_matrix_and_smoke.sh, etc. utilisent cette variable pour déterminer la cible, le mapping hardware, et les artefacts. + +# UI link : retry et diagnostic + +- Le check UI link (connexion UI ESP32/ESP8266) intègre désormais une logique de retry automatique (3 essais par défaut, paramétrable via `ZACUS_UI_LINK_RETRIES`). +- En cas d’échec, le script logue chaque tentative, synchronise l’évidence dans `docs/AGENT_TODO.md`, et produit un rapport détaillé dans les artefacts. +- Toute évolution ou échec du protocole UI link est traçable dans les logs et la documentation. + +# cockpit.sh : automatisation smoke test + +- cockpit.sh détecte automatiquement la cible hardware via `ZACUS_ENV` et lance le smoke test adapté (Freenove, ESP32, ESP8266, etc.) sans intervention manuelle. +- En mode CI ou batch (`CI=true` ou `ZACUS_BATCH=1`), les prompts USB sont désactivés : la détection est automatique, le countdown est skip, aucun blocage. + +# Synchronisation evidence/logs + +- Chaque run (succès ou échec) synchronise l’évidence (artefacts, logs, verdict) dans `docs/AGENT_TODO.md`. +- Les artefacts et logs sont produits dans `hardware/firmware/artifacts/` et `hardware/firmware/logs/`. +- La traçabilité est assurée pour chaque run, avec horodatage, chemin, et verdict. + +# Prompt USB : optimisation CI/batch + +- En mode CI ou batch, les prompts USB sont automatiquement désactivés : aucun countdown, aucune interaction requise. +- Les scripts détectent le mode batch et adaptent le comportement pour garantir la non-interactivité. + +--- + +# Mapping hardware – ESP32-S3 Freenove Media Kit + +| Fonction | Broche ESP32-S3 | Signal TFT/Touch/Audio | Remarques | +|------------------|-----------------|-----------------------|--------------------------------| +| TFT SCK | GPIO 47 | SCK | SPI écran (FNK0102B) | +| TFT MOSI | GPIO 21 | MOSI | SPI écran | +| TFT MISO | -1 | MISO | non utilisé | +| TFT CS | -1 | CS | câblage board intégré | +| TFT DC | GPIO 45 | DC | Data/Command écran | +| TFT RESET | GPIO 20 | RESET | Reset écran | +| TFT BL | GPIO 2 | BL | Rétroéclairage | +| Touch CS | GPIO 9 | CS (XPT2046) | optionnel (`FREENOVE_HAS_TOUCH`) | +| Touch IRQ | GPIO 15 | IRQ (XPT2046) | optionnel | +| Boutons | GPIO 19 | ADC ladder (5 touches)| key1..key5 par seuils analogiques | +| Audio I2S WS | GPIO 41 | WS | profil principal Sketch_19 | +| Audio I2S BCK | GPIO 42 | BCK | profil principal Sketch_19 | +| Audio I2S DOUT | GPIO 1 | DOUT | profil principal Sketch_19 | +| Alim écran/audio | 3V3/5V/GND | - | Respecter les tensions | + +**Remarques** : +- Profil audio runtime sélectionnable par série: `AUDIO_PROFILE ` puis `AUDIO_TEST`. +- Profils fournis: `0=sketch19`, `1=swap_bck_ws`, `2=dout2_alt`. +- Le tactile est désactivé par défaut (`FREENOVE_HAS_TOUCH=0`). diff --git a/ui_freenove_allinone/README.md b/ui_freenove_allinone/README.md new file mode 100644 index 0000000..d99c715 --- /dev/null +++ b/ui_freenove_allinone/README.md @@ -0,0 +1,357 @@ + +--- +# 🎛️ Zacus Firmware – Freenove All-in-One + +![Funk](https://media.giphy.com/media/3o7TKtnuHOHHUjR38Y/giphy.gif) + +--- + +## 📝 Description + +Bienvenue dans le cockpit le plus funky du multivers ! Ce firmware fusionne UI, audio, scénarios et hardware sur la carte Freenove Media Kit (ESP32). Ici, chaque pixel danse, chaque bouton groove, et chaque boot est une fête. + +> *"Si tu entends un son rétro ou vois un plasma violet, c’est normal. Si le microcontrôleur se met à rapper, c’est probablement un bug… ou un feature caché."* + +--- + +## 🕹️ Mapping hardware (ESP32-S3 Freenove Media Kit) + +| Fonction | Broche ESP32-S3 | Signal TFT/Touch/Audio | Remarques | +|------------------|-----------------|-----------------------|--------------------------------| +| TFT SCK | GPIO 47 | SCK | SPI écran (FNK0102B) | +| TFT MOSI | GPIO 21 | MOSI | SPI écran | +| TFT MISO | -1 | MISO | non utilisé | +| TFT CS | -1 | CS | câblage board intégré | +| TFT DC | GPIO 45 | DC | Data/Command écran | +| TFT RESET | GPIO 20 | RESET | Reset écran | +| TFT BL | GPIO 2 | BL | Rétroéclairage | +| Touch CS | GPIO 9 | CS (XPT2046) | optionnel (`FREENOVE_HAS_TOUCH`) | +| Touch IRQ | GPIO 15 | IRQ (XPT2046) | optionnel | +| Boutons | GPIO 19 | ADC ladder (5 touches)| key1..key5 par seuils analogiques | +| Audio I2S WS | GPIO 41 | WS | profil principal Sketch_19 | +| Audio I2S BCK | GPIO 42 | BCK | profil principal Sketch_19 | +| Audio I2S DOUT | GPIO 1 | DOUT | profil principal Sketch_19 | +| Alim écran/audio | 3V3/5V/GND | - | Respecter les tensions | + +**Remarques** : +- Profil audio runtime sélectionnable par série: `AUDIO_PROFILE ` puis `AUDIO_TEST`. +- Profils fournis: `0=sketch19`, `1=swap_bck_ws`, `2=dout2_alt`. +- Le tactile est désactivé par défaut (`FREENOVE_HAS_TOUCH=0`). + +--- + +## 📦 Contenu du dossier + +- Sources : `src/` (app, ui, audio, storage, camera, drivers, system) +- Polices : `src/ui/fonts/` +- Layouts d’écran : `src/ui/screens/` +- Partition custom : `partitions/freenove_esp32s3_app6mb_fs6mb.csv` +- Mapping hardware détaillé (voir pour descendre plus haut ) + +--- + +## 🚀 Installation & usage + +1. Clone ce repo, chausse tes lunettes de soleil. +2. Va dans `hardware/firmware` et build comme un DJ : + ```sh + pio run -e freenove_allinone + pio run -e freenove_allinone -t upload --upload-port + ``` +3. Pour la version ESP32-S3 (partition 6MB app / 6MB FS) : + ```sh + pio run -e freenove_esp32s3 + pio run -e freenove_esp32s3 -t buildfs + pio run -e freenove_esp32s3 -t uploadfs --upload-port + pio run -e freenove_esp32s3 -t upload --upload-port + ``` +4. Branche, allume, et laisse la magie opérer. + +--- + +## 🧩 Fonctionnalités qui groovent + +- Navigation UI dynamique (LVGL, écrans générés depuis fichiers) +- Exécution de scénarios (lecture, transitions, actions, audio) +- Gestion audio (lecture/stop, mapping fichiers LittleFS) +- Gestion boutons et tactile (événements, mapping, callbacks) +- Fallback robuste si fichier manquant (scénario par défaut) +- Génération de logs et artefacts (logs/, artifacts/) +- Validation hardware sur Freenove (affichage, audio, boutons, tactile) +- Documentation et onboarding synchronisés +- Mode autonome (pas besoin d’ESP32 séparé) + +> *"Si tu rates un bouton, c’est que tu danses trop fort. Si tu vois un plasma violet, c’est que tu es dans le groove."* + +--- + +## 🛠️ Modules principaux + +- `audio_manager` : fait swinguer l’audio (lecture, stop, état) +- `scenario_manager` : enchaîne les étapes comme un DJ +- `ui_manager` : LVGL, écrans dynamiques, FX visuels +- `storage_manager` : LittleFS (init, vérif, groove des assets) +- `button_manager` : boutons physiques, pour les vrais +- `touch_manager` : tactile XPT2046, pour les DJ du futur + +--- + +## 🦄 Funky extras & notes + +- Firmware expérimental : fusion audio + UI, mode "party hard" activé +- Pour la compatibilité UI Link, prévoir un mode optionnel +- Si tu veux une intro Amiga92, active la scène `SCENE_WIN_ETAPE` et laisse-toi porter par le FX timeline (plasma, starfield, boingball…) +- Pour tester la scène MP3 : `SCENE_MP3_PLAYER` (overlay AmigaAMP, scan `/music`) +- Pour la caméra : `SCENE_CAMERA_SCAN` (Win311 overlay, boutons = SNAP/SAVE/GALLERY/DELETE/CLOSE) +- Pour tout le reste, consulte les logs, et si tu comprends tout du premier coup, tu gagnes un badge "Zacus Funk Master". + +--- + +## 🤝 Contribuer + +Merci de lire [../../../../../../CONTRIBUTING.md](../../../../../../CONTRIBUTING.md) avant toute PR. Les pull requests avec punchlines sont encouragées. + +--- + +## 👤 Contact + +Pour toute question, suggestion, ou battle de funk, ouvre une issue GitHub ou contacte l’auteur principal : +- Clément SAILLANT — [github.com/electron-rare](https://github.com/electron-rare) + +> *"Ce firmware a été validé par un oscilloscope, un grille-pain, et un synthé vintage. Si tu trouves un bug, c’est peut-être un easter egg ou feat foirée."* +--- + +# Firmware Freenove Media Kit All-in-One + +## Plan d’intégration complète (couverture specs) + +- Fichiers de scènes et écrans individuels, stockés sur LittleFS (data/) +- Navigation UI dynamique (LVGL, écrans générés depuis fichiers) +- Exécution de scénarios (lecture, transitions, actions, audio) +- Gestion audio (lecture/stop, mapping fichiers LittleFS) +- Gestion boutons et tactile (événements, mapping, callbacks) +- Fallback robuste si fichier manquant (scénario par défaut) +- Génération de logs et artefacts (logs/, artifacts/) +- Validation hardware sur Freenove (affichage, audio, boutons, tactile) +- Documentation et onboarding synchronisés + +## Structure modulaire + +- `src/app/*` : orchestration runtime (`main`, `scenario_manager`, coordinator serie) +- `src/ui/*` : LVGL scenes, fonts, FX helpers (`ui_manager`, `ui_fonts`, `ui/fx`) +- `src/audio/*` : gestion audio runtime (`audio_manager`) +- `src/storage/*` : LittleFS/SD et resolution assets (`storage_manager`) +- `src/camera/*` : camera runtime (`camera_manager`) +- `src/drivers/*` : board I/O (input, board, display HAL + SPI bus manager) +- `src/system/*` : metrics, boot report, reseau/media wrappers, task topology +- headers legacy (`include/*_manager.h`) conserves en facades vers les headers modulaires + +Ce firmware combine : +- Les fonctions audio/scénario (type ESP32 Audio) +- L’UI locale (affichage, interaction, tactile, boutons) +- Le tout sur un seul microcontrôleur (RP2040 ou ESP32 selon le kit) + + +## Fonctionnalités +- Lecture audio, gestion scénario, LittleFS +- Affichage TFT tactile (LVGL) +- Boutons physiques, capteurs, extensions +- Mode autonome (pas besoin d’ESP32 séparé) + +## Modules principaux +- audio_manager : gestion audio (lecture, stop, état) +- scenario_manager : gestion scénario (étapes, transitions) +- ui_manager : gestion UI (LVGL, écrans dynamiques) +- storage_manager : gestion LittleFS (init, vérification) +- button_manager : gestion boutons physiques +- touch_manager : gestion tactile XPT2046 + +## Validation hardware +- Compiler et flasher sur le Freenove Media Kit +- Vérifier l’affichage, la réactivité tactile et boutons +- Tester la lecture audio (fichiers dans /data/) +- Consulter les logs série pour le suivi d’exécution + +## Artefacts +- Firmware compilé (.bin) +- Logs de test hardware (logs/) +- Rapport de compatibilité assets LittleFS + +## Build + +Depuis `hardware/firmware` : + +```sh +pio run -e freenove_allinone +pio run -e freenove_allinone -t upload --upload-port +``` + +## Build Freenove ESP32-S3 (partition 6MB app / 6MB FS) + +```sh +pio run -e freenove_esp32s3 +pio run -e freenove_esp32s3 -t buildfs +pio run -e freenove_esp32s3 -t uploadfs --upload-port +pio run -e freenove_esp32s3 -t upload --upload-port +``` + +- Partition custom active: `partitions/freenove_esp32s3_app6mb_fs6mb.csv`. +- Le bundle story complet n'est plus embarque dans le firmware: `buildfs/uploadfs` est requis pour charger le contenu complet (screens/audio/actions/apps). +- Fallback embarque minimal conserve: `APP_WIFI` + scenario `DEFAULT` minimal. + +## Norme embarquee (audit + refacto) + +- Standard projet: `docs/skills/EMBEDDED_CPP_OO_ESP32S3_PIO_ARDUINO.md`. +- Toute revue technique Freenove doit citer cette norme pour les risques temps reel, memoire, concurrence et style OO. + +## Provisioning Wi-Fi + Auth WebUI + +- Au boot sans credentials NVS: + - mode setup AP actif; + - endpoints setup ouverts: `GET /api/provision/status`, `POST /api/wifi/connect`, `POST /api/network/wifi/connect`. +- Hors setup: + - auth Bearer requise sur `/api/*`: + - `Authorization: Bearer `. +- Provisioning persistant: + - API: `POST /api/wifi/connect` (ou `/api/network/wifi/connect`) avec `persist=1`. + - Serie: `WIFI_PROVISION `. +- Rotation token: + - Serie: `AUTH_TOKEN_ROTATE [token]`. +- Outils shell: + - `tools/dev/healthcheck_wifi.sh` et `tools/dev/rtos_wifi_health.sh` supportent `ZACUS_WEB_TOKEN`. + +## LVGL graphics stack (ESP32-S3) + +- Le runtime Freenove (`env:freenove_esp32s3*`) supporte: + - `LV_COLOR_DEPTH=8` (RGB332) avec conversion RGB565 au flush. + - draw buffers lignes en double-buffer. + - flush DMA asynchrone (overlap draw/transfert) avec fallback sync. +- Flags principaux (`platformio.ini`): + - `UI_COLOR_256`, `UI_COLOR_565`, `UI_FORCE_THEME_256` + - `UI_DRAW_BUF_LINES`, `UI_DRAW_BUF_IN_PSRAM` + - `UI_DMA_FLUSH_ASYNC`, `UI_DMA_TRANS_BUF_LINES` + - `UI_FULL_FRAME_BENCH`, `UI_LV_MEM_SIZE_KB` +- Commandes debug serie: + - `UI_GFX_STATUS` + - `UI_MEM_STATUS` +- Documentation associee: + - `docs/ui/graphics_stack.md` + - `docs/ui/lvgl_memory_budget.md` + - `docs/ui/fonts_fr.md` + +## Mapping hardware +- Voir `include/ui_freenove_config.h` pour l’adaptation des pins +- Schéma de branchement : se référer à la doc Freenove + +## Notes +- Ce firmware est expérimental et fusionne les logiques audio + UI. +- Pour la compatibilité UI Link, prévoir un mode optionnel. + +## Intro Amiga92 (`SCENE_WIN_ETAPE`) + +- Activation: l'intro A/B/C est lancee automatiquement quand `screen_scene_id == SCENE_WIN_ETAPE`. +- Mode runtime: `FX_ONLY_V9` avec rendu timeline FX (plasma/starfield/rasterbars + tunnel3d/rotozoom/wirecube + boingball) et overlay LVGL conserve. +- Sequence timeline verrouillee: `A(30000ms) -> B(15000ms) -> C(20000ms) -> C loop`. +- Mapping presets (default): + - A: `demo` + - B: `winner` + - C: `boingball` +- Font scroller default: `italic`. +- BPM default: `125`. +- Boing shadow path: assembleur S3 active par defaut (`UI_BOING_SHADOW_ASM=1`) avec fallback C automatique. +- Log de boot FX: `boing_shadow_path=asm|c`. + +### Overrides runtime (TXT + JSON) + +- Priorite de lecture: + 1) `/ui/scene_win_etape.json` + 2) `/SCENE_WIN_ETAPE.json` + 3) `/ui/SCENE_WIN_ETAPE.json` + 4) `/ui/scene_win_etape.txt` +- Cles supportees: + - `A_MS`, `B_MS`, `C_MS` + - `FX_PRESET_A`, `FX_PRESET_B`, `FX_PRESET_C` (`demo|winner|fireworks|boingball`) + - `FX_MODE_A`, `FX_MODE_B`, `FX_MODE_C` (`classic|starfield3d|dotsphere3d|voxel|raycorridor`) + - `FX_SCROLL_TEXT_A`, `FX_SCROLL_TEXT_B`, `FX_SCROLL_TEXT_C` + - `FX_SCROLL_FONT` (`basic|bold|outline|italic`) + - `FX_BPM` (`60..220`) +- Rupture de compatibilite volontaire: + - anciennes cles FX `FX_3D`, `FX_3D_QUALITY`, `FONT_MODE` ne sont plus prises en charge dans ce flux. + +Exemples: +- JSON: `data/SCENE_WIN_ETAPE.json` +- TXT: `data/ui/scene_win_etape.txt` + +### Perf notes + +- Tick fixe: `42 ms` (`~24 FPS` cible), `dt` clamp pour robustesse. +- Zero allocation par frame dans la boucle intro (`tickIntro`). +- Blit LGFX: fast-path 2x active (`UI_FX_BLIT_FAST_2X=1`) si ratio source/ecran exact, fallback scaler general sinon. +- Caps objets scene: `<=140` (petit ecran), `<=260` (grand ecran). +- Pools fixes: + - stars: `48` + - fireworks: `72` + - wave glyph+shadow: `64 + 64` +- `UI_GFX_STATUS` expose `fx_fps/fx_frames/fx_skip_busy` + compteurs `flush_block/overflow` pour diagnostiquer les saccades LVGL/FX. + +## Scenes demoscene exposees + +- IDs canoniques ajoutes: `SCENE_WINNER`, `SCENE_FIREWORKS`. +- Fichiers data: + - `data/story/screens/SCENE_WINNER.json` + - `data/story/screens/SCENE_FIREWORKS.json` +- Registry story: `hardware/libs/story/src/resources/screen_scene_registry.cpp`. + +## Scene lecteur MP3 (`SCENE_MP3_PLAYER`) + +- Scene canonique: `SCENE_MP3_PLAYER`. +- Aliases supportes: `SCENE_AUDIO_PLAYER`, `SCENE_MP3`. +- Data scene: `data/story/screens/SCENE_MP3_PLAYER.json`. +- Mode runtime: overlay LVGL "AmigaAMP" + backend `AudioPlayerService` (scan `/music`, fallback `/audio/music`, fallback `/audio`). +- Arbitrage audio: + - en scene MP3, l'audio scenario est suspendu; + - en sortie de scene MP3, pipeline audio scenario restaure. +- Commandes serie: + - `AMP_SHOW`, `AMP_HIDE`, `AMP_TOGGLE` + - `AMP_SCAN`, `AMP_PLAY `, `AMP_NEXT`, `AMP_PREV`, `AMP_STOP`, `AMP_STATUS` + +## Scene camera recorder (`SCENE_CAMERA_SCAN`) + +- Binding scene: entree `SCENE_CAMERA_SCAN` -> session recorder camera active (`RGB565/QVGA`) + overlay Win311 visible. +- Sortie scene: overlay masque, frame gelee purgee, retour mode snapshot legacy (`JPEG`). +- Mapping boutons physiques: + - `BTN1`: `SNAP/LIVE` + - `BTN2`: `SAVE` + - `BTN3`: `GALLERY` (appui long: `NEXT`) + - `BTN4`: `DELETE` + - `BTN5`: `CLOSE` overlay +- Commandes serie: + - `CAM_UI_SHOW`, `CAM_UI_HIDE`, `CAM_UI_TOGGLE` + - `CAM_REC_SNAP`, `CAM_REC_SAVE [auto|bmp|jpg|raw]` + - `CAM_REC_GALLERY`, `CAM_REC_NEXT`, `CAM_REC_DELETE`, `CAM_REC_STATUS` +- Ownership runtime: + - pendant `SCENE_CAMERA_SCAN`, les boutons physiques ne sont pas forwardes au scenario; + - commandes legacy `CAM_ON/CAM_OFF/CAM_SNAPSHOT` renvoient `camera_busy_recorder_owner`. + +### Visual verification mode + +- Build flags (env `freenove_esp32s3`) pour tests scene: + - `UI_FULL_FRAME_BENCH=1` + - `UI_DEMO_AUTORUN_WIN_ETAPE=1` +- Quand ces flags sont actifs: + - la scene `SCENE_WIN_ETAPE` demarre automatiquement au boot; + - la phase C continue en boucle tant que la scene reste active; + - `UI_GFX_STATUS` permet de verifier le mode runtime (depth/full_frame/source). + +### References consulted + +- https://www.pouet.net/prodlist.php?type%5B0%5D=cracktro +- https://www.youtube.com/results?search_query=amiga+cracktro +- https://www.youtube.com/results?search_query=amiga+demoscene+1992 +- https://www.theflatnet.de/pub/cbm/amiga/AmigaDevDocs/hard_2.html +- https://www.theflatnet.de/pub/cbm/amiga/AmigaDevDocs/ +- https://www.markwrobel.dk/project/amigamachinecode/ +- https://www.markwrobel.dk/post/amiga-machine-code-letter3-copper-revisited/ +- https://www.markwrobel.dk/post/amiga-machine-code-letter12-starfield-effect/ +- https://www.markwrobel.dk/post/amiga-machine-code-letter12-wave/ +- https://github.com/mrandreastoth/AmigaStyleDemo diff --git a/ui_freenove_allinone/include/README.md b/ui_freenove_allinone/include/README.md new file mode 100644 index 0000000..b7c2dc9 --- /dev/null +++ b/ui_freenove_allinone/include/README.md @@ -0,0 +1,4 @@ +# include/ +Headers pour le firmware Freenove all-in-one (fusion audio + UI). +- ui_freenove_config.h : mapping hardware +- Ajouter ici les headers fusionnés (audio, scenario, UI, etc.) diff --git a/ui_freenove_allinone/include/app/app_coordinator.h b/ui_freenove_allinone/include/app/app_coordinator.h new file mode 100644 index 0000000..df973bf --- /dev/null +++ b/ui_freenove_allinone/include/app/app_coordinator.h @@ -0,0 +1,18 @@ +// app_coordinator.h - runtime orchestration facade for setup/loop. +#pragma once + +#include + +#include "runtime/runtime_services.h" +#include "app/serial_command_router.h" + +class AppCoordinator { + public: + bool begin(RuntimeServices* services); + void tick(uint32_t now_ms); + void onSerialLine(const char* command_line, uint32_t now_ms); + + private: + RuntimeServices* services_ = nullptr; + SerialCommandRouter serial_router_; +}; diff --git a/ui_freenove_allinone/include/app/runtime_scene_service.h b/ui_freenove_allinone/include/app/runtime_scene_service.h new file mode 100644 index 0000000..9a1022e --- /dev/null +++ b/ui_freenove_allinone/include/app/runtime_scene_service.h @@ -0,0 +1,18 @@ +// runtime_scene_service.h - scene refresh + audio kick bridge. +#pragma once + +#include + +class RuntimeSceneService { + public: + using RefreshSceneFn = void (*)(bool force_render); + using StartPendingAudioFn = void (*)(); + + void configure(RefreshSceneFn refresh_scene, StartPendingAudioFn start_pending_audio); + void refreshSceneIfNeeded(bool force_render) const; + void startPendingAudioIfAny() const; + + private: + RefreshSceneFn refresh_scene_ = nullptr; + StartPendingAudioFn start_pending_audio_ = nullptr; +}; diff --git a/ui_freenove_allinone/include/app/runtime_serial_service.h b/ui_freenove_allinone/include/app/runtime_serial_service.h new file mode 100644 index 0000000..a58a82a --- /dev/null +++ b/ui_freenove_allinone/include/app/runtime_serial_service.h @@ -0,0 +1,18 @@ +// runtime_serial_service.h - dispatch bridge for serial + control actions. +#pragma once + +#include + +class RuntimeSerialService { + public: + using HandleSerialCommandFn = void (*)(const char* command_line, uint32_t now_ms); + using DispatchControlActionFn = bool (*)(const String& action_raw, uint32_t now_ms, String* out_error); + + void configure(HandleSerialCommandFn handle_serial_command, DispatchControlActionFn dispatch_control_action); + void handleSerialCommand(const char* command_line, uint32_t now_ms) const; + bool dispatchControlAction(const String& action_raw, uint32_t now_ms, String* out_error) const; + + private: + HandleSerialCommandFn handle_serial_command_ = nullptr; + DispatchControlActionFn dispatch_control_action_ = nullptr; +}; diff --git a/ui_freenove_allinone/include/app/runtime_web_service 2.h b/ui_freenove_allinone/include/app/runtime_web_service 2.h new file mode 100644 index 0000000..98575c5 --- /dev/null +++ b/ui_freenove_allinone/include/app/runtime_web_service 2.h @@ -0,0 +1,13 @@ +// runtime_web_service.h - Web UI route setup bridge. +#pragma once + +class RuntimeWebService { + public: + using SetupWebUiFn = void (*)(); + + void configure(SetupWebUiFn setup_web_ui); + void setupWebUi() const; + + private: + SetupWebUiFn setup_web_ui_ = nullptr; +}; diff --git a/ui_freenove_allinone/include/app/runtime_web_service.h b/ui_freenove_allinone/include/app/runtime_web_service.h new file mode 100644 index 0000000..98575c5 --- /dev/null +++ b/ui_freenove_allinone/include/app/runtime_web_service.h @@ -0,0 +1,13 @@ +// runtime_web_service.h - Web UI route setup bridge. +#pragma once + +class RuntimeWebService { + public: + using SetupWebUiFn = void (*)(); + + void configure(SetupWebUiFn setup_web_ui); + void setupWebUi() const; + + private: + SetupWebUiFn setup_web_ui_ = nullptr; +}; diff --git a/ui_freenove_allinone/include/app/scenario_manager.h b/ui_freenove_allinone/include/app/scenario_manager.h new file mode 100644 index 0000000..ef9f4b0 --- /dev/null +++ b/ui_freenove_allinone/include/app/scenario_manager.h @@ -0,0 +1,96 @@ +// scenario_manager.h - Story runtime wrapper for Freenove all-in-one. +#pragma once + +#include +#include + +#include "core/scenario_def.h" + +struct ScenarioSnapshot { + const ScenarioDef* scenario = nullptr; + const StepDef* step = nullptr; + const char* screen_scene_id = nullptr; + const char* audio_pack_id = nullptr; + const char* const* action_ids = nullptr; + uint8_t action_count = 0U; + bool mp3_gate_open = false; +}; + +class ScenarioManager { + public: + static const char* readScenarioField(JsonVariantConst root, + const char* const* candidates, + size_t candidate_count); + + bool begin(const char* scenario_file_path); + bool beginById(const char* scenario_id); + void reset(); + void tick(uint32_t now_ms); + + void notifyUnlock(uint32_t now_ms); + bool notifyUnlockEvent(const char* event_name, uint32_t now_ms); + void notifyButton(uint8_t key, bool long_press, uint32_t now_ms); + void notifyAudioDone(uint32_t now_ms); + bool notifyButtonEvent(const char* event_name, uint32_t now_ms); + bool notifyEspNowEvent(const char* event_name, uint32_t now_ms); + bool notifySerialEvent(const char* event_name, uint32_t now_ms); + bool notifyTimerEvent(const char* event_name, uint32_t now_ms); + bool notifyActionEvent(const char* event_name, uint32_t now_ms); + bool gotoScene(const char* scene_id, uint32_t now_ms, const char* source); + + ScenarioSnapshot snapshot() const; + bool consumeSceneChanged(); + bool consumeAudioRequest(String* out_audio_pack_id); + uint32_t transitionEventMask() const; + void setDebugTransitionBypassEnabled(bool enabled, const char* source); + bool debugTransitionBypassEnabled() const; + + private: + struct StepResourceOverride { + String step_id; + String screen_scene_id; + String audio_pack_id; + static constexpr uint8_t kMaxActionOverrides = 8U; + String action_ids[kMaxActionOverrides]; + const char* action_ptrs[kMaxActionOverrides] = {nullptr}; + uint8_t action_count = 0U; + }; + + static constexpr uint8_t kMaxStepResourceOverrides = 24U; + + void clearStepResourceOverrides(); + void loadStepResourceOverrides(const char* scenario_file_path); + const StepResourceOverride* findStepResourceOverride(const char* step_id) const; + void applyStepResourceOverride(const StepDef* step, + const char** out_screen_scene_id, + const char** out_audio_pack_id, + const char* const** out_action_ids = nullptr, + uint8_t* out_action_count = nullptr) const; + + bool dispatchEvent(StoryEventType type, const char* event_name, uint32_t now_ms, const char* source); + bool applyTransition(const TransitionDef& transition, uint32_t now_ms, const char* source, const char* event_name); + bool runImmediateTransitions(uint32_t now_ms, const char* source, const char* parent_event_name); + void evaluateAfterMsTransitions(uint32_t now_ms); + void enterStep(int8_t step_index, uint32_t now_ms, const char* source, const char* event_name = nullptr); + const StepDef* currentStep() const; + bool transitionMatches(const TransitionDef& transition, StoryEventType type, const char* event_name) const; + bool isTransitionAllowed(const TransitionDef& transition, const char* context, const char* event_name) const; + + const ScenarioDef* scenario_ = nullptr; + int8_t current_step_index_ = -1; + uint32_t step_entered_at_ms_ = 0U; + bool scene_changed_ = false; + bool test_mode_ = false; + bool timer_armed_ = false; + bool timer_fired_ = false; + uint32_t etape2_due_at_ms_ = 0U; + bool win_due_armed_ = false; + bool win_due_fired_ = false; + uint32_t win_due_at_ms_ = 0U; + bool debug_transition_bypass_enabled_ = false; + String pending_audio_pack_; + String forced_screen_scene_id_; + String initial_step_override_; + StepResourceOverride step_resource_overrides_[kMaxStepResourceOverrides]; + uint8_t step_resource_override_count_ = 0U; +}; diff --git a/ui_freenove_allinone/include/app/scene_fx_orchestrator.h b/ui_freenove_allinone/include/app/scene_fx_orchestrator.h new file mode 100644 index 0000000..5db753a --- /dev/null +++ b/ui_freenove_allinone/include/app/scene_fx_orchestrator.h @@ -0,0 +1,38 @@ +// scene_fx_orchestrator.h - explicit owner planning for scene runtime resources. +#pragma once + +#include + +enum class SceneRuntimeOwner : uint8_t { + kStory = 0, + kIntroFx, + kDirectFx, + kAmp, + kCamera, +}; + +struct SceneTransitionPlan { + bool should_apply = false; + bool owner_changed = false; + bool scene_changed = false; + SceneRuntimeOwner from_owner = SceneRuntimeOwner::kStory; + SceneRuntimeOwner to_owner = SceneRuntimeOwner::kStory; + const char* from_scene = ""; + const char* to_scene = ""; +}; + +class SceneFxOrchestrator { + public: + SceneTransitionPlan planTransition(const char* scene_id, bool scene_changed, bool force_refresh); + void applyTransition(const SceneTransitionPlan& plan); + SceneRuntimeOwner currentOwner() const; + const char* currentSceneId() const; + + private: + SceneRuntimeOwner classifyOwner(const char* scene_id) const; + static bool sameText(const char* lhs, const char* rhs); + + SceneRuntimeOwner current_owner_ = SceneRuntimeOwner::kStory; + char current_scene_id_[40] = ""; +}; + diff --git a/ui_freenove_allinone/include/app/serial_command_router.h b/ui_freenove_allinone/include/app/serial_command_router.h new file mode 100644 index 0000000..53b0def --- /dev/null +++ b/ui_freenove_allinone/include/app/serial_command_router.h @@ -0,0 +1,11 @@ +// serial_command_router.h - serial command dispatch bridge. +#pragma once + +#include + +#include "runtime/runtime_services.h" + +class SerialCommandRouter { + public: + bool dispatch(const char* command_line, uint32_t now_ms, RuntimeServices* services) const; +}; diff --git a/ui_freenove_allinone/include/audio/audio_manager.h b/ui_freenove_allinone/include/audio/audio_manager.h new file mode 100644 index 0000000..b4f7298 --- /dev/null +++ b/ui_freenove_allinone/include/audio/audio_manager.h @@ -0,0 +1,116 @@ +// audio_manager.h - Freenove audio playback manager backed by ESP32-audioI2S. +#pragma once + +#include +#include + +#include "ui_freenove_config.h" + +class Audio; + +class AudioManager { + public: + using AudioDoneCallback = void (*)(const char* track, void* ctx); + + AudioManager(); + ~AudioManager(); + AudioManager(const AudioManager&) = delete; + AudioManager& operator=(const AudioManager&) = delete; + AudioManager(AudioManager&&) = delete; + AudioManager& operator=(AudioManager&&) = delete; + + bool begin(); + bool play(const char* filename); + bool playDiagnosticTone(); + void stop(); + void update(); + bool isPlaying() const; + + void setVolume(uint8_t volume); + uint8_t volume() const; + const char* currentTrack() const; + bool setOutputProfile(uint8_t profile_index); + uint8_t outputProfile() const; + uint8_t outputProfileCount() const; + const char* outputProfileLabel(uint8_t profile_index) const; + bool setFxProfile(uint8_t fx_profile_index); + uint8_t fxProfile() const; + uint8_t fxProfileCount() const; + const char* fxProfileLabel(uint8_t fx_profile_index) const; + const char* activeCodec() const; + uint16_t activeBitrateKbps() const; + uint32_t underrunCount() const; + + void setAudioDoneCallback(AudioDoneCallback cb, void* ctx); + + private: + enum class AudioCodec : uint8_t { + kUnknown = 0U, + kMp3 = 1U, + kWav = 2U, + kAac = 3U, + kFlac = 4U, + }; + + bool ensurePlayer(); + bool requestPlay(const char* filename, bool diagnostic_tone); + void applyOutputProfile(); + void applyFxProfile(); + bool normalizeTrackPath(const char* input, String& out_path, bool& out_use_sd) const; + bool trackExists(const String& path, bool use_sd) const; + bool detectTrackCodecAndBitrate(const String& path, bool use_sd, AudioCodec& codec, uint16_t& bitrate_kbps) const; + const char* codecLabel(AudioCodec codec) const; + bool openTrack(const String& path, bool use_sd); + bool beginTrackPlayback(const String& path, + bool use_sd, + AudioCodec codec, + uint16_t bitrate_kbps, + bool diagnostic_tone); + void scheduleTrackStart(const String& path, + bool use_sd, + AudioCodec codec, + uint16_t bitrate_kbps, + bool diagnostic_tone, + uint32_t earliest_ms); + void tryStartPendingTrack(uint32_t now_ms); + void createRtosState(); + void destroyRtosState(); + bool startAudioPump(); + void stopAudioPump(); + void audioPumpLoop(); + static void audioPumpTaskEntry(void* arg); + void processPendingPlaybackEvents(); + void enqueuePlaybackDone(const char* track); + bool takeStateLock(uint32_t timeout_ms) const; + void releaseStateLock() const; + void clearTrackState(); + void finishPlaybackAndNotify(); + + std::unique_ptr

Zacus Freenove WebUI

+
+ + + + + + +
+
+ + + +
+
+ + +
+
+ + + + +
+
+
loading...
+
+ + + +)HTML"; + +template +void webSendJsonDocument(const TDocument& document, int status_code = 200) { + String payload; + serializeJson(document, payload); + g_web_server.send(status_code, "application/json", payload); +} + +void webSendResult(const char* action, bool ok) { + StaticJsonDocument<192> document; + document["action"] = action; + document["ok"] = ok; + webSendJsonDocument(document, ok ? 200 : 400); +} + +template +bool webParseJsonBody(StaticJsonDocument* out_document) { + if (out_document == nullptr || !g_web_server.hasArg("plain")) { + return false; + } + const String body = g_web_server.arg("plain"); + if (body.isEmpty()) { + return false; + } + const DeserializationError error = deserializeJson(*out_document, body); + return !error; +} + +void clearRuntimeStaCredentials() { + g_network_cfg.local_ssid[0] = '\0'; + g_network_cfg.local_password[0] = '\0'; + g_network_cfg.wifi_test_ssid[0] = '\0'; + g_network_cfg.wifi_test_password[0] = '\0'; +} + +void applyRuntimeStaCredentials(const char* ssid, const char* password) { + copyText(g_network_cfg.local_ssid, sizeof(g_network_cfg.local_ssid), (ssid != nullptr) ? ssid : ""); + copyText(g_network_cfg.local_password, sizeof(g_network_cfg.local_password), (password != nullptr) ? password : ""); + copyText(g_network_cfg.wifi_test_ssid, sizeof(g_network_cfg.wifi_test_ssid), g_network_cfg.local_ssid); + copyText(g_network_cfg.wifi_test_password, sizeof(g_network_cfg.wifi_test_password), g_network_cfg.local_password); +} + +void updateAuthPolicy() { + g_web_auth_required = !g_setup_mode; +} + +bool ensureWebToken(bool rotate_token, bool print_token, bool* out_generated) { + if (out_generated != nullptr) { + *out_generated = false; + } + if (!rotate_token && g_web_auth_token[0] != '\0') { + return true; + } + if (!rotate_token && g_credential_store.loadWebToken(g_web_auth_token, sizeof(g_web_auth_token))) { + return true; + } + if (!g_credential_store.generateWebToken(g_web_auth_token, sizeof(g_web_auth_token))) { + g_web_auth_token[0] = '\0'; + return false; + } + if (!g_credential_store.saveWebToken(g_web_auth_token)) { + g_web_auth_token[0] = '\0'; + return false; + } + if (out_generated != nullptr) { + *out_generated = true; + } + if (print_token) { + Serial.printf("[AUTH] web token=%s\n", g_web_auth_token); + } + return true; +} + +void loadBootProvisioningState() { + clearRuntimeStaCredentials(); + char stored_ssid[sizeof(g_network_cfg.local_ssid)] = {0}; + char stored_password[sizeof(g_network_cfg.local_password)] = {0}; + const bool has_credentials = + g_credential_store.loadStaCredentials(stored_ssid, sizeof(stored_ssid), stored_password, sizeof(stored_password)); + if (has_credentials) { + applyRuntimeStaCredentials(stored_ssid, stored_password); + } + g_setup_mode = !has_credentials; + updateAuthPolicy(); + if (!g_setup_mode) { + bool token_generated = false; + if (!ensureWebToken(false, true, &token_generated)) { + Serial.println("[AUTH] web token load/generation failed"); + } + } +} + +bool provisionWifiCredentials(const char* ssid, + const char* password, + bool persist, + bool* out_connect_started, + bool* out_persisted, + bool* out_token_generated) { + if (out_connect_started != nullptr) { + *out_connect_started = false; + } + if (out_persisted != nullptr) { + *out_persisted = false; + } + if (out_token_generated != nullptr) { + *out_token_generated = false; + } + if (ssid == nullptr || ssid[0] == '\0') { + return false; + } + + bool persisted = true; + if (persist) { + persisted = g_credential_store.saveStaCredentials(ssid, (password != nullptr) ? password : ""); + if (persisted) { + applyRuntimeStaCredentials(ssid, (password != nullptr) ? password : ""); + g_network.configureLocalPolicy(g_network_cfg.local_ssid, + g_network_cfg.local_password, + g_network_cfg.force_ap_if_not_local, + g_network_cfg.local_retry_ms, + g_network_cfg.pause_local_retry_when_ap_client); + g_setup_mode = false; + updateAuthPolicy(); + bool token_generated = false; + if (!ensureWebToken(false, true, &token_generated)) { + persisted = false; + } else if (out_token_generated != nullptr) { + *out_token_generated = token_generated; + } + g_network.stopAp(); + } + } + + const bool connect_started = g_network.connectSta(ssid, (password != nullptr) ? password : ""); + if (out_connect_started != nullptr) { + *out_connect_started = connect_started; + } + if (out_persisted != nullptr) { + *out_persisted = persisted; + } + return connect_started && persisted; +} + +bool forgetWifiCredentials() { + const bool cleared = g_credential_store.clearStaCredentials(); + clearRuntimeStaCredentials(); + g_network.configureLocalPolicy(g_network_cfg.local_ssid, + g_network_cfg.local_password, + g_network_cfg.force_ap_if_not_local, + g_network_cfg.local_retry_ms, + g_network_cfg.pause_local_retry_when_ap_client); + g_network.disconnectSta(); + g_setup_mode = true; + updateAuthPolicy(); + if (g_network_cfg.ap_default_ssid[0] != '\0') { + g_network.startAp(g_network_cfg.ap_default_ssid, g_network_cfg.ap_default_password); + } + return cleared; +} + +bool isSetupWhitelistApiPath(const char* path) { + if (path == nullptr) { + return false; + } + return std::strcmp(path, kProvisionStatusPath) == 0 || std::strcmp(path, kSetupWifiConnectPath) == 0 || + std::strcmp(path, kSetupNetworkWifiConnectPath) == 0; +} + +bool hasValidBearerToken() { + const String header = g_web_server.header(kWebAuthHeaderName); + if (!header.startsWith(kWebAuthBearerPrefix)) { + return false; + } + String token = header.substring(static_cast(std::strlen(kWebAuthBearerPrefix))); + token.trim(); + return g_web_auth_token[0] != '\0' && token == g_web_auth_token; +} + +bool webAuthorizeApiRequest(const char* path) { + if (path == nullptr || std::strncmp(path, "/api/", 5U) != 0) { + return true; + } + if (g_setup_mode) { + if (isSetupWhitelistApiPath(path)) { + return true; + } + g_web_server.send(403, "application/json", "{\"ok\":false,\"error\":\"setup_mode_restricted\"}"); + return false; + } + if (!g_web_auth_required) { + return true; + } + if (g_web_auth_token[0] == '\0') { + g_web_server.send(503, "application/json", "{\"ok\":false,\"error\":\"auth_token_missing\"}"); + return false; + } + if (hasValidBearerToken()) { + return true; + } + g_web_server.send(401, "application/json", "{\"ok\":false,\"error\":\"unauthorized\"}"); + return false; +} + +template +void webOnApi(const char* path, HTTPMethod method, Handler&& handler) { + g_web_server.on(path, method, [path, handler]() { + if (!webAuthorizeApiRequest(path)) { + return; + } + handler(); + }); +} + +void webFillEspNowStatus(JsonObject out, const NetworkManager::Snapshot& net) { + out["ready"] = net.espnow_enabled; + out["peer_count"] = net.espnow_peer_count; + out["tx_ok"] = net.espnow_tx_ok; + out["tx_fail"] = net.espnow_tx_fail; + out["rx_count"] = net.espnow_rx_packets; + out["last_rx_mac"] = String(net.last_rx_peer); + out["last_msg_id"] = String(net.last_msg_id); + out["last_seq"] = net.espnow_last_seq; + out["last_type"] = String(net.last_type); + out["last_ack"] = net.espnow_last_ack; + out["last_payload"] = String(net.last_payload); + out["device_name"] = g_espnow_device_name; + out["send_mode"] = "broadcast"; + out["discovery"] = true; + out["discovery_runtime"] = g_espnow_discovery_runtime_enabled; + out["discovery_interval_ms"] = kEspNowDiscoveryIntervalMs; + JsonArray peers = out["peers"].to(); + for (uint8_t index = 0U; index < g_network.espNowPeerCount(); ++index) { + char peer[18] = {0}; + if (!g_network.espNowPeerAt(index, peer, sizeof(peer))) { + continue; + } + peers.add(peer); + } +} + +void webFillWifiStatus(JsonObject out, const NetworkManager::Snapshot& net) { + out["connected"] = net.sta_connected; + out["has_credentials"] = (g_network_cfg.local_ssid[0] != '\0'); + out["setup_mode"] = g_setup_mode; + out["auth_required"] = g_web_auth_required; + out["token_set"] = (g_web_auth_token[0] != '\0'); + out["ssid"] = String(net.sta_ssid); + out["ip"] = net.sta_connected ? String(net.ip) : String(""); + out["rssi"] = net.rssi; + out["state"] = String(net.state); + out["ap_active"] = net.ap_enabled; + out["ap_ssid"] = String(net.ap_ssid); + out["ap_ip"] = (!net.sta_connected && net.ap_enabled) ? String(net.ip) : String(""); + out["ap_clients"] = net.ap_clients; + out["local_retry_paused"] = net.local_retry_paused; + out["mode"] = String(net.mode); +} + +void webFillHardwareStatus(JsonObject out) { + const HardwareManager::Snapshot& hw = g_hardware.snapshotRef(); + out["ready"] = hw.ready; + out["enabled_on_boot"] = g_hardware_cfg.enabled_on_boot; + out["led_auto_from_scene"] = g_hardware_cfg.led_auto_from_scene; + out["telemetry_period_ms"] = g_hardware_cfg.telemetry_period_ms; + out["ws2812_ready"] = hw.ws2812_ready; + out["mic_ready"] = hw.mic_ready; + out["battery_ready"] = hw.battery_ready; + out["led_manual"] = hw.led_manual; + out["backlight_level"] = g_lcd_backlight_level; + out["backlight_mode"] = g_scene_backlight_mode; + JsonObject led = out["led"].to(); + led["r"] = hw.led_r; + led["g"] = hw.led_g; + led["b"] = hw.led_b; + led["mode"] = hw.led_mode; + led["one_led_at_a_time"] = hw.led_one_at_a_time; + out["led_brightness"] = hw.led_brightness; + out["mic_enabled"] = g_hardware_cfg.mic_enabled; + out["mic_threshold_pct"] = g_hardware_cfg.mic_event_threshold_pct; + out["mic_level_pct"] = hw.mic_level_percent; + out["mic_peak"] = hw.mic_peak; + out["mic_noise_floor"] = hw.mic_noise_floor; + out["mic_gain_pct"] = hw.mic_gain_percent; + out["mic_freq_hz"] = hw.mic_freq_hz; + out["mic_pitch_cents"] = hw.mic_pitch_cents; + out["mic_pitch_confidence"] = hw.mic_pitch_confidence; + JsonObject la_trigger = out["la_trigger"].to(); + la_trigger["enabled"] = g_hardware_cfg.mic_la_trigger_enabled; + la_trigger["target_hz"] = g_hardware_cfg.mic_la_target_hz; + la_trigger["tolerance_hz"] = g_hardware_cfg.mic_la_tolerance_hz; + la_trigger["max_abs_cents"] = g_hardware_cfg.mic_la_max_abs_cents; + la_trigger["min_confidence"] = g_hardware_cfg.mic_la_min_confidence; + la_trigger["min_level_pct"] = g_hardware_cfg.mic_la_min_level_pct; + la_trigger["stable_ms"] = g_hardware_cfg.mic_la_stable_ms; + la_trigger["release_ms"] = g_hardware_cfg.mic_la_release_ms; + la_trigger["cooldown_ms"] = g_hardware_cfg.mic_la_cooldown_ms; + la_trigger["timeout_ms"] = g_hardware_cfg.mic_la_timeout_ms; + la_trigger["sequence_enabled"] = g_hardware_cfg.mic_la_sequence_enabled; + la_trigger["sequence_note_hold_ms"] = g_hardware_cfg.mic_la_sequence_note_hold_ms; + la_trigger["sequence_count"] = g_hardware_cfg.mic_la_sequence_count; + JsonArray sequence = la_trigger["sequence_hz"].to(); + for (uint8_t idx = 0U; idx < g_hardware_cfg.mic_la_sequence_count && + idx < RuntimeHardwareConfig::kLaSequenceMaxNotes; + ++idx) { + sequence.add(g_hardware_cfg.mic_la_sequence_hz[idx]); + } + la_trigger["event_name"] = g_hardware_cfg.mic_la_event_name; + la_trigger["gate_active"] = g_la_trigger.gate_active; + la_trigger["sample_match"] = g_la_trigger.sample_match; + la_trigger["locked"] = g_la_trigger.locked; + la_trigger["timeout_pending"] = g_la_trigger.timeout_pending; + la_trigger["stable_now_ms"] = g_la_trigger.stable_ms; + la_trigger["stable_pct"] = laStablePercent(); + la_trigger["sequence_index"] = g_la_trigger.sequence_index; + la_trigger["sequence_target_hz"] = g_la_trigger.sequence_target_hz; + out["battery_enabled"] = g_hardware_cfg.battery_enabled; + out["battery_low_pct"] = g_hardware_cfg.battery_low_pct; + out["battery_pct"] = hw.battery_percent; + out["battery_mv"] = hw.battery_cell_mv; + out["charging"] = hw.charging; + out["last_button"] = hw.last_button; + out["scene_id"] = hw.scene_id; +} + +void webFillCameraStatus(JsonObject out) { + const CameraManager::Snapshot camera = g_camera.snapshot(); + out["supported"] = camera.supported; + out["enabled"] = camera.enabled; + out["initialized"] = camera.initialized; + out["enabled_on_boot"] = g_camera_cfg.enabled_on_boot; + out["frame_size"] = camera.frame_size; + out["jpeg_quality"] = camera.jpeg_quality; + out["fb_count"] = camera.fb_count; + out["xclk_hz"] = camera.xclk_hz; + out["snapshot_dir"] = camera.snapshot_dir; + out["capture_count"] = camera.capture_count; + out["fail_count"] = camera.fail_count; + out["last_capture_ms"] = camera.last_capture_ms; + out["last_file"] = camera.last_file; + out["last_error"] = camera.last_error; + out["scene_active"] = g_camera_scene_active; + out["ui_ready"] = g_camera_scene_ready; + out["ui_visible"] = g_camera_scene_ready ? g_camera_player.visible() : false; + out["recorder_session_active"] = camera.recorder_session_active; + out["recorder_frozen"] = camera.recorder_frozen; + out["recorder_preview_width"] = camera.recorder_preview_width; + out["recorder_preview_height"] = camera.recorder_preview_height; + out["recorder_selected_file"] = camera.recorder_selected_file; +} + +void webFillMediaStatus(JsonObject out, uint32_t now_ms) { + const MediaManager::Snapshot media = g_media.snapshot(); + out["ready"] = media.ready; + out["playing"] = media.playing; + out["playing_path"] = media.playing_path; + out["recording"] = media.recording; + out["record_limit_seconds"] = media.record_limit_seconds; + uint16_t elapsed = media.record_elapsed_seconds; + if (media.recording && media.record_started_ms > 0U) { + elapsed = static_cast((now_ms - media.record_started_ms) / 1000U); + } + out["record_elapsed_seconds"] = elapsed; + out["record_file"] = media.record_file; + out["record_simulated"] = media.record_simulated; + out["music_dir"] = media.music_dir; + out["picture_dir"] = media.picture_dir; + out["record_dir"] = media.record_dir; + out["last_ok"] = media.last_ok; + out["last_error"] = media.last_error; +} + +void webSendWifiStatus() { + const NetworkManager::Snapshot net = g_network.snapshot(); + StaticJsonDocument<384> document; + webFillWifiStatus(document.to(), net); + webSendJsonDocument(document); +} + +void webSendEspNowStatus() { + const NetworkManager::Snapshot net = g_network.snapshot(); + StaticJsonDocument<512> document; + webFillEspNowStatus(document.to(), net); + webSendJsonDocument(document); +} + +void webSendHardwareStatus() { + StaticJsonDocument<1280> document; + webFillHardwareStatus(document.to()); + webSendJsonDocument(document); +} + +void webSendCameraStatus() { + StaticJsonDocument<768> document; + webFillCameraStatus(document.to()); + webSendJsonDocument(document); +} + +void webSendMediaFiles() { + String kind = g_web_server.arg("kind"); + if (kind.isEmpty()) { + kind = "music"; + } + String files_json; + const bool ok = g_media.listFiles(kind.c_str(), &files_json); + DynamicJsonDocument response(3072); + response["ok"] = ok; + response["kind"] = kind; + if (ok) { + DynamicJsonDocument files_doc(2048); + if (!deserializeJson(files_doc, files_json)) { + response["files"] = files_doc.as(); + } else { + response["files_raw"] = files_json; + } + } else { + response["error"] = "invalid_kind"; + } + webSendJsonDocument(response, ok ? 200 : 400); +} + +void webSendMediaRecordStatus() { + StaticJsonDocument<768> document; + webFillMediaStatus(document.to(), millis()); + webSendJsonDocument(document); +} + +void webSendAuthStatus() { + StaticJsonDocument<256> document; + document["setup_mode"] = g_setup_mode; + document["auth_required"] = g_web_auth_required; + document["token_set"] = (g_web_auth_token[0] != '\0'); + document["provisioned"] = g_credential_store.isProvisioned(); + document["has_credentials"] = (g_network_cfg.local_ssid[0] != '\0'); + webSendJsonDocument(document); +} + +void webSendProvisionStatus() { + StaticJsonDocument<384> document; + const NetworkManager::Snapshot net = g_network.snapshot(); + document["setup_mode"] = g_setup_mode; + document["auth_required"] = g_web_auth_required; + document["token_set"] = (g_web_auth_token[0] != '\0'); + document["provisioned"] = g_credential_store.isProvisioned(); + document["has_credentials"] = (g_network_cfg.local_ssid[0] != '\0'); + document["sta_connected"] = net.sta_connected; + document["sta_connecting"] = net.sta_connecting; + document["ap_enabled"] = net.ap_enabled; + document["sta_ssid"] = net.sta_ssid; + document["ap_ssid"] = net.ap_ssid; + document["ip"] = net.ip; + webSendJsonDocument(document); +} + +void webSendEspNowPeerList() { + StaticJsonDocument<384> document; + JsonArray peers = document.to(); + for (uint8_t index = 0U; index < g_network.espNowPeerCount(); ++index) { + char peer[18] = {0}; + if (!g_network.espNowPeerAt(index, peer, sizeof(peer))) { + continue; + } + peers.add(peer); + } + webSendJsonDocument(document); +} + +bool webReconnectLocalWifi() { + if (g_network_cfg.local_ssid[0] == '\0') { + return false; + } + return g_network.connectSta(g_network_cfg.local_ssid, g_network_cfg.local_password); +} + +void webScheduleStaDisconnect() { + g_web_disconnect_sta_pending = true; + g_web_disconnect_sta_at_ms = millis() + 250U; +} + +bool refreshStoryFromSd() { + const bool synced_tree = g_storage.syncStoryTreeFromSd(); + const bool synced_default = g_storage.syncStoryFileFromSd(kDefaultScenarioFile); + const bool synced = synced_tree || synced_default; + if (!synced) { + return false; + } + const bool reloaded = g_scenario.begin(kDefaultScenarioFile); + if (reloaded) { + g_last_action_step_key[0] = '\0'; + resetLaTriggerState(false); + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + } + Serial.printf("[SCENARIO] refresh from sd synced=%u reload=%u\n", synced ? 1U : 0U, reloaded ? 1U : 0U); + return reloaded; +} + +void maybeEmitHardwareEvents(uint32_t now_ms) { + if (!g_hardware_started) { + return; + } + const HardwareManager::Snapshot& hw = g_hardware.snapshotRef(); + const ScenarioSnapshot scenario = g_scenario.snapshot(); + + if (g_hardware_cfg.mic_enabled && hw.mic_ready) { + if (hw.mic_level_percent >= g_hardware_cfg.mic_event_threshold_pct) { + if (g_mic_event_armed && g_hardware_cfg.mic_event_name[0] != '\0') { + dispatchScenarioEventByName(g_hardware_cfg.mic_event_name, now_ms); + g_mic_event_armed = false; + } + } else if (hw.mic_level_percent + 6U < g_hardware_cfg.mic_event_threshold_pct) { + g_mic_event_armed = true; + } + } + + if (g_hardware_cfg.battery_enabled && hw.battery_ready) { + if (!g_battery_low_latched && hw.battery_percent <= g_hardware_cfg.battery_low_pct && + g_hardware_cfg.battery_low_event_name[0] != '\0') { + dispatchScenarioEventByName(g_hardware_cfg.battery_low_event_name, now_ms); + g_battery_low_latched = true; + } else if (g_battery_low_latched && hw.battery_percent > (g_hardware_cfg.battery_low_pct + 4U)) { + g_battery_low_latched = false; + } + } + + updateLaGameplayTrigger(scenario, hw, now_ms); +} + +void maybeLogHardwareTelemetry(uint32_t now_ms) { + if (!g_hardware_started || g_hardware_cfg.telemetry_period_ms < 250U) { + return; + } + if (now_ms < g_next_hw_telemetry_ms) { + return; + } + g_next_hw_telemetry_ms = now_ms + g_hardware_cfg.telemetry_period_ms; + const HardwareManager::Snapshot& hw = g_hardware.snapshotRef(); + Serial.printf("[HW] telemetry mic=%u%% peak=%u battery=%u%% (%umV) led=%u,%u,%u auto=%u\n", + hw.mic_level_percent, + hw.mic_peak, + hw.battery_percent, + hw.battery_cell_mv, + hw.led_r, + hw.led_g, + hw.led_b, + g_hardware_cfg.led_auto_from_scene ? 1U : 0U); +} + +void maybeStreamMicTunerStatus(uint32_t now_ms) { + if (!g_hardware_started || !g_mic_tuner_stream_enabled) { + return; + } + if (now_ms < g_next_mic_tuner_stream_ms) { + return; + } + g_next_mic_tuner_stream_ms = now_ms + g_mic_tuner_stream_period_ms; + printMicTunerStatus(); +} + +bool executeStoryAction(const char* action_id, const ScenarioSnapshot& snapshot, uint32_t now_ms) { + if (action_id == nullptr || action_id[0] == '\0') { + return false; + } + + if (std::strcmp(action_id, "ACTION_TRACE_STEP") == 0) { + Serial.printf("[ACTION] TRACE scenario=%s step=%s screen=%s audio=%s\n", + scenarioIdFromSnapshot(snapshot), + stepIdFromSnapshot(snapshot), + snapshot.screen_scene_id != nullptr ? snapshot.screen_scene_id : "n/a", + snapshot.audio_pack_id != nullptr ? snapshot.audio_pack_id : "n/a"); + return true; + } + + if (std::strcmp(action_id, "ACTION_QUEUE_SONAR") == 0) { + const char* candidates[4] = {"/music/sonar_hint.mp3", nullptr, nullptr, nullptr}; + size_t candidate_count = 1U; + if (snapshot.screen_scene_id != nullptr && isCreditsSceneId(snapshot.screen_scene_id)) { + const char* selected_path = "/music/SCENE_WIN.mp3"; + const bool ok = playCreditsWinTrack(&selected_path); + Serial.printf("[ACTION] QUEUE_AUDIO_PACK pack=PACK_SONAR_HINT scene=%s path=%s ok=%u source=credits_win\n", + snapshot.screen_scene_id, + selected_path, + ok ? 1U : 0U); + return ok; + } + if (snapshot.screen_scene_id != nullptr && + std::strcmp(snapshot.screen_scene_id, "SCENE_LA_DETECTOR") == 0) { + candidates[0] = "/music/scene_la_detector_tts.mp3"; + candidates[1] = "/music/sonar_hint.mp3"; + candidate_count = 2U; + } else if (snapshot.screen_scene_id != nullptr && + std::strcmp(snapshot.screen_scene_id, "SCENE_WIN_ETAPE") == 0) { + candidates[0] = "/music/scene_win.mp3"; + candidates[1] = "/music/SCENE_WIN.mp3"; + candidates[2] = "/music/SCENE_WIN_ETAPE.mp3"; + candidates[3] = "/music/sonar_hint.mp3"; + candidate_count = 4U; + } + + bool ok = false; + const char* selected_path = candidates[0]; + for (size_t index = 0; index < candidate_count; ++index) { + const char* path = candidates[index]; + if (path == nullptr || path[0] == '\0') { + continue; + } + if (g_audio.play(path)) { + selected_path = path; + ok = true; + break; + } + } + + Serial.printf("[ACTION] QUEUE_AUDIO_PACK pack=PACK_SONAR_HINT scene=%s path=%s ok=%u source=builtin\n", + snapshot.screen_scene_id != nullptr ? snapshot.screen_scene_id : "n/a", + selected_path, + ok ? 1U : 0U); + return ok; + } + + const String action_path = String("/story/actions/") + action_id + ".json"; + String payload = g_storage.loadTextFile(action_path.c_str()); + if (payload.isEmpty()) { + const char* alias_id = nullptr; + if (std::strcmp(action_id, "ACTION_QR_CODE_SCANNER_START") == 0) { + alias_id = "ACTION_QR_SCAN_START"; + } else if (std::strcmp(action_id, "ACTION_SET_BOOT_MEDIA_MANAGER") == 0) { + alias_id = "ACTION_BOOT_MEDIA_MGR"; + } + if (alias_id != nullptr) { + const String alias_path = String("/story/actions/") + alias_id + ".json"; + payload = g_storage.loadTextFile(alias_path.c_str()); + if (!payload.isEmpty()) { + Serial.printf("[ACTION] payload alias id=%s file=%s\n", action_id, alias_id); + } + } + } + g_story_action_doc.clear(); + if (!payload.isEmpty()) { + deserializeJson(g_story_action_doc, payload); + } + const char* action_type = g_story_action_doc["type"] | ""; + + if (std::strcmp(action_type, "trace_step") == 0) { + Serial.printf("[ACTION] TRACE scenario=%s step=%s screen=%s audio=%s\n", + scenarioIdFromSnapshot(snapshot), + stepIdFromSnapshot(snapshot), + snapshot.screen_scene_id != nullptr ? snapshot.screen_scene_id : "n/a", + snapshot.audio_pack_id != nullptr ? snapshot.audio_pack_id : "n/a"); + return true; + } + + if (std::strcmp(action_id, "ACTION_REFRESH_SD") == 0 || std::strcmp(action_type, "refresh_storage") == 0) { + const bool ok = g_storage.syncStoryTreeFromSd() || g_storage.syncStoryFileFromSd(kDefaultScenarioFile); + Serial.printf("[ACTION] REFRESH_SD ok=%u\n", ok ? 1U : 0U); + return ok; + } + + if (std::strcmp(action_id, "ACTION_HW_LED_ALERT") == 0) { + const uint8_t red = static_cast(g_story_action_doc["config"]["r"] | 255U); + const uint8_t green = static_cast(g_story_action_doc["config"]["g"] | 60U); + const uint8_t blue = static_cast(g_story_action_doc["config"]["b"] | 32U); + const uint8_t brightness = static_cast(g_story_action_doc["config"]["brightness"] | 92U); + const bool pulse = g_story_action_doc["config"]["pulse"] | true; + return g_hardware.setManualLed(red, green, blue, brightness, pulse); + } + + if (std::strcmp(action_id, "ACTION_HW_LED_READY") == 0) { + const bool auto_scene = g_story_action_doc["config"]["auto_from_scene"] | true; + g_hardware.clearManualLed(); + if (auto_scene && snapshot.screen_scene_id != nullptr && g_hardware_cfg.led_auto_from_scene) { + g_hardware.setSceneHint(snapshot.screen_scene_id); + } + return true; + } + + if (std::strcmp(action_id, "ACTION_CAMERA_SNAPSHOT") == 0) { + const char* filename = g_story_action_doc["config"]["filename"] | ""; + const char* event_name = g_story_action_doc["config"]["event_on_success"] | "SERIAL:CAMERA_CAPTURED"; + if (!approveCameraOperation("action_camera_snapshot", nullptr)) { + return false; + } + String out_path; + const bool ok = g_camera.snapshotToFile(filename[0] != '\0' ? filename : nullptr, &out_path); + Serial.printf("[ACTION] CAMERA_SNAPSHOT ok=%u path=%s\n", ok ? 1U : 0U, ok ? out_path.c_str() : "n/a"); + if (ok) { + dispatchScenarioEventByName(event_name, now_ms); + } + return ok; + } + + if (std::strcmp(action_type, "queue_audio_pack") == 0) { + const char* pack_id = g_story_action_doc["config"]["pack_id"] | g_story_action_doc["config"]["pack"] | ""; + String audio_path = g_storage.resolveAudioPathByPackId(pack_id); + if (audio_path.isEmpty()) { + const char* fallback_file = g_story_action_doc["config"]["file"] | g_story_action_doc["config"]["path"] | ""; + if (fallback_file[0] != '\0') { + audio_path = fallback_file; + } + } + if (audio_path.isEmpty()) { + Serial.printf("[ACTION] QUEUE_AUDIO_PACK missing path pack=%s\n", pack_id); + return false; + } + const bool ok = g_audio.play(audio_path.c_str()); + Serial.printf("[ACTION] QUEUE_AUDIO_PACK pack=%s path=%s ok=%u\n", + pack_id[0] != '\0' ? pack_id : "n/a", + audio_path.c_str(), + ok ? 1U : 0U); + return ok; + } + + if (std::strcmp(action_id, "ACTION_MEDIA_PLAY_FILE") == 0) { + const char* media_file = g_story_action_doc["config"]["file"] | g_story_action_doc["config"]["path"] | "/music/boot_radio.mp3"; + return g_media.play(media_file, &g_audio); + } + + if (std::strcmp(action_id, "ACTION_REC_START") == 0) { + const uint16_t seconds = static_cast(g_story_action_doc["config"]["seconds"] | g_story_action_doc["config"]["duration_sec"] | + g_media_cfg.record_max_seconds); + const char* filename = g_story_action_doc["config"]["filename"] | ""; + return g_media.startRecording(seconds, filename); + } + + if (std::strcmp(action_id, "ACTION_REC_STOP") == 0) { + return g_media.stopRecording(); + } + + if (std::strcmp(action_id, "ACTION_ESP_NOW_SEND_ETAPE1") == 0 || + std::strcmp(action_id, "ACTION_ESP_NOW_SEND_ETAPE2") == 0 || + std::strcmp(action_id, "ACTION_ESP_NOW_WAITING") == 0 || + std::strcmp(action_id, "ACTION_ESP_NOW_WAITING_VALIDATION") == 0 || + std::strcmp(action_type, "espnow_send") == 0) { + const char* target = g_story_action_doc["config"]["target"] | g_story_action_doc["config"]["peer"] | "broadcast"; + const char* payload = g_story_action_doc["config"]["payload"] | ""; + String payload_text; + if (payload[0] == '\0') { + const char* inferred = "WAITING_VALIDATION"; + if (std::strstr(action_id, "ETAPE2") != nullptr) { + inferred = "ACK_WIN2"; + } else if (std::strstr(action_id, "ETAPE1") != nullptr) { + inferred = "ACK_WIN1"; + } + payload_text = inferred; + payload = payload_text.c_str(); + } else { + payload_text = payload; + } + + const bool is_waiting_action = (std::strcmp(action_id, "ACTION_ESP_NOW_WAITING") == 0 || + std::strcmp(action_id, "ACTION_ESP_NOW_WAITING_VALIDATION") == 0 || + payload_text == "WAITING_VALIDATION"); + if (is_waiting_action && !payload_text.startsWith("WAITING_VALIDATION ")) { + const char* scene_for_waiting = (snapshot.screen_scene_id != nullptr && snapshot.screen_scene_id[0] != '\0') + ? snapshot.screen_scene_id + : "SCENE_WIN_ETAPE"; + // Keep command compact to avoid ESPNOW TX pressure while preserving scene context. + payload_text = String("WAITING_VALIDATION ") + scene_for_waiting; + payload = payload_text.c_str(); + } + uint8_t attempts = 2U; + uint16_t retry_delay_ms = 40U; + if (payload_text.startsWith("WAITING_VALIDATION")) { + // Validation launch is critical: ensure RTC hotline receives it and starts ringing. + attempts = 4U; + retry_delay_ms = 80U; + } + const bool ok = sendEspNowWithRetry(target, payload, attempts, retry_delay_ms, "ACTION_ESPNOW_SEND"); + Serial.printf("[ACTION] ESPNOW_SEND id=%s target=%s payload=%s ok=%u\n", + action_id, + target, + payload, + ok ? 1U : 0U); + if (is_waiting_action) { + const bool ring_ok = sendEspNowWithRetry(target, "RING", 2U, 40U, "ACTION_ESPNOW_RING"); + Serial.printf("[ACTION] ESPNOW_RING target=%s ok=%u\n", target, ring_ok ? 1U : 0U); + return ok || ring_ok; + } + return ok; + } + + if (std::strcmp(action_id, "ACTION_QR_CODE_SCANNER_START") == 0 || + std::strcmp(action_type, "qr_scanner_start") == 0) { + Serial.println("[ACTION] QR scanner gate active"); + return true; + } + + if (std::strcmp(action_id, "ACTION_WINNER") == 0 || + std::strcmp(action_type, "winner_fx") == 0) { + Serial.println("[ACTION] WINNER effect armed"); + return true; + } + + if (std::strcmp(action_id, "ACTION_SET_BOOT_MEDIA") == 0 || + std::strcmp(action_id, "ACTION_SET_BOOT_MEDIA_MANAGER") == 0) { + if (kLockNvsMediaManagerMode) { + applyStartupMode(BootModeStore::StartupMode::kStory); + Serial.println("[ACTION] SET_BOOT_MEDIA_MANAGER blocked nvs_lock=1"); + return true; + } + const bool mode_ok = g_boot_mode_store.saveMode(BootModeStore::StartupMode::kMediaManager); + const bool flag_ok = g_boot_mode_store.setMediaValidated(true); + applyStartupMode(BootModeStore::StartupMode::kMediaManager); + Serial.printf("[ACTION] SET_BOOT_MEDIA_MANAGER mode_ok=%u validated_ok=%u\n", + mode_ok ? 1U : 0U, + flag_ok ? 1U : 0U); + return mode_ok && flag_ok; + } + + return false; +} + +void executeStoryActionsForStep(const ScenarioSnapshot& snapshot, uint32_t now_ms) { + if (snapshot.step == nullptr) { + g_has_ring_sent_for_win_etape = false; + g_win_etape_ui_refresh_pending = false; + return; + } + + char step_key[sizeof(g_last_action_step_key)] = {0}; + snprintf(step_key, + sizeof(step_key), + "%s:%s", + scenarioIdFromSnapshot(snapshot), + stepIdFromSnapshot(snapshot)); + if (std::strcmp(step_key, g_last_action_step_key) == 0) { + if (snapshot.action_ids == nullptr || snapshot.action_count == 0U) { + return; + } + } else { + copyText(g_last_action_step_key, sizeof(g_last_action_step_key), step_key); + g_has_ring_sent_for_win_etape = std::strcmp(stepIdFromSnapshot(snapshot), kStepWinEtape) != 0; + g_win_etape_ui_refresh_pending = false; + if (snapshot.action_ids == nullptr || snapshot.action_count == 0U) { + return; + } + } + + g_media.noteStepChange(); + for (uint8_t index = 0U; index < snapshot.action_count; ++index) { + const char* action_id = snapshot.action_ids[index]; + if (action_id == nullptr || action_id[0] == '\0') { + continue; + } + const bool ok = executeStoryAction(action_id, snapshot, now_ms); + Serial.printf("[ACTION] id=%s ok=%u\n", action_id, ok ? 1U : 0U); + } +} + +bool dispatchControlActionImpl(const String& action_raw, uint32_t now_ms, String* out_error) { + if (out_error != nullptr) { + out_error->remove(0); + } + String action = action_raw; + action.trim(); + if (action.isEmpty()) { + if (out_error != nullptr) { + *out_error = "empty_action"; + } + return false; + } + + auto parseRecorderFormat = [](const String& value, + ui::camera::CameraCaptureService::CaptureFormat* out_format) -> bool { + if (out_format == nullptr) { + return false; + } + String normalized = value; + normalized.trim(); + normalized.toLowerCase(); + if (normalized.isEmpty() || normalized == "auto") { + *out_format = ui::camera::CameraCaptureService::CaptureFormat::Auto; + return true; + } + if (normalized == "bmp") { + *out_format = ui::camera::CameraCaptureService::CaptureFormat::Bmp24; + return true; + } + if (normalized == "jpg" || normalized == "jpeg") { + *out_format = ui::camera::CameraCaptureService::CaptureFormat::Jpeg; + return true; + } + if (normalized == "raw" || normalized == "rgb565") { + *out_format = ui::camera::CameraCaptureService::CaptureFormat::RawRGB565; + return true; + } + return false; + }; + + if (action.equalsIgnoreCase("UNLOCK")) { + return dispatchScenarioEventByName("UNLOCK", now_ms); + } + if (action.equalsIgnoreCase("NEXT")) { + return notifyScenarioButtonGuarded(5U, false, now_ms, "api_control"); + } + if (action.equalsIgnoreCase("STORY_REFRESH_SD")) { + return refreshStoryFromSd(); + } + if (action.equalsIgnoreCase("WIFI_DISCONNECT")) { + webScheduleStaDisconnect(); + return true; + } + if (action.equalsIgnoreCase("WIFI_FORGET")) { + const bool ok = forgetWifiCredentials(); + if (!ok && out_error != nullptr) { + *out_error = "wifi_forget_failed"; + } + return ok; + } + if (action.equalsIgnoreCase("WIFI_RECONNECT")) { + return webReconnectLocalWifi(); + } + if (action.equalsIgnoreCase("ESPNOW_ON")) { + return g_network.enableEspNow(); + } + if (action.equalsIgnoreCase("ESPNOW_OFF")) { + g_network.disableEspNow(); + return true; + } + if (action.equalsIgnoreCase("HW_STATUS")) { + printHardwareStatus(); + return true; + } + if (action.equalsIgnoreCase("HW_STATUS_JSON")) { + printHardwareStatusJson(); + return true; + } + if (action.equalsIgnoreCase("HW_MIC_STATUS")) { + printHardwareStatus(); + return true; + } + if (action.equalsIgnoreCase("HW_BAT_STATUS")) { + printHardwareStatus(); + return true; + } + if (action.equalsIgnoreCase("CAM_STATUS")) { + printCameraStatus(); + return true; + } + if (action.equalsIgnoreCase("CAM_REC_STATUS")) { + printCameraRecorderStatus(); + return true; + } + if (action.equalsIgnoreCase("CAM_UI_SHOW")) { + if (!g_camera_scene_active) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + if (!ensureCameraUiInitialized()) { + if (out_error != nullptr) { + *out_error = "camera_ui_not_ready"; + } + return false; + } + g_camera_player.show(); + return true; + } + if (action.equalsIgnoreCase("CAM_UI_HIDE")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + g_camera_player.hide(); + return true; + } + if (action.equalsIgnoreCase("CAM_UI_TOGGLE")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + g_camera_player.toggle(); + return true; + } + if (action.equalsIgnoreCase("CAM_REC_SNAP")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + const bool was_frozen = g_camera_player.service().has_frozen(); + if (!g_camera_player.handleInputAction(ui::camera::Win311CameraUI::InputAction::kSnapToggle)) { + if (out_error != nullptr) { + *out_error = "camera_snap_failed"; + } + return false; + } + const bool now_frozen = g_camera_player.service().has_frozen(); + if (!was_frozen && !now_frozen) { + if (out_error != nullptr) { + *out_error = "camera_snap_failed"; + } + return false; + } + return true; + } + if (startsWithIgnoreCase(action.c_str(), "CAM_REC_SAVE")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + const size_t prefix_len = std::strlen("CAM_REC_SAVE"); + String format_arg = action.substring(static_cast(prefix_len)); + ui::camera::CameraCaptureService::CaptureFormat format = ui::camera::CameraCaptureService::CaptureFormat::Auto; + if (!parseRecorderFormat(format_arg, &format)) { + if (out_error != nullptr) { + *out_error = "cam_rec_save_arg"; + } + return false; + } + if (!g_camera_player.service().has_frozen()) { + if (out_error != nullptr) { + *out_error = "camera_not_frozen"; + } + return false; + } + String out_path; + const bool ok = g_camera_player.service().save_frozen(out_path, format); + if (!ok && out_error != nullptr) { + *out_error = "camera_save_failed"; + } + return ok; + } + if (action.equalsIgnoreCase("CAM_REC_GALLERY")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + return g_camera_player.handleInputAction(ui::camera::Win311CameraUI::InputAction::kGalleryToggle); + } + if (action.equalsIgnoreCase("CAM_REC_NEXT")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + return g_camera_player.handleInputAction(ui::camera::Win311CameraUI::InputAction::kGalleryNext); + } + if (action.equalsIgnoreCase("CAM_REC_DELETE")) { + if (!g_camera_scene_active || !g_camera_scene_ready) { + if (out_error != nullptr) { + *out_error = "camera_scene_inactive"; + } + return false; + } + return g_camera_player.handleInputAction(ui::camera::Win311CameraUI::InputAction::kDeleteSelected); + } + if (action.equalsIgnoreCase("RESOURCE_STATUS")) { + printResourceStatus(); + return true; + } + if (action.equalsIgnoreCase("SIMD_STATUS")) { + printSimdStatus(); + return true; + } + if (action.equalsIgnoreCase("SIMD_SELFTEST")) { + return runtime::simd::runSelfTestCommand(); + } + if (startsWithIgnoreCase(action.c_str(), "SIMD_BENCH")) { + uint32_t loops = 200U; + uint32_t pixels = 7680U; + const size_t prefix_len = std::strlen("SIMD_BENCH"); + String args = action.substring(static_cast(prefix_len)); + args.trim(); + if (!args.isEmpty()) { + const int sep = args.indexOf(' '); + String loops_text = (sep < 0) ? args : args.substring(0, static_cast(sep)); + String pixels_text = (sep < 0) ? String("") : args.substring(static_cast(sep + 1)); + loops_text.trim(); + pixels_text.trim(); + if (!loops_text.isEmpty()) { + loops = static_cast(std::strtoul(loops_text.c_str(), nullptr, 10)); + } + if (!pixels_text.isEmpty()) { + pixels = static_cast(std::strtoul(pixels_text.c_str(), nullptr, 10)); + } + } + const runtime::simd::SimdBenchResult result = runtime::simd::runBenchCommand(loops, pixels); + Serial.printf("SIMD_BENCH loops=%lu pixels=%lu l8_us=%lu idx_us=%lu rgb888_us=%lu gain_us=%lu\n", + static_cast(result.loops), + static_cast(result.pixels), + static_cast(result.l8_to_rgb565_us), + static_cast(result.idx8_to_rgb565_us), + static_cast(result.rgb888_to_rgb565_us), + static_cast(result.s16_gain_q15_us)); + return true; + } + if (startsWithIgnoreCase(action.c_str(), "RESOURCE_PROFILE_AUTO")) { + const size_t prefix_len = std::strlen("RESOURCE_PROFILE_AUTO"); + String profile_auto = action.substring(static_cast(prefix_len)); + profile_auto.trim(); + bool parse_ok = false; + applyResourceProfileAutoCommand(profile_auto.c_str(), &parse_ok); + if (!parse_ok) { + if (out_error != nullptr) { + *out_error = "resource_profile_auto_arg"; + } + return false; + } + return true; + } + if (startsWithIgnoreCase(action.c_str(), "RESOURCE_PROFILE")) { + const size_t prefix_len = std::strlen("RESOURCE_PROFILE"); + String profile = action.substring(static_cast(prefix_len)); + profile.trim(); + if (profile.isEmpty()) { + printResourceStatus(); + return true; + } + if (!g_resource_coordinator.parseAndSetProfile(profile.c_str())) { + if (out_error != nullptr) { + *out_error = "resource_profile_arg"; + } + return false; + } + g_resource_profile_auto = false; + return true; + } + if (action.equalsIgnoreCase("CAM_ON")) { + if (g_camera_scene_active) { + if (out_error != nullptr) { + *out_error = "camera_busy_recorder_owner"; + } + return false; + } + if (!approveCameraOperation("cam_on", out_error)) { + return false; + } + return g_camera.start(); + } + if (action.equalsIgnoreCase("CAM_OFF")) { + if (g_camera_scene_active) { + if (out_error != nullptr) { + *out_error = "camera_busy_recorder_owner"; + } + return false; + } + g_camera.stop(); + return true; + } + if (action.equalsIgnoreCase("MEDIA_STOP")) { + return g_media.stop(&g_audio); + } + if (action.equalsIgnoreCase("REC_STOP")) { + return g_media.stopRecording(); + } + if (action.equalsIgnoreCase("REC_STATUS")) { + printMediaStatus(); + return true; + } + if (action.equalsIgnoreCase("BOOT_MODE_STATUS")) { + printBootModeStatus(); + return true; + } + if (action.equalsIgnoreCase("BOOT_MODE_CLEAR")) { + const bool ok = g_boot_mode_store.clearMode(); + applyStartupMode(BootModeStore::StartupMode::kStory); + if (!ok && out_error != nullptr) { + *out_error = "boot_mode_clear_failed"; + } + return ok; + } + if (startsWithIgnoreCase(action.c_str(), "BOOT_MODE_SET ")) { + String mode_text = action.substring(static_cast(std::strlen("BOOT_MODE_SET "))); + mode_text.trim(); + mode_text.toUpperCase(); + BootModeStore::StartupMode mode = BootModeStore::StartupMode::kStory; + if (!parseBootModeToken(mode_text.c_str(), &mode)) { + if (out_error != nullptr) { + *out_error = "boot_mode_set_arg"; + } + return false; + } + const bool ok = g_boot_mode_store.saveMode(mode); + if (!ok) { + if (out_error != nullptr) { + *out_error = "boot_mode_set_failed"; + } + return false; + } + applyStartupMode(mode); + (void)g_boot_mode_store.setMediaValidated(mode == BootModeStore::StartupMode::kMediaManager); + return true; + } + if (startsWithIgnoreCase(action.c_str(), "QR_SIM ")) { + String payload = action.substring(static_cast(std::strlen("QR_SIM "))); + payload.trim(); + const bool ok = !payload.isEmpty() && g_ui.simulateQrPayload(payload.c_str()); + if (!ok && out_error != nullptr) { + *out_error = "qr_sim_arg"; + } + return ok; + } + + if (startsWithIgnoreCase(action.c_str(), "WIFI_CONNECT ")) { + String ssid; + String password; + if (!splitSsidPass(action.c_str() + std::strlen("WIFI_CONNECT "), &ssid, &password)) { + return false; + } + return g_network.connectSta(ssid.c_str(), password.c_str()); + } + + if (startsWithIgnoreCase(action.c_str(), "WIFI_PROVISION ")) { + String ssid; + String password; + if (!splitSsidPass(action.c_str() + std::strlen("WIFI_PROVISION "), &ssid, &password)) { + if (out_error != nullptr) { + *out_error = "wifi_provision_args"; + } + return false; + } + bool connect_started = false; + bool persisted = false; + const bool ok = provisionWifiCredentials(ssid.c_str(), password.c_str(), true, &connect_started, &persisted, nullptr); + if (!ok && out_error != nullptr) { + *out_error = persisted ? "wifi_connect_failed" : "wifi_persist_failed"; + } + return ok; + } + + if (startsWithIgnoreCase(action.c_str(), "ESPNOW_SEND ")) { + String args = action.substring(static_cast(std::strlen("ESPNOW_SEND "))); + String payload; + if (!parseEspNowSendPayload(args.c_str(), payload, nullptr)) { + return false; + } + return g_network.sendEspNowTarget(kEspNowBroadcastTarget, payload.c_str()); + } + + if (startsWithIgnoreCase(action.c_str(), "SC_EVENT_RAW ")) { + char event_name[kSerialLineCapacity] = {0}; + copyText(event_name, sizeof(event_name), action.c_str() + std::strlen("SC_EVENT_RAW ")); + trimAsciiInPlace(event_name); + if (event_name[0] == '\0') { + return false; + } + return dispatchScenarioEventByName(event_name, now_ms); + } + + if (startsWithIgnoreCase(action.c_str(), "SC_EVENT ")) { + char args[kSerialLineCapacity] = {0}; + copyText(args, sizeof(args), action.c_str() + std::strlen("SC_EVENT ")); + trimAsciiInPlace(args); + if (args[0] == '\0') { + return false; + } + char* type_text = args; + char* event_name = nullptr; + for (size_t index = 0U; args[index] != '\0'; ++index) { + if (args[index] != ' ') { + continue; + } + args[index] = '\0'; + event_name = &args[index + 1U]; + break; + } + if (event_name != nullptr) { + trimAsciiInPlace(event_name); + if (event_name[0] == '\0') { + event_name = nullptr; + } + } + StoryEventType event_type = StoryEventType::kNone; + if (!parseEventType(type_text, &event_type)) { + return false; + } + return dispatchScenarioEventByType(event_type, event_name, now_ms); + } + + if (startsWithIgnoreCase(action.c_str(), "SCENE_GOTO ")) { + String scene_id = action.substring(static_cast(std::strlen("SCENE_GOTO "))); + scene_id.trim(); + scene_id.toUpperCase(); + if (scene_id.isEmpty()) { + if (out_error != nullptr) { + *out_error = "scene_goto_arg"; + } + return false; + } + if (scene_id == "SCENE_LOCK") { + scene_id = "SCENE_LOCKED"; + } else if (scene_id == "LOCKED" || scene_id == "LOCK") { + scene_id = "SCENE_LOCKED"; + } + const bool ok = g_scenario.gotoScene(scene_id.c_str(), now_ms, "scene_goto_control"); + if (!ok) { + if (out_error != nullptr) { + *out_error = "scene_not_found"; + } + return false; + } + g_last_action_step_key[0] = '\0'; + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + return true; + } + if (action.equalsIgnoreCase("SCENE_GOTO")) { + if (out_error != nullptr) { + *out_error = "scene_goto_arg"; + } + return false; + } + + if (startsWithIgnoreCase(action.c_str(), "HW_LED_SET ")) { + String args = action.substring(static_cast(std::strlen("HW_LED_SET "))); + args.trim(); + uint8_t red = 0U; + uint8_t green = 0U; + uint8_t blue = 0U; + uint8_t brightness = static_cast(FREENOVE_WS2812_BRIGHTNESS); + bool pulse = true; + if (!parseHwLedSetArgs(args.c_str(), &red, &green, &blue, &brightness, &pulse)) { + if (out_error != nullptr) { + *out_error = "hw_led_set_args"; + } + return false; + } + return g_hardware.setManualLed(red, green, blue, brightness, pulse); + } + + if (startsWithIgnoreCase(action.c_str(), "HW_LED_AUTO ")) { + String value = action.substring(static_cast(std::strlen("HW_LED_AUTO "))); + value.trim(); + bool enabled = false; + if (!parseBoolToken(value.c_str(), &enabled)) { + if (out_error != nullptr) { + *out_error = "hw_led_auto_args"; + } + return false; + } + g_hardware_cfg.led_auto_from_scene = enabled; + if (enabled) { + g_hardware.clearManualLed(); + const ScenarioSnapshot snapshot = g_scenario.snapshot(); + if (snapshot.screen_scene_id != nullptr) { + g_hardware.setSceneHint(snapshot.screen_scene_id); + } + } + return true; + } + + if (startsWithIgnoreCase(action.c_str(), "LCD_BACKLIGHT ")) { + String value = action.substring(static_cast(std::strlen("LCD_BACKLIGHT "))); + value.trim(); + if (value.isEmpty()) { + if (out_error != nullptr) { + *out_error = "lcd_backlight_arg"; + } + return false; + } + const int parsed = value.toInt(); + if (parsed < 0 || parsed > 255) { + if (out_error != nullptr) { + *out_error = "lcd_backlight_range"; + } + return false; + } + applyLcdBacklight(static_cast(parsed)); + Serial.printf("LCD_BACKLIGHT level=%u\n", static_cast(g_lcd_backlight_level)); + return true; + } + + if (action.equalsIgnoreCase("LCD_BACKLIGHT")) { + Serial.printf("LCD_BACKLIGHT level=%u\n", static_cast(g_lcd_backlight_level)); + return true; + } + + if (startsWithIgnoreCase(action.c_str(), "CAM_SNAPSHOT")) { + if (g_camera_scene_active) { + if (out_error != nullptr) { + *out_error = "camera_busy_recorder_owner"; + } + return false; + } + if (!approveCameraOperation("cam_snapshot", out_error)) { + return false; + } + const size_t prefix_len = std::strlen("CAM_SNAPSHOT"); + String filename = action.substring(static_cast(prefix_len)); + filename.trim(); + String out_path; + const bool ok = g_camera.snapshotToFile(filename.isEmpty() ? nullptr : filename.c_str(), &out_path); + if (ok) { + dispatchScenarioEventByName("SERIAL:CAMERA_CAPTURED", now_ms); + } else if (out_error != nullptr) { + *out_error = "camera_snapshot_failed"; + } + return ok; + } + + if (startsWithIgnoreCase(action.c_str(), "MEDIA_PLAY ")) { + String media_path = action.substring(static_cast(std::strlen("MEDIA_PLAY "))); + media_path.trim(); + const bool ok = !media_path.isEmpty() && g_media.play(media_path.c_str(), &g_audio); + if (!ok && out_error != nullptr) { + *out_error = "media_play_failed"; + } + return ok; + } + + if (startsWithIgnoreCase(action.c_str(), "REC_START")) { + const size_t prefix_len = std::strlen("REC_START"); + String args = action.substring(static_cast(prefix_len)); + args.trim(); + uint16_t seconds = g_media_cfg.record_max_seconds; + String filename; + if (!args.isEmpty()) { + const int sep = args.indexOf(' '); + String seconds_text = (sep < 0) ? args : args.substring(0, static_cast(sep)); + filename = (sep < 0) ? String("") : args.substring(static_cast(sep + 1)); + seconds_text.trim(); + filename.trim(); + if (!seconds_text.isEmpty()) { + char* end = nullptr; + const unsigned long parsed = std::strtoul(seconds_text.c_str(), &end, 10); + if (end != seconds_text.c_str() && (end == nullptr || *end == '\0')) { + seconds = static_cast(parsed); + } + } + } + return g_media.startRecording(seconds, filename.isEmpty() ? nullptr : filename.c_str()); + } + + if (startsWithIgnoreCase(action.c_str(), "MEDIA_LIST ")) { + String kind = action.substring(static_cast(std::strlen("MEDIA_LIST "))); + kind.trim(); + if (kind.isEmpty()) { + kind = "music"; + } + String files_json; + const bool ok = g_media.listFiles(kind.c_str(), &files_json); + if (ok) { + Serial.printf("MEDIA_LIST kind=%s files=%s\n", kind.c_str(), files_json.c_str()); + } + return ok; + } + + if (out_error != nullptr) { + *out_error = "unsupported_action"; + } + return false; +} + +bool webDispatchAction(const String& action_raw) { + return dispatchControlAction(action_raw, millis(), nullptr); +} + +void webBuildStatusDocument(StaticJsonDocument<4096>* out_document) { + if (out_document == nullptr) { + return; + } + const NetworkManager::Snapshot net = g_network.snapshot(); + const ScenarioSnapshot scenario = g_scenario.snapshot(); + + out_document->clear(); + JsonObject network = (*out_document)["network"].to(); + network["state"] = String(net.state); + network["mode"] = String(net.mode); + network["sta_connected"] = net.sta_connected; + network["sta_connecting"] = net.sta_connecting; + network["fallback_ap"] = net.fallback_ap_active; + network["sta_ssid"] = String(net.sta_ssid); + network["ap_ssid"] = String(net.ap_ssid); + network["local_target"] = String(net.local_target); + network["local_match"] = net.local_match; + network["ap_clients"] = net.ap_clients; + network["local_retry_paused"] = net.local_retry_paused; + network["ip"] = String(net.ip); + network["rssi"] = net.rssi; + + JsonObject wifi = (*out_document)["wifi"].to(); + webFillWifiStatus(wifi, net); + + JsonObject espnow = (*out_document)["espnow"].to(); + webFillEspNowStatus(espnow, net); + + JsonObject story = (*out_document)["story"].to(); + story["scenario"] = scenarioIdFromSnapshot(scenario); + story["step"] = stepIdFromSnapshot(scenario); + story["screen"] = (scenario.screen_scene_id != nullptr) ? scenario.screen_scene_id : ""; + story["audio_pack"] = (scenario.audio_pack_id != nullptr) ? scenario.audio_pack_id : ""; + + JsonObject audio = (*out_document)["audio"].to(); + audio["playing"] = g_audio.isPlaying(); + audio["track"] = g_audio.currentTrack(); + audio["codec"] = g_audio.activeCodec(); + audio["bitrate_kbps"] = g_audio.activeBitrateKbps(); + audio["fx"] = g_audio.fxProfile(); + audio["fx_label"] = g_audio.fxProfileLabel(g_audio.fxProfile()); + audio["profile"] = g_audio.outputProfile(); + audio["volume"] = g_audio.volume(); + + JsonObject hardware = (*out_document)["hardware"].to(); + webFillHardwareStatus(hardware); + + JsonObject camera = (*out_document)["camera"].to(); + webFillCameraStatus(camera); + + JsonObject media = (*out_document)["media"].to(); + webFillMediaStatus(media, millis()); + + const runtime::resource::ResourceCoordinatorSnapshot resource_snapshot = g_resource_coordinator.snapshot(); + const UiMemorySnapshot ui_snapshot = g_ui.memorySnapshot(); + JsonObject resource = (*out_document)["resource"].to(); + resource["profile"] = g_resource_coordinator.profileName(); + resource["profile_auto"] = g_resource_profile_auto; + resource["graphics_pressure"] = resource_snapshot.graphics_pressure; + resource["mic_should_run"] = resource_snapshot.mic_should_run; + resource["mic_force_on"] = resource_snapshot.mic_force_on; + resource["allow_camera_ops"] = resource_snapshot.allow_camera_ops; + resource["mic_hold_until_ms"] = resource_snapshot.mic_hold_until_ms; + resource["camera_allowed_ops"] = resource_snapshot.camera_allowed_ops; + resource["camera_blocked_ops"] = resource_snapshot.camera_blocked_ops; + resource["flush_overflow_delta"] = resource_snapshot.flush_overflow_delta; + resource["flush_blocked_delta"] = resource_snapshot.flush_blocked_delta; + resource["fx_fps"] = ui_snapshot.fx_fps; + resource["flush_blocked"] = ui_snapshot.flush_blocked; + resource["flush_overflow"] = ui_snapshot.flush_overflow; + resource["flush_stall"] = ui_snapshot.flush_stall; + resource["flush_recover"] = ui_snapshot.flush_recover; +} + +void webSendStatus() { + StaticJsonDocument<4096> document; + webBuildStatusDocument(&document); + webSendJsonDocument(document); +} + +void webSendStatusSse() { + StaticJsonDocument<4096> document; + webBuildStatusDocument(&document); + char payload[4608] = {0}; + const size_t measured_size = measureJson(document); + if (measured_size >= sizeof(payload)) { + g_web_server.send(500, "application/json", "{\"ok\":false,\"error\":\"status_payload_too_large\"}"); + return; + } + const size_t payload_size = serializeJson(document, payload, sizeof(payload)); + if (payload_size == 0U) { + g_web_server.send(500, "application/json", "{\"ok\":false,\"error\":\"status_serialize_failed\"}"); + return; + } + + g_web_server.setContentLength(CONTENT_LENGTH_UNKNOWN); + g_web_server.sendHeader("Cache-Control", "no-cache"); + g_web_server.sendHeader("Connection", "close"); + g_web_server.send(200, "text/event-stream", ""); + g_web_server.sendContent("event: status\n"); + g_web_server.sendContent("data: "); + g_web_server.sendContent(payload, payload_size); + g_web_server.sendContent("\n\n"); + g_web_server.sendContent("event: done\ndata: 1\n\n"); +} + +void setupWebUiImpl() { + const char* auth_headers[] = {kWebAuthHeaderName}; + g_web_server.collectHeaders(auth_headers, 1); + + g_web_server.on("/", HTTP_GET, []() { + g_web_server.send(200, "text/html", kWebUiIndex); + }); + + webOnApi(kProvisionStatusPath, HTTP_GET, []() { + webSendProvisionStatus(); + }); + + webOnApi("/api/auth/status", HTTP_GET, []() { + webSendAuthStatus(); + }); + + webOnApi("/api/status", HTTP_GET, []() { + webSendStatus(); + }); + + webOnApi("/api/stream", HTTP_GET, []() { + webSendStatusSse(); + }); + + webOnApi("/api/hardware", HTTP_GET, []() { + webSendHardwareStatus(); + }); + + webOnApi("/api/hardware/led", HTTP_POST, []() { + int red = g_web_server.arg("r").toInt(); + int green = g_web_server.arg("g").toInt(); + int blue = g_web_server.arg("b").toInt(); + int brightness = g_web_server.hasArg("brightness") ? g_web_server.arg("brightness").toInt() : FREENOVE_WS2812_BRIGHTNESS; + bool pulse = true; + if (g_web_server.hasArg("pulse")) { + pulse = (g_web_server.arg("pulse").toInt() != 0); + } + StaticJsonDocument<256> request_json; + if (webParseJsonBody(&request_json)) { + if (request_json["r"].is()) { + red = request_json["r"].as(); + } + if (request_json["g"].is()) { + green = request_json["g"].as(); + } + if (request_json["b"].is()) { + blue = request_json["b"].as(); + } + if (request_json["brightness"].is()) { + brightness = request_json["brightness"].as(); + } + if (request_json["pulse"].is()) { + pulse = request_json["pulse"].as(); + } + } + if (brightness < 0) { + brightness = 0; + } else if (brightness > 255) { + brightness = 255; + } + const bool ok = g_hardware.setManualLed(static_cast(red), + static_cast(green), + static_cast(blue), + static_cast(brightness), + pulse); + webSendResult("HW_LED_SET", ok); + }); + + webOnApi("/api/hardware/led/auto", HTTP_POST, []() { + bool enabled = false; + bool parsed = false; + if (g_web_server.hasArg("enabled")) { + parsed = parseBoolToken(g_web_server.arg("enabled").c_str(), &enabled); + } else if (g_web_server.hasArg("value")) { + parsed = parseBoolToken(g_web_server.arg("value").c_str(), &enabled); + } + StaticJsonDocument<128> request_json; + if (!parsed && webParseJsonBody(&request_json)) { + if (request_json["enabled"].is()) { + enabled = request_json["enabled"].as(); + parsed = true; + } else if (request_json["value"].is()) { + enabled = request_json["value"].as(); + parsed = true; + } + } + if (!parsed) { + webSendResult("HW_LED_AUTO", false); + return; + } + g_hardware_cfg.led_auto_from_scene = enabled; + if (enabled) { + g_hardware.clearManualLed(); + const ScenarioSnapshot snapshot = g_scenario.snapshot(); + if (snapshot.screen_scene_id != nullptr) { + g_hardware.setSceneHint(snapshot.screen_scene_id); + } + } + webSendResult("HW_LED_AUTO", true); + }); + + webOnApi("/api/camera/status", HTTP_GET, []() { + webSendCameraStatus(); + }); + + webOnApi("/api/camera/on", HTTP_POST, []() { + if (g_camera_scene_active) { + g_web_server.send(409, "application/json", "{\"ok\":false,\"error\":\"camera_busy_recorder_owner\"}"); + return; + } + String err; + if (!approveCameraOperation("web_cam_on", &err)) { + g_web_server.send(429, "application/json", "{\"ok\":false,\"error\":\"camera_blocked_by_resource_profile\"}"); + return; + } + const bool ok = g_camera.start(); + webSendResult("CAM_ON", ok); + }); + + webOnApi("/api/camera/off", HTTP_POST, []() { + if (g_camera_scene_active) { + g_web_server.send(409, "application/json", "{\"ok\":false,\"error\":\"camera_busy_recorder_owner\"}"); + return; + } + g_camera.stop(); + webSendResult("CAM_OFF", true); + }); + + webOnApi("/api/camera/snapshot.jpg", HTTP_GET, []() { + if (g_camera_scene_active) { + g_web_server.send(409, "application/json", "{\"ok\":false,\"error\":\"camera_busy_recorder_owner\"}"); + return; + } + String err; + if (!approveCameraOperation("web_cam_snapshot", &err)) { + g_web_server.send(429, "application/json", "{\"ok\":false,\"error\":\"camera_blocked_by_resource_profile\"}"); + return; + } + String out_path; + if (!g_camera.snapshotToFile(nullptr, &out_path)) { + g_web_server.send(500, "application/json", "{\"ok\":false,\"error\":\"camera_snapshot_failed\"}"); + return; + } + File image = LittleFS.open(out_path.c_str(), "r"); + if (!image) { + g_web_server.send(500, "application/json", "{\"ok\":false,\"error\":\"camera_snapshot_missing\"}"); + return; + } + g_web_server.streamFile(image, "image/jpeg"); + image.close(); + dispatchScenarioEventByName("SERIAL:CAMERA_CAPTURED", millis()); + }); + + webOnApi("/api/media/files", HTTP_GET, []() { + webSendMediaFiles(); + }); + + webOnApi("/api/media/play", HTTP_POST, []() { + String path = g_web_server.arg("path"); + StaticJsonDocument<256> request_json; + if (webParseJsonBody(&request_json) && path.isEmpty()) { + path = request_json["path"] | request_json["file"] | ""; + } + const bool ok = !path.isEmpty() && g_media.play(path.c_str(), &g_audio); + webSendResult("MEDIA_PLAY", ok); + }); + + webOnApi("/api/media/stop", HTTP_POST, []() { + const bool ok = g_media.stop(&g_audio); + webSendResult("MEDIA_STOP", ok); + }); + + webOnApi("/api/media/record/start", HTTP_POST, []() { + uint16_t seconds = static_cast(g_web_server.arg("seconds").toInt()); + String filename = g_web_server.arg("filename"); + StaticJsonDocument<256> request_json; + if (webParseJsonBody(&request_json)) { + if (request_json["seconds"].is()) { + seconds = static_cast(request_json["seconds"].as()); + } + if (filename.isEmpty()) { + filename = request_json["filename"] | ""; + } + } + const bool ok = g_media.startRecording(seconds, filename.isEmpty() ? nullptr : filename.c_str()); + webSendResult("REC_START", ok); + }); + + webOnApi("/api/media/record/stop", HTTP_POST, []() { + const bool ok = g_media.stopRecording(); + webSendResult("REC_STOP", ok); + }); + + webOnApi("/api/media/record/status", HTTP_GET, []() { + webSendMediaRecordStatus(); + }); + + webOnApi("/api/network/wifi", HTTP_GET, []() { + webSendWifiStatus(); + }); + + webOnApi("/api/network/espnow", HTTP_GET, []() { + webSendEspNowStatus(); + }); + + webOnApi("/api/network/espnow/peer", HTTP_GET, []() { + webSendEspNowPeerList(); + }); + + webOnApi("/api/wifi/disconnect", HTTP_POST, []() { + webScheduleStaDisconnect(); + webSendResult("WIFI_DISCONNECT", true); + }); + + webOnApi("/api/network/wifi/disconnect", HTTP_POST, []() { + webScheduleStaDisconnect(); + webSendResult("WIFI_DISCONNECT", true); + }); + + webOnApi("/api/network/wifi/reconnect", HTTP_POST, []() { + const bool ok = webReconnectLocalWifi(); + webSendResult("WIFI_RECONNECT", ok); + }); + + webOnApi("/api/wifi/connect", HTTP_POST, []() { + String ssid = g_web_server.arg("ssid"); + String password = g_web_server.arg("password"); + bool persist = false; + if (password.isEmpty()) { + password = g_web_server.arg("pass"); + } + StaticJsonDocument<768> request_json; + if (g_web_server.hasArg("persist")) { + bool parsed_persist = false; + if (parseBoolToken(g_web_server.arg("persist").c_str(), &parsed_persist)) { + persist = parsed_persist; + } else { + long persist_flag = 0L; + if (parseBoundedLongToken(g_web_server.arg("persist").c_str(), 0L, 1L, &persist_flag)) { + persist = (persist_flag != 0L); + } + } + } + if (webParseJsonBody(&request_json)) { + if (ssid.isEmpty()) { + ssid = request_json["ssid"] | ""; + } + if (password.isEmpty()) { + password = request_json["pass"] | request_json["password"] | ""; + } + if (request_json["persist"].is()) { + persist = request_json["persist"].as(); + } else if (request_json["persist"].is()) { + persist = request_json["persist"].as() != 0; + } else if (request_json["persist"].is()) { + persist = request_json["persist"].as() != 0U; + } + } + if (ssid.isEmpty()) { + webSendResult("WIFI_CONNECT", false); + return; + } + bool connect_started = false; + bool persisted = false; + bool token_generated = false; + const bool ok = provisionWifiCredentials(ssid.c_str(), + password.c_str(), + persist, + &connect_started, + &persisted, + &token_generated); + StaticJsonDocument<320> response; + response["ok"] = ok; + response["action"] = "WIFI_CONNECT"; + response["persist"] = persist; + response["connect_started"] = connect_started; + if (persist) { + response["persisted"] = persisted; + if (token_generated && g_web_auth_token[0] != '\0') { + response["token"] = g_web_auth_token; + } + } + webSendJsonDocument(response, ok ? 200 : 400); + }); + + webOnApi("/api/network/wifi/connect", HTTP_POST, []() { + String ssid = g_web_server.arg("ssid"); + String password = g_web_server.arg("password"); + bool persist = false; + if (password.isEmpty()) { + password = g_web_server.arg("pass"); + } + StaticJsonDocument<768> request_json; + if (g_web_server.hasArg("persist")) { + bool parsed_persist = false; + if (parseBoolToken(g_web_server.arg("persist").c_str(), &parsed_persist)) { + persist = parsed_persist; + } else { + long persist_flag = 0L; + if (parseBoundedLongToken(g_web_server.arg("persist").c_str(), 0L, 1L, &persist_flag)) { + persist = (persist_flag != 0L); + } + } + } + if (webParseJsonBody(&request_json)) { + if (ssid.isEmpty()) { + ssid = request_json["ssid"] | ""; + } + if (password.isEmpty()) { + password = request_json["pass"] | request_json["password"] | ""; + } + if (request_json["persist"].is()) { + persist = request_json["persist"].as(); + } else if (request_json["persist"].is()) { + persist = request_json["persist"].as() != 0; + } else if (request_json["persist"].is()) { + persist = request_json["persist"].as() != 0U; + } + } + if (ssid.isEmpty()) { + webSendResult("WIFI_CONNECT", false); + return; + } + bool connect_started = false; + bool persisted = false; + bool token_generated = false; + const bool ok = provisionWifiCredentials(ssid.c_str(), + password.c_str(), + persist, + &connect_started, + &persisted, + &token_generated); + StaticJsonDocument<320> response; + response["ok"] = ok; + response["action"] = "WIFI_CONNECT"; + response["persist"] = persist; + response["connect_started"] = connect_started; + if (persist) { + response["persisted"] = persisted; + if (token_generated && g_web_auth_token[0] != '\0') { + response["token"] = g_web_auth_token; + } + } + webSendJsonDocument(response, ok ? 200 : 400); + }); + + webOnApi("/api/espnow/send", HTTP_POST, []() { + String payload = g_web_server.arg("payload"); + StaticJsonDocument<768> request_json; + if (webParseJsonBody(&request_json)) { + if (payload.isEmpty()) { + if (request_json["payload"].is()) { + serializeJson(request_json["payload"], payload); + } else { + payload = request_json["payload"] | ""; + } + } + } + if (payload.isEmpty()) { + webSendResult("ESPNOW_SEND", false); + return; + } + const bool ok = g_network.sendEspNowTarget(kEspNowBroadcastTarget, payload.c_str()); + webSendResult("ESPNOW_SEND", ok); + }); + + webOnApi("/api/network/espnow/send", HTTP_POST, []() { + String payload = g_web_server.arg("payload"); + StaticJsonDocument<768> request_json; + if (webParseJsonBody(&request_json)) { + if (payload.isEmpty()) { + if (request_json["payload"].is()) { + serializeJson(request_json["payload"], payload); + } else { + payload = request_json["payload"] | ""; + } + } + } + if (payload.isEmpty()) { + webSendResult("ESPNOW_SEND", false); + return; + } + const bool ok = g_network.sendEspNowTarget(kEspNowBroadcastTarget, payload.c_str()); + webSendResult("ESPNOW_SEND", ok); + }); + + webOnApi("/api/network/espnow/on", HTTP_POST, []() { + const bool ok = g_network.enableEspNow(); + webSendResult("ESPNOW_ON", ok); + }); + + webOnApi("/api/network/espnow/off", HTTP_POST, []() { + g_network.disableEspNow(); + webSendResult("ESPNOW_OFF", true); + }); + + webOnApi("/api/network/espnow/peer", HTTP_POST, []() { + String mac = g_web_server.arg("mac"); + StaticJsonDocument<256> request_json; + if (webParseJsonBody(&request_json) && mac.isEmpty()) { + mac = request_json["mac"] | ""; + } + const bool ok = !mac.isEmpty() && g_network.addEspNowPeer(mac.c_str()); + webSendResult("ESPNOW_PEER_ADD", ok); + }); + + webOnApi("/api/network/espnow/peer", HTTP_DELETE, []() { + String mac = g_web_server.arg("mac"); + StaticJsonDocument<256> request_json; + if (webParseJsonBody(&request_json) && mac.isEmpty()) { + mac = request_json["mac"] | ""; + } + const bool ok = !mac.isEmpty() && g_network.removeEspNowPeer(mac.c_str()); + webSendResult("ESPNOW_PEER_DEL", ok); + }); + + webOnApi("/api/story/refresh-sd", HTTP_POST, []() { + const bool ok = refreshStoryFromSd(); + webSendResult("STORY_REFRESH_SD", ok); + }); + + webOnApi("/api/scenario/unlock", HTTP_POST, []() { + const bool ok = dispatchScenarioEventByName("UNLOCK", millis()); + webSendResult("UNLOCK", ok); + }); + + webOnApi("/api/scenario/next", HTTP_POST, []() { + bool ok = dispatchScenarioEventByName("SERIAL:BTN_NEXT", millis()); + if (!ok) { + ok = notifyScenarioButtonGuarded(5U, false, millis(), "api_scenario_next"); + } + webSendResult("NEXT", ok); + }); + + webOnApi("/api/control", HTTP_POST, []() { + String action = g_web_server.arg("action"); + StaticJsonDocument<768> request_json; + if (webParseJsonBody(&request_json) && action.isEmpty()) { + action = request_json["action"] | ""; + } + String error; + const bool ok = dispatchControlAction(action, millis(), &error); + StaticJsonDocument<256> response; + response["ok"] = ok; + response["action"] = action; + if (!ok && !error.isEmpty()) { + response["error"] = error; + } + webSendJsonDocument(response, ok ? 200 : 400); + }); + + g_web_server.onNotFound([]() { + g_web_server.send(404, "application/json", "{\"ok\":false,\"error\":\"not_found\"}"); + }); + + g_web_server.begin(); + g_web_started = true; + Serial.println("[WEB] started :80"); +} + +void printScenarioCoverage() { + const uint32_t mask = g_scenario.transitionEventMask(); + const ScenarioSnapshot snapshot = g_scenario.snapshot(); + const uint8_t unlock = (mask & (1UL << static_cast(StoryEventType::kUnlock))) ? 1U : 0U; + const uint8_t audio_done = (mask & (1UL << static_cast(StoryEventType::kAudioDone))) ? 1U : 0U; + const uint8_t timer = (mask & (1UL << static_cast(StoryEventType::kTimer))) ? 1U : 0U; + const uint8_t serial = (mask & (1UL << static_cast(StoryEventType::kSerial))) ? 1U : 0U; + const uint8_t button = (mask & (1UL << static_cast(StoryEventType::kButton))) ? 1U : 0U; + const uint8_t espnow = (mask & (1UL << static_cast(StoryEventType::kEspNow))) ? 1U : 0U; + const uint8_t action = (mask & (1UL << static_cast(StoryEventType::kAction))) ? 1U : 0U; + Serial.printf("SC_COVERAGE scenario=%s unlock=%u audio_done=%u timer=%u serial=%u button=%u espnow=%u action=%u\n", + scenarioIdFromSnapshot(snapshot), + unlock, + audio_done, + timer, + serial, + button, + espnow, + action); +} + +bool dispatchScenarioEventByType(StoryEventType type, const char* event_name, uint32_t now_ms) { + switch (type) { + case StoryEventType::kUnlock: { + char unlock_name[64] = {0}; + if (event_name != nullptr && event_name[0] != '\0') { + copyText(unlock_name, sizeof(unlock_name), event_name); + trimAsciiInPlace(unlock_name); + toUpperAsciiInPlace(unlock_name); + } + const char* selected_name = (unlock_name[0] != '\0') ? unlock_name : "UNLOCK"; + const bool dispatched_named = g_scenario.notifyUnlockEvent(selected_name, now_ms); + if (std::strcmp(selected_name, "UNLOCK") == 0) { + // Preserve legacy compatibility: unlock command is considered accepted + // even when no transition consumes it in the current step. + return true; + } + if (dispatched_named) { + return true; + } + return g_scenario.notifyUnlockEvent("UNLOCK", now_ms); + } + case StoryEventType::kAudioDone: + if (event_name != nullptr && event_name[0] != '\0' && std::strcmp(event_name, "AUDIO_DONE") != 0) { + return false; + } + g_scenario.notifyAudioDone(now_ms); + return true; + case StoryEventType::kTimer: + return g_scenario.notifyTimerEvent(event_name, now_ms); + case StoryEventType::kSerial: + return g_scenario.notifySerialEvent(event_name, now_ms); + case StoryEventType::kButton: + return g_scenario.notifyButtonEvent(event_name, now_ms); + case StoryEventType::kEspNow: { + const bool dispatched_espnow = g_scenario.notifyEspNowEvent(event_name, now_ms); + const bool dispatched_serial = g_scenario.notifySerialEvent(event_name, now_ms); + if (event_name != nullptr && + (std::strcmp(event_name, "ACK_WIN1") == 0 || std::strcmp(event_name, "ACK_WIN2") == 0 || + std::strcmp(event_name, "WAITING_VALIDATION") == 0)) { + g_win_etape_ui_refresh_pending = true; + } + return dispatched_espnow || dispatched_serial; + } + case StoryEventType::kAction: + return g_scenario.notifyActionEvent(event_name, now_ms); + default: + return false; + } +} + +bool dispatchScenarioEventByName(const char* event_name, uint32_t now_ms) { + if (event_name == nullptr || event_name[0] == '\0') { + return false; + } + + char normalized[kSerialLineCapacity] = {0}; + std::strncpy(normalized, event_name, sizeof(normalized) - 1U); + toUpperAsciiInPlace(normalized); + + const ScenarioSnapshot current = g_scenario.snapshot(); + if (!g_la_dispatch_in_progress && shouldEnforceLaMatchOnly(current)) { + if (std::strcmp(normalized, "UNLOCK") == 0 || std::strcmp(normalized, "BTN_NEXT") == 0 || + std::strcmp(normalized, "SERIAL:BTN_NEXT") == 0) { + Serial.printf("[LA_TRIGGER] blocked manual event=%s while waiting LA match\n", normalized); + return false; + } + } + + if (std::strcmp(normalized, "UNLOCK") == 0) { + g_scenario.notifyUnlock(now_ms); + return true; + } + if (std::strcmp(normalized, "AUDIO_DONE") == 0) { + g_scenario.notifyAudioDone(now_ms); + return true; + } + + const char* separator = std::strchr(normalized, ':'); + if (separator != nullptr) { + const size_t head_len = static_cast(separator - normalized); + const char* tail = separator + 1; + if (tail[0] == '\0') { + return false; + } + if (head_len == 5U && std::strncmp(normalized, "TIMER", 5U) == 0) { + return g_scenario.notifyTimerEvent(tail, now_ms); + } + if (head_len == 6U && std::strncmp(normalized, "UNLOCK", 6U) == 0) { + const bool dispatched_named = g_scenario.notifyUnlockEvent(tail, now_ms); + if (dispatched_named) { + return true; + } + return g_scenario.notifyUnlockEvent("UNLOCK", now_ms); + } + if (head_len == 6U && std::strncmp(normalized, "ACTION", 6U) == 0) { + return g_scenario.notifyActionEvent(tail, now_ms); + } + if (head_len == 6U && std::strncmp(normalized, "SERIAL", 6U) == 0) { + return g_scenario.notifySerialEvent(tail, now_ms); + } + if (head_len == 6U && std::strncmp(normalized, "BUTTON", 6U) == 0) { + return g_scenario.notifyButtonEvent(tail, now_ms); + } + if (head_len == 6U && std::strncmp(normalized, "ESPNOW", 6U) == 0) { + const bool dispatched_espnow = g_scenario.notifyEspNowEvent(tail, now_ms); + const bool dispatched_serial = g_scenario.notifySerialEvent(tail, now_ms); + return dispatched_espnow || dispatched_serial; + } + } + + return g_scenario.notifySerialEvent(normalized, now_ms); +} + +void runScenarioRevalidate(uint32_t now_ms) { + struct EventProbe { + StoryEventType type; + const char* event_name; + }; + struct HardwareProbe { + uint8_t key; + bool long_press; + const char* label; + }; + + const EventProbe event_probes[] = { + {StoryEventType::kUnlock, "UNLOCK"}, + {StoryEventType::kAudioDone, "AUDIO_DONE"}, + {StoryEventType::kTimer, "ETAPE2_DUE"}, + {StoryEventType::kSerial, "FORCE_DONE"}, + {StoryEventType::kButton, "ANY"}, + {StoryEventType::kEspNow, "ACK_WIN1"}, + {StoryEventType::kAction, "ACTION_FORCE_ETAPE2"}, + }; + const HardwareProbe hardware_probes[] = { + {1U, false, "BTN1_SHORT"}, + {5U, false, "BTN5_SHORT"}, + }; + + g_scenario.reset(); + Serial.println("SC_REVALIDATE_BEGIN"); + printScenarioCoverage(); + for (const EventProbe& probe : event_probes) { + const ScenarioSnapshot before = g_scenario.snapshot(); + const bool dispatched = dispatchScenarioEventByType(probe.type, probe.event_name, now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + Serial.printf("SC_REVALIDATE event=%s name=%s dispatched=%u changed=%u step_before=%s step_after=%s screen=%s pack=%s\n", + eventTypeName(probe.type), + probe.event_name, + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(before), + stepIdFromSnapshot(after), + after.screen_scene_id != nullptr ? after.screen_scene_id : "n/a", + after.audio_pack_id != nullptr ? after.audio_pack_id : "n/a"); + } + for (const HardwareProbe& probe : hardware_probes) { + g_scenario.reset(); + const ScenarioSnapshot before = g_scenario.snapshot(); + g_scenario.notifyButton(probe.key, probe.long_press, now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + Serial.printf("SC_REVALIDATE_HW key=%u long=%u label=%s changed=%u step_before=%s step_after=%s screen=%s pack=%s\n", + probe.key, + probe.long_press ? 1U : 0U, + probe.label, + changed ? 1U : 0U, + stepIdFromSnapshot(before), + stepIdFromSnapshot(after), + after.screen_scene_id != nullptr ? after.screen_scene_id : "n/a", + after.audio_pack_id != nullptr ? after.audio_pack_id : "n/a"); + } + + auto prepareStepXProbe = [&]() { + g_scenario.reset(); + g_scenario.notifyUnlock(now_ms); + g_scenario.notifyAudioDone(now_ms); + return g_scenario.snapshot(); + }; + + { + const ScenarioSnapshot before = prepareStepXProbe(); + const bool dispatched = g_scenario.notifyTimerEvent("ETAPE2_DUE", now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + Serial.printf("SC_REVALIDATE_STEPX event=timer name=ETAPE2_DUE dispatched=%u changed=%u anchor_step=%s step_after=%s\n", + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(before), + stepIdFromSnapshot(after)); + } + + { + const ScenarioSnapshot before = prepareStepXProbe(); + const bool dispatched = g_scenario.notifyActionEvent("ACTION_FORCE_ETAPE2", now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + Serial.printf( + "SC_REVALIDATE_STEPX event=action name=ACTION_FORCE_ETAPE2 dispatched=%u changed=%u anchor_step=%s step_after=%s\n", + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(before), + stepIdFromSnapshot(after)); + } + + Serial.println("SC_REVALIDATE_END"); +} + +void runScenarioRevalidateAll(uint32_t now_ms) { + const char* previous_scenario = scenarioIdFromSnapshot(g_scenario.snapshot()); + Serial.println("SC_REVALIDATE_ALL_BEGIN"); + for (uint8_t index = 0U; index < storyScenarioV2Count(); ++index) { + const char* scenario_id = storyScenarioV2IdAt(index); + if (scenario_id == nullptr || scenario_id[0] == '\0') { + continue; + } + if (!g_scenario.beginById(scenario_id)) { + Serial.printf("SC_REVALIDATE_ALL_SKIP id=%s reason=load_failed\n", scenario_id); + continue; + } + Serial.printf("SC_REVALIDATE_ALL_SCENARIO id=%s\n", scenario_id); + runScenarioRevalidate(now_ms); + } + if (previous_scenario != nullptr && previous_scenario[0] != '\0') { + g_scenario.beginById(previous_scenario); + } else { + g_scenario.begin(kDefaultScenarioFile); + } + Serial.println("SC_REVALIDATE_ALL_END"); +} + +bool dispatchControlAction(const String& action_raw, uint32_t now_ms, String* out_error) { + return g_runtime_serial_service.dispatchControlAction(action_raw, now_ms, out_error); +} + +void setupWebUi() { + g_runtime_web_service.setupWebUi(); +} + +void refreshSceneIfNeeded(bool force_render) { + g_runtime_scene_service.refreshSceneIfNeeded(force_render); +} + +void handleSerialCommand(const char* command_line, uint32_t now_ms) { + g_runtime_serial_service.handleSerialCommand(command_line, now_ms); +} + +void runtimeTickBridge(uint32_t now_ms, RuntimeServices* services) { + (void)services; + ::runRuntimeIteration(now_ms); +} + +void serialDispatchBridge(const char* command_line, uint32_t now_ms, RuntimeServices* services) { + (void)services; + handleSerialCommand(command_line, now_ms); +} + +void refreshSceneIfNeededImpl(bool force_render) { + const bool changed = g_scenario.consumeSceneChanged(); + const ScenarioSnapshot snapshot = g_scenario.snapshot(); + const SceneTransitionPlan transition = + g_scene_fx_orchestrator.planTransition(snapshot.screen_scene_id, changed, force_render); + if (!transition.should_apply) { + return; + } + + const uint32_t now_ms = millis(); + const bool warning_scene_transition = + transition.scene_changed && snapshot.screen_scene_id != nullptr && + (std::strcmp(snapshot.screen_scene_id, "SCENE_WARNING") == 0); + if (warning_scene_transition) { + logLoopStackWatermark("transition_enter", snapshot.screen_scene_id); + } + + // Hard transition cleanup ordering: always release scene-owned resources on scene changes. + if (transition.scene_changed) { +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + setAmpSceneActive(false); +#endif + setCameraSceneActive(false); + g_la_dispatch_in_progress = false; + resetLaTriggerState(false); + g_win_etape_ui_refresh_pending = false; + if (g_hardware_started) { + g_hardware.clearManualLed(); + g_hardware.setSceneSingleRandomBlink(false, 0U, 0U, 0U, 0U, false); + } + } + + if (transition.scene_changed && !kForceTestLabSceneLock) { + syncHotlineSceneState(snapshot); + if (warning_scene_transition) { + logLoopStackWatermark("after_hotline_sync", snapshot.screen_scene_id); + } + } + + const char* led_scene_id = snapshot.screen_scene_id; + if (kForceTestLabSceneLock) { + led_scene_id = kTestLabSceneId; + } + if (g_hardware_started && g_hardware_cfg.led_auto_from_scene && led_scene_id != nullptr) { + g_hardware.setSceneHint(led_scene_id); + } + if (!kForceTestLabSceneLock) { + executeStoryActionsForStep(snapshot, now_ms); + if (warning_scene_transition) { + logLoopStackWatermark("after_actions", snapshot.screen_scene_id); + } + } + + const char* step_id = (snapshot.step != nullptr && snapshot.step->id != nullptr) ? snapshot.step->id : "n/a"; + String screen_payload = g_storage.loadScenePayloadById(snapshot.screen_scene_id); + if (warning_scene_transition) { + logLoopStackWatermark("after_load_payload", snapshot.screen_scene_id); + } + const char* render_scene_id = snapshot.screen_scene_id; + const char* render_step_id = step_id; + if (kForceTestLabSceneLock) { + render_scene_id = kTestLabSceneId; + render_step_id = kTestLabLockStepId; + const String test_lab_payload = g_storage.loadScenePayloadById(kTestLabSceneId); + if (!test_lab_payload.isEmpty()) { + screen_payload = test_lab_payload; + } + } + if ((render_scene_id != nullptr) && render_scene_id[0] != '\0' && screen_payload.isEmpty()) { + ZACUS_RL_LOG_MS(6000U, + "[UI] missing scene payload scenario=%s step=%s screen=%s\n", + scenarioIdFromSnapshot(snapshot), + render_step_id, + render_scene_id); + } + const char* visual_scene_id = render_scene_id; + configureSceneVisualHardwareHints(visual_scene_id, screen_payload); + if (warning_scene_transition) { + logLoopStackWatermark("after_visual_hints", snapshot.screen_scene_id); + } + Serial.printf("[UI] render step=%s screen=%s pack=%s playing=%u\n", + render_step_id, + render_scene_id != nullptr ? render_scene_id : "n/a", + snapshot.audio_pack_id != nullptr ? snapshot.audio_pack_id : "n/a", + g_audio.isPlaying() ? 1U : 0U); + applySceneResourcePolicy(snapshot); + UiSceneFrame frame = {}; + frame.scenario = snapshot.scenario; + frame.screen_scene_id = render_scene_id; + frame.step_id = render_step_id; + frame.audio_pack_id = snapshot.audio_pack_id; + frame.audio_playing = g_audio.isPlaying(); + frame.screen_payload_json = screen_payload.isEmpty() ? nullptr : screen_payload.c_str(); + g_ui.submitSceneFrame(frame); + if (warning_scene_transition) { + logLoopStackWatermark("after_submit_scene", snapshot.screen_scene_id); + } + + // Apply new owner resources after scene config is committed in UI. + if (transition.scene_changed) { +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (transition.to_owner == SceneRuntimeOwner::kAmp) { + setAmpSceneActive(true); + } +#endif + if (transition.to_owner == SceneRuntimeOwner::kCamera) { + setCameraSceneActive(true); + } + } + g_scene_fx_orchestrator.applyTransition(transition); +} + +void startPendingAudioIfAny() { +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (g_amp_scene_active) { + String ignored_pack; + if (g_scenario.consumeAudioRequest(&ignored_pack)) { + Serial.printf("[MAIN] skip story audio while AMP owns scene pack=%s\n", ignored_pack.c_str()); + g_scenario.notifyAudioDone(millis()); + } + return; + } +#endif + const ScenarioSnapshot snapshot = g_scenario.snapshot(); + const char* scene_id = (snapshot.screen_scene_id != nullptr) ? snapshot.screen_scene_id : ""; + + if (isCreditsSceneId(scene_id)) { + const char* active_track = g_audio.currentTrack(); + const bool credits_track_active = isCreditsWinTrackPath(active_track); + const bool startup_track_pending = + (g_audio.isPlaying() && active_track != nullptr && std::strcmp(active_track, "-") == 0); + if (!credits_track_active && !startup_track_pending) { + const uint32_t now_ms = millis(); + if (now_ms >= g_next_credits_audio_retry_ms) { + if (g_audio.isPlaying()) { + g_audio.stop(); + } + const char* selected_path = "/music/SCENE_WIN.mp3"; + const bool ok = playCreditsWinTrack(&selected_path); + if (ok) { + g_next_credits_audio_retry_ms = 0U; + Serial.printf("[MAIN] credits boot audio scene=%s track=%s source=forced prev=%s\n", + scene_id, + selected_path, + (active_track != nullptr && active_track[0] != '\0') ? active_track : "none"); + } else { + g_next_credits_audio_retry_ms = now_ms + 2000U; + Serial.printf("[MAIN] credits boot audio retry scene=%s track=%s at=%lu prev=%s\n", + scene_id, + selected_path, + static_cast(g_next_credits_audio_retry_ms), + (active_track != nullptr && active_track[0] != '\0') ? active_track : "none"); + } + } + } else { + g_next_credits_audio_retry_ms = 0U; + } + } + + String audio_pack; + if (!g_scenario.consumeAudioRequest(&audio_pack)) { + return; + } + const bool is_win_etape_audio = (audio_pack == kPackWin && + snapshot.step != nullptr && snapshot.step->id != nullptr && + std::strcmp(snapshot.step->id, kStepWinEtape) == 0); + + const String configured_path = g_storage.resolveAudioPathByPackId(audio_pack.c_str()); + const char* mapped_path = audioPackToFile(audio_pack.c_str()); + if (configured_path.isEmpty() && mapped_path == nullptr) { + if (g_audio.playDiagnosticTone()) { + Serial.printf("[MAIN] audio pack=%s has no asset mapping, fallback=builtin_tone\n", audio_pack.c_str()); + return; + } + Serial.printf("[MAIN] audio pack=%s has no asset mapping and no fallback tone\n", audio_pack.c_str()); + g_scenario.notifyAudioDone(millis()); + return; + } + + if (!configured_path.isEmpty() && g_audio.play(configured_path.c_str())) { + Serial.printf("[MAIN] audio pack=%s path=%s source=story_audio_json\n", + audio_pack.c_str(), + configured_path.c_str()); + if (is_win_etape_audio) { + g_win_etape_ui_refresh_pending = true; + } + return; + } + if (mapped_path != nullptr && g_audio.play(mapped_path)) { + Serial.printf("[MAIN] audio pack=%s path=%s source=pack_map\n", audio_pack.c_str(), mapped_path); + if (is_win_etape_audio) { + g_win_etape_ui_refresh_pending = true; + } + return; + } + if (g_audio.play(kDiagAudioFile)) { + Serial.printf("[MAIN] audio fallback for pack=%s fallback=%s\n", audio_pack.c_str(), kDiagAudioFile); + if (is_win_etape_audio) { + g_win_etape_ui_refresh_pending = true; + } + return; + } + if (g_audio.playDiagnosticTone()) { + Serial.printf("[MAIN] audio fallback for pack=%s fallback=builtin_tone\n", audio_pack.c_str()); + if (is_win_etape_audio) { + g_win_etape_ui_refresh_pending = true; + } + return; + } + + // If audio cannot start (missing/invalid file), unblock scenario transitions. + Serial.printf("[MAIN] audio fallback failed for pack=%s\n", audio_pack.c_str()); + g_scenario.notifyAudioDone(millis()); +} + +void handleSerialCommandImpl(const char* command_line, uint32_t now_ms) { + if (command_line == nullptr || command_line[0] == '\0') { + return; + } + + char command[kSerialLineCapacity] = {0}; + std::strncpy(command, command_line, kSerialLineCapacity - 1U); + char* argument = nullptr; + for (size_t index = 0; index < kSerialLineCapacity && command[index] != '\0'; ++index) { + if (command[index] == ' ') { + command[index] = '\0'; + argument = &command[index + 1U]; + break; + } + } + while (argument != nullptr && *argument == ' ') { + ++argument; + } + if (argument != nullptr && *argument == '\0') { + argument = nullptr; + } + + if (std::strcmp(command, "PING") == 0) { + Serial.println("PONG"); + return; + } + if (std::strcmp(command, "HELP") == 0) { + Serial.println( + "CMDS PING STATUS BTN_READ NEXT UNLOCK RESET " + "SC_LIST SC_LOAD SCENE_GOTO SC_COVERAGE SC_REVALIDATE SC_REVALIDATE_ALL SC_EVENT [name] " + "SC_EVENT_RAW " + "STORY_DEBUG_BYPASS " + "STORY_REFRESH_SD STORY_SD_STATUS " + "UI_GFX_STATUS UI_MEM_STATUS UI_SCENE_STATUS PERF_STATUS PERF_RESET RESOURCE_STATUS RESOURCE_PROFILE RESOURCE_PROFILE_AUTO " + "SIMD_STATUS SIMD_SELFTEST SIMD_BENCH [loops] [pixels] " + "HW_STATUS HW_STATUS_JSON HW_LED_SET [brightness] [pulse] HW_LED_AUTO HW_MIC_STATUS HW_BAT_STATUS " + "LCD_BACKLIGHT [0..255] " + "MIC_TUNER_STATUS [ON|OFF|] " + "CAM_STATUS CAM_ON CAM_OFF CAM_SNAPSHOT [filename] " + "CAM_UI_SHOW CAM_UI_HIDE CAM_UI_TOGGLE CAM_REC_SNAP CAM_REC_SAVE [auto|bmp|jpg|raw] CAM_REC_GALLERY CAM_REC_NEXT CAM_REC_DELETE CAM_REC_STATUS " + "QR_SIM " + "MEDIA_LIST MEDIA_PLAY MEDIA_STOP REC_START [seconds] [filename] REC_STOP REC_STATUS " + "BOOT_MODE_STATUS BOOT_MODE_SET BOOT_MODE_CLEAR " + "NET_STATUS WIFI_STATUS WIFI_TEST WIFI_STA WIFI_CONNECT WIFI_PROVISION WIFI_FORGET WIFI_DISCONNECT " + "AUTH_STATUS AUTH_TOKEN_ROTATE [token] " + "WIFI_AP_ON [ssid] [pass] WIFI_AP_OFF " + "ESPNOW_ON ESPNOW_OFF ESPNOW_STATUS ESPNOW_STATUS_JSON ESPNOW_DISCOVERY ESPNOW_DISCOVERY_RUNTIME [on|off] " + "ESPNOW_DEVICE_NAME_GET ESPNOW_DEVICE_NAME_SET " + "ESPNOW_PEER_ADD ESPNOW_PEER_DEL ESPNOW_PEER_LIST " + "ESPNOW_SEND " + "AMP_SHOW AMP_HIDE AMP_TOGGLE AMP_SCAN AMP_PLAY AMP_NEXT AMP_PREV AMP_STOP AMP_STATUS " + "AUDIO_TEST AUDIO_TEST_FS AUDIO_PROFILE AUDIO_FX AUDIO_STATUS VOL <0..21> AUDIO_STOP STOP"); + return; + } + if (std::strcmp(command, "STATUS") == 0) { + printRuntimeStatus(); + return; + } + if (std::strcmp(command, "UI_GFX_STATUS") == 0) { + g_ui.dumpStatus(UiStatusTopic::kGraphics); + return; + } + if (std::strcmp(command, "UI_MEM_STATUS") == 0) { + g_ui.dumpStatus(UiStatusTopic::kMemory); + return; + } + if (std::strcmp(command, "UI_SCENE_STATUS") == 0) { + printUiSceneStatus(); + return; + } +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (std::strcmp(command, "AMP_STATUS") == 0) { + printAmpStatus(); + return; + } + if (std::strcmp(command, "AMP_SHOW") == 0) { + const bool ok = ensureAmpInitialized(); + if (ok) { + g_amp_player.show(); + } + Serial.printf("ACK AMP_SHOW ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "AMP_HIDE") == 0) { + const bool ok = ensureAmpInitialized(); + if (ok) { + g_amp_player.hide(); + } + Serial.printf("ACK AMP_HIDE ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "AMP_TOGGLE") == 0) { + const bool ok = ensureAmpInitialized(); + if (ok) { + g_amp_player.toggle(); + } + Serial.printf("ACK AMP_TOGGLE ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "AMP_SCAN") == 0) { + const size_t count = scanAmpPlaylistWithFallback(); + Serial.printf("ACK AMP_SCAN tracks=%u base=%s\n", + static_cast(count), + g_amp_base_dir); + return; + } + if (std::strcmp(command, "AMP_PLAY") == 0) { + if (!ensureAmpInitialized()) { + Serial.println("ERR AMP_NOT_READY"); + return; + } + if (argument == nullptr || argument[0] == '\0') { + g_amp_player.service().playIndex(g_amp_player.service().currentIndex()); + Serial.println("ACK AMP_PLAY current"); + return; + } + char arg_text[kSerialLineCapacity] = {0}; + copyText(arg_text, sizeof(arg_text), argument); + trimAsciiInPlace(arg_text); + if (arg_text[0] == '\0') { + g_amp_player.service().playIndex(g_amp_player.service().currentIndex()); + Serial.println("ACK AMP_PLAY current"); + return; + } + bool numeric = true; + for (size_t i = 0U; arg_text[i] != '\0'; ++i) { + if (!std::isdigit(static_cast(arg_text[i]))) { + numeric = false; + break; + } + } + if (numeric) { + const unsigned long index = std::strtoul(arg_text, nullptr, 10); + g_amp_player.service().playIndex(static_cast(index)); + Serial.printf("ACK AMP_PLAY idx=%lu\n", index); + } else { + g_amp_player.service().playPath(arg_text); + Serial.printf("ACK AMP_PLAY path=%s\n", arg_text); + } + return; + } + if (std::strcmp(command, "AMP_NEXT") == 0) { + if (!ensureAmpInitialized()) { + Serial.println("ERR AMP_NOT_READY"); + return; + } + g_amp_player.service().next(); + Serial.println("ACK AMP_NEXT"); + return; + } + if (std::strcmp(command, "AMP_PREV") == 0) { + if (!ensureAmpInitialized()) { + Serial.println("ERR AMP_NOT_READY"); + return; + } + g_amp_player.service().prev(); + Serial.println("ACK AMP_PREV"); + return; + } + if (std::strcmp(command, "AMP_STOP") == 0) { + if (!ensureAmpInitialized()) { + Serial.println("ERR AMP_NOT_READY"); + return; + } + g_amp_player.service().stop(); + Serial.println("ACK AMP_STOP"); + return; + } +#endif + if (std::strcmp(command, "PERF_STATUS") == 0) { + perfMonitor().dumpStatus(); + return; + } + if (std::strcmp(command, "PERF_RESET") == 0) { + perfMonitor().reset(); + Serial.println("ACK PERF_RESET"); + return; + } + if (std::strcmp(command, "RESOURCE_STATUS") == 0) { + printResourceStatus(); + return; + } + if (std::strcmp(command, "RESOURCE_PROFILE") == 0) { + if (argument == nullptr || argument[0] == '\0') { + printResourceStatus(); + return; + } + char profile_arg[48] = {0}; + copyText(profile_arg, sizeof(profile_arg), argument); + trimAsciiInPlace(profile_arg); + if (!g_resource_coordinator.parseAndSetProfile(profile_arg)) { + Serial.println("ERR RESOURCE_PROFILE_ARG"); + return; + } + g_resource_profile_auto = false; + Serial.printf("ACK RESOURCE_PROFILE profile=%s\n", g_resource_coordinator.profileName()); + printResourceStatus(); + return; + } + if (std::strcmp(command, "RESOURCE_PROFILE_AUTO") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.printf("ERR RESOURCE_PROFILE_AUTO_ARG arg=%s\n", argument == nullptr ? "missing" : "empty"); + return; + } + char profile_auto_arg[24] = {0}; + copyText(profile_auto_arg, sizeof(profile_auto_arg), argument); + trimAsciiInPlace(profile_auto_arg); + bool parse_ok = false; + applyResourceProfileAutoCommand(profile_auto_arg, &parse_ok); + if (!parse_ok) { + Serial.println("ERR RESOURCE_PROFILE_AUTO_ARG"); + return; + } + Serial.printf("ACK RESOURCE_PROFILE_AUTO profile=%s auto=%u\n", + g_resource_coordinator.profileName(), + g_resource_profile_auto ? 1U : 0U); + printResourceStatus(); + return; + } + if (std::strcmp(command, "SIMD_STATUS") == 0) { + printSimdStatus(); + return; + } + if (std::strcmp(command, "SIMD_SELFTEST") == 0) { + const bool ok = runtime::simd::runSelfTestCommand(); + Serial.printf("ACK SIMD_SELFTEST ok=%u\n", ok ? 1U : 0U); + printSimdStatus(); + return; + } + if (std::strcmp(command, "SIMD_BENCH") == 0) { + uint32_t loops = 200U; + uint32_t pixels = 7680U; + if (argument != nullptr && argument[0] != '\0') { + char args[40] = {0}; + copyText(args, sizeof(args), argument); + trimAsciiInPlace(args); + char* second = std::strchr(args, ' '); + if (second != nullptr) { + *second = '\0'; + ++second; + while (*second == ' ') { + ++second; + } + } + if (args[0] != '\0') { + loops = static_cast(std::strtoul(args, nullptr, 10)); + } + if (second != nullptr && second[0] != '\0') { + pixels = static_cast(std::strtoul(second, nullptr, 10)); + } + } + const runtime::simd::SimdBenchResult result = runtime::simd::runBenchCommand(loops, pixels); + Serial.printf("SIMD_BENCH loops=%lu pixels=%lu l8_us=%lu idx_us=%lu rgb888_us=%lu gain_us=%lu\n", + static_cast(result.loops), + static_cast(result.pixels), + static_cast(result.l8_to_rgb565_us), + static_cast(result.idx8_to_rgb565_us), + static_cast(result.rgb888_to_rgb565_us), + static_cast(result.s16_gain_q15_us)); + printSimdStatus(); + return; + } + if (std::strcmp(command, "BTN_READ") == 0) { + printButtonRead(); + return; + } + if (std::strcmp(command, "NEXT") == 0) { + const bool ok = notifyScenarioButtonGuarded(5U, false, now_ms, "serial_next"); + Serial.printf("ACK NEXT ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "UNLOCK") == 0) { + const bool ok = dispatchScenarioEventByName("UNLOCK", now_ms); + Serial.printf("ACK UNLOCK ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "RESET") == 0) { + g_audio.stop(); +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (g_amp_ready) { + g_amp_player.service().stop(); + } +#endif + (void)g_media.stop(&g_audio); + g_scenario.reset(); + if (g_boot_media_manager_mode) { + (void)g_scenario.gotoScene(kMediaManagerSceneId, now_ms, "boot_mode_media_manager_reset"); + } + g_last_action_step_key[0] = '\0'; + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + Serial.println("ACK RESET"); + return; + } + if (std::strcmp(command, "STORY_DEBUG_BYPASS") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.printf("ACK STORY_DEBUG_BYPASS enabled=%u\n", g_scenario.debugTransitionBypassEnabled() ? 1U : 0U); + return; + } + bool enabled = false; + if (!parseBoolToken(argument, &enabled)) { + Serial.println("ERR STORY_DEBUG_BYPASS_ARG"); + return; + } + g_scenario.setDebugTransitionBypassEnabled(enabled, "serial"); + Serial.printf("ACK STORY_DEBUG_BYPASS enabled=%u\n", enabled ? 1U : 0U); + return; + } + if (std::strcmp(command, "SC_LIST") == 0) { + printScenarioList(); + return; + } + if (std::strcmp(command, "SC_LOAD") == 0) { + if (argument == nullptr) { + Serial.println("ERR SC_LOAD_ARG"); + return; + } + char scenario_id[kSerialLineCapacity] = {0}; + std::strncpy(scenario_id, argument, sizeof(scenario_id) - 1U); + toUpperAsciiInPlace(scenario_id); + String load_source; + String load_path; + const bool ok = loadScenarioByIdPreferStoryFile(scenario_id, &load_source, &load_path); + Serial.printf("ACK SC_LOAD id=%s ok=%u\n", scenario_id, ok ? 1U : 0U); + if (ok) { + if (!load_path.isEmpty()) { + Serial.printf("[SCENARIO] load source=%s path=%s\n", load_source.c_str(), load_path.c_str()); + } else { + Serial.printf("[SCENARIO] load source=%s id=%s\n", load_source.c_str(), scenario_id); + } + } + if (ok) { + g_last_action_step_key[0] = '\0'; + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + } + return; + } + if (std::strcmp(command, "STORY_REFRESH_SD") == 0) { + const bool ok = refreshStoryFromSd(); + Serial.printf("ACK STORY_REFRESH_SD ok=%u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "STORY_SD_STATUS") == 0) { + Serial.printf("STORY_SD_STATUS ready=%u\n", g_storage.hasSdCard() ? 1U : 0U); + return; + } + if (std::strcmp(command, "HW_STATUS") == 0 || std::strcmp(command, "HW_MIC_STATUS") == 0 || + std::strcmp(command, "HW_BAT_STATUS") == 0) { + printHardwareStatus(); + return; + } + if (std::strcmp(command, "HW_STATUS_JSON") == 0) { + printHardwareStatusJson(); + return; + } + if (std::strcmp(command, "MIC_TUNER_STATUS") == 0) { + if (argument == nullptr) { + printMicTunerStatus(); + return; + } + + char arg_copy[40] = {0}; + copyText(arg_copy, sizeof(arg_copy), argument); + trimAsciiInPlace(arg_copy); + if (arg_copy[0] == '\0') { + printMicTunerStatus(); + return; + } + + char* extra = std::strchr(arg_copy, ' '); + if (extra != nullptr) { + *extra = '\0'; + ++extra; + while (*extra == ' ') { + ++extra; + } + } + + bool stream_value = false; + if (parseBoolToken(arg_copy, &stream_value)) { + g_mic_tuner_stream_enabled = stream_value; + if (extra != nullptr && extra[0] != '\0') { + const long period_ms = std::strtol(extra, nullptr, 10); + if (period_ms >= 50L && period_ms <= 5000L) { + g_mic_tuner_stream_period_ms = static_cast(period_ms); + } + } + g_next_mic_tuner_stream_ms = now_ms + 20U; + Serial.printf("ACK MIC_TUNER_STATUS stream=%u period_ms=%u\n", + g_mic_tuner_stream_enabled ? 1U : 0U, + static_cast(g_mic_tuner_stream_period_ms)); + if (!g_mic_tuner_stream_enabled) { + printMicTunerStatus(); + } + return; + } + + const long period_ms = std::strtol(arg_copy, nullptr, 10); + if (period_ms >= 50L && period_ms <= 5000L) { + g_mic_tuner_stream_enabled = true; + g_mic_tuner_stream_period_ms = static_cast(period_ms); + g_next_mic_tuner_stream_ms = now_ms + 20U; + Serial.printf("ACK MIC_TUNER_STATUS stream=1 period_ms=%u\n", static_cast(g_mic_tuner_stream_period_ms)); + return; + } + + Serial.println("ERR MIC_TUNER_STATUS_ARG"); + return; + } + if (std::strcmp(command, "CAM_STATUS") == 0) { + printCameraStatus(); + return; + } + if (std::strcmp(command, "CAM_REC_STATUS") == 0) { + printCameraRecorderStatus(); + return; + } + if (std::strcmp(command, "REC_STATUS") == 0) { + printMediaStatus(); + return; + } + if (std::strcmp(command, "HW_LED_SET") == 0 || std::strcmp(command, "HW_LED_AUTO") == 0 || + std::strcmp(command, "LCD_BACKLIGHT") == 0 || + std::strcmp(command, "CAM_ON") == 0 || std::strcmp(command, "CAM_OFF") == 0 || + std::strcmp(command, "CAM_SNAPSHOT") == 0 || std::strcmp(command, "CAM_UI_SHOW") == 0 || + std::strcmp(command, "CAM_UI_HIDE") == 0 || std::strcmp(command, "CAM_UI_TOGGLE") == 0 || + std::strcmp(command, "CAM_REC_SNAP") == 0 || std::strcmp(command, "CAM_REC_SAVE") == 0 || + std::strcmp(command, "CAM_REC_GALLERY") == 0 || std::strcmp(command, "CAM_REC_NEXT") == 0 || + std::strcmp(command, "CAM_REC_DELETE") == 0 || std::strcmp(command, "MEDIA_LIST") == 0 || + std::strcmp(command, "MEDIA_PLAY") == 0 || std::strcmp(command, "MEDIA_STOP") == 0 || + std::strcmp(command, "REC_START") == 0 || std::strcmp(command, "REC_STOP") == 0 || + std::strcmp(command, "SCENE_GOTO") == 0 || std::strcmp(command, "QR_SIM") == 0 || + std::strcmp(command, "BOOT_MODE_STATUS") == 0 || std::strcmp(command, "BOOT_MODE_SET") == 0 || + std::strcmp(command, "BOOT_MODE_CLEAR") == 0) { + String action = command; + if (argument != nullptr && argument[0] != '\0') { + action += " "; + action += argument; + } + String error; + const bool ok = dispatchControlAction(action, now_ms, &error); + Serial.printf("ACK %s ok=%u%s%s\n", + command, + ok ? 1U : 0U, + error.isEmpty() ? "" : " err=", + error.isEmpty() ? "" : error.c_str()); + return; + } + if (std::strcmp(command, "SC_COVERAGE") == 0) { + printScenarioCoverage(); + return; + } + if (std::strcmp(command, "SC_REVALIDATE") == 0) { + runScenarioRevalidate(now_ms); + return; + } + if (std::strcmp(command, "SC_REVALIDATE_ALL") == 0) { + runScenarioRevalidateAll(now_ms); + return; + } + if (std::strcmp(command, "SC_EVENT") == 0) { + if (argument == nullptr) { + Serial.println("ERR SC_EVENT_USAGE"); + return; + } + char event_args[kSerialLineCapacity] = {0}; + std::strncpy(event_args, argument, kSerialLineCapacity - 1U); + char* event_type_text = event_args; + char* event_name_raw = nullptr; + for (size_t index = 0; index < kSerialLineCapacity && event_args[index] != '\0'; ++index) { + if (event_args[index] == ' ') { + event_args[index] = '\0'; + event_name_raw = &event_args[index + 1U]; + break; + } + } + while (event_name_raw != nullptr && *event_name_raw == ' ') { + ++event_name_raw; + } + StoryEventType event_type = StoryEventType::kNone; + if (!parseEventType(event_type_text, &event_type)) { + Serial.println("ERR SC_EVENT_TYPE"); + return; + } + const char* event_name = event_name_raw; + if (event_name == nullptr || event_name[0] == '\0') { + event_name = defaultEventNameForType(event_type); + } + const ScenarioSnapshot before = g_scenario.snapshot(); + const bool dispatched = dispatchScenarioEventByType(event_type, event_name, now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + if (dispatched && changed) { + g_last_action_step_key[0] = '\0'; + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + } + Serial.printf("ACK SC_EVENT type=%s name=%s dispatched=%u changed=%u step=%s\n", + eventTypeName(event_type), + event_name, + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(after)); + return; + } + if (std::strcmp(command, "SC_EVENT_RAW") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.println("ERR SC_EVENT_RAW_ARG"); + return; + } + const ScenarioSnapshot before = g_scenario.snapshot(); + const bool dispatched = dispatchScenarioEventByName(argument, now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + if (dispatched && changed) { + g_last_action_step_key[0] = '\0'; + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + } + Serial.printf("ACK SC_EVENT_RAW name=%s dispatched=%u changed=%u step=%s\n", + argument, + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(after)); + return; + } + if (std::strcmp(command, "NET_STATUS") == 0 || std::strcmp(command, "WIFI_STATUS") == 0 || + std::strcmp(command, "ESPNOW_STATUS") == 0) { + printNetworkStatus(); + return; + } + if (std::strcmp(command, "AUTH_STATUS") == 0) { + Serial.printf("AUTH_STATUS setup_mode=%u auth_required=%u token_set=%u provisioned=%u\n", + g_setup_mode ? 1U : 0U, + g_web_auth_required ? 1U : 0U, + g_web_auth_token[0] != '\0' ? 1U : 0U, + g_credential_store.isProvisioned() ? 1U : 0U); + return; + } + if (std::strcmp(command, "AUTH_TOKEN_ROTATE") == 0) { + bool ok = false; + if (argument != nullptr && argument[0] != '\0') { + char token[kWebAuthTokenCapacity] = {0}; + copyText(token, sizeof(token), argument); + trimAsciiInPlace(token); + ok = token[0] != '\0' && g_credential_store.saveWebToken(token); + if (ok) { + copyText(g_web_auth_token, sizeof(g_web_auth_token), token); + } + } else { + ok = ensureWebToken(true, false, nullptr); + } + Serial.printf("ACK AUTH_TOKEN_ROTATE ok=%u%s%s\n", + ok ? 1U : 0U, + ok ? " token=" : "", + ok ? g_web_auth_token : ""); + return; + } + if (std::strcmp(command, "ESPNOW_STATUS_JSON") == 0) { + printEspNowStatusJson(); + return; + } + if (std::strcmp(command, "WIFI_TEST") == 0) { + if (g_network_cfg.wifi_test_ssid[0] == '\0') { + Serial.println("ERR WIFI_TEST_NO_CREDENTIALS"); + return; + } + const bool ok = g_network.connectSta(g_network_cfg.wifi_test_ssid, g_network_cfg.wifi_test_password); + Serial.printf("ACK WIFI_TEST ssid=%s ok=%u\n", g_network_cfg.wifi_test_ssid, ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "WIFI_PROVISION") == 0) { + if (argument == nullptr) { + Serial.println("ERR WIFI_PROVISION_ARG"); + return; + } + String ssid; + String pass; + if (!splitSsidPass(argument, &ssid, &pass) || ssid.isEmpty()) { + Serial.println("ERR WIFI_PROVISION_ARG"); + return; + } + bool connect_started = false; + bool persisted = false; + bool token_generated = false; + const bool ok = provisionWifiCredentials( + ssid.c_str(), pass.c_str(), true, &connect_started, &persisted, &token_generated); + Serial.printf("ACK WIFI_PROVISION ssid=%s ok=%u persisted=%u connect_started=%u setup_mode=%u token_set=%u\n", + ssid.c_str(), + ok ? 1U : 0U, + persisted ? 1U : 0U, + connect_started ? 1U : 0U, + g_setup_mode ? 1U : 0U, + g_web_auth_token[0] != '\0' ? 1U : 0U); + if (token_generated && g_web_auth_token[0] != '\0') { + Serial.printf("AUTH_TOKEN %s\n", g_web_auth_token); + } + return; + } + if (std::strcmp(command, "WIFI_STA") == 0 || std::strcmp(command, "WIFI_CONNECT") == 0) { + if (argument == nullptr) { + Serial.println("ERR WIFI_STA_ARG"); + return; + } + String ssid; + String pass; + if (!splitSsidPass(argument, &ssid, &pass) || ssid.isEmpty()) { + Serial.println("ERR WIFI_STA_ARG"); + return; + } + const bool ok = g_network.connectSta(ssid.c_str(), pass.c_str()); + Serial.printf("ACK WIFI_STA ssid=%s ok=%u\n", ssid.c_str(), ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "WIFI_FORGET") == 0) { + const bool ok = forgetWifiCredentials(); + Serial.printf("ACK WIFI_FORGET ok=%u setup_mode=%u\n", ok ? 1U : 0U, g_setup_mode ? 1U : 0U); + return; + } + if (std::strcmp(command, "WIFI_DISCONNECT") == 0) { + g_network.disconnectSta(); + Serial.println("ACK WIFI_DISCONNECT"); + return; + } + if (std::strcmp(command, "WIFI_AP_ON") == 0) { + String ssid = g_network_cfg.ap_default_ssid; + String pass = g_network_cfg.ap_default_password; + if (argument != nullptr) { + String parsed_ssid; + String parsed_pass; + if (splitSsidPass(argument, &parsed_ssid, &parsed_pass) && !parsed_ssid.isEmpty()) { + ssid = parsed_ssid; + if (!parsed_pass.isEmpty()) { + pass = parsed_pass; + } + } else if (std::strlen(argument) > 0U) { + ssid = argument; + } + } + const bool ok = g_network.startAp(ssid.c_str(), pass.c_str()); + Serial.printf("ACK WIFI_AP_ON ssid=%s ok=%u\n", ssid.c_str(), ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "WIFI_AP_OFF") == 0) { + g_network.stopAp(); + Serial.println("ACK WIFI_AP_OFF"); + return; + } + if (std::strcmp(command, "ESPNOW_ON") == 0) { + const bool ok = g_network.enableEspNow(); + Serial.printf("ACK ESPNOW_ON %u\n", ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "ESPNOW_OFF") == 0) { + g_network.disableEspNow(); + Serial.println("ACK ESPNOW_OFF"); + return; + } + if (std::strcmp(command, "ESPNOW_DISCOVERY") == 0) { + const uint8_t discovered = runEspNowDiscoverySweep(); + Serial.printf("ACK ESPNOW_DISCOVERY mode=broadcast+discovery peers=%u\n", discovered); + for (uint8_t index = 0U; index < discovered; ++index) { + char peer[18] = {0}; + if (!g_network.espNowPeerAt(index, peer, sizeof(peer))) { + continue; + } + Serial.printf("ESPNOW_PEER idx=%u mac=%s\n", index, peer); + } + return; + } + if (std::strcmp(command, "ESPNOW_DISCOVERY_RUNTIME") == 0) { + if (argument != nullptr && argument[0] != '\0') { + bool enabled = false; + if (!parseBoolToken(argument, &enabled)) { + Serial.println("ERR ESPNOW_DISCOVERY_RUNTIME_ARG"); + return; + } + g_espnow_discovery_runtime_enabled = enabled; + g_next_espnow_discovery_ms = now_ms + 50U; + } + Serial.printf("ACK ESPNOW_DISCOVERY_RUNTIME enabled=%u interval_ms=%lu\n", + g_espnow_discovery_runtime_enabled ? 1U : 0U, + static_cast(kEspNowDiscoveryIntervalMs)); + return; + } + if (std::strcmp(command, "ESPNOW_DEVICE_NAME_GET") == 0) { + Serial.printf("ACK ESPNOW_DEVICE_NAME_GET name=%s\n", g_espnow_device_name); + return; + } + if (std::strcmp(command, "ESPNOW_DEVICE_NAME_SET") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.println("ERR ESPNOW_DEVICE_NAME_SET_ARG"); + return; + } + const bool ok = saveEspNowDeviceNameToNvs(argument); + Serial.printf("ACK ESPNOW_DEVICE_NAME_SET ok=%u name=%s\n", ok ? 1U : 0U, g_espnow_device_name); + return; + } + if (std::strcmp(command, "ESPNOW_PEER_ADD") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.println("ERR ESPNOW_PEER_ADD_ARG"); + return; + } + const bool ok = g_network.addEspNowPeer(argument); + Serial.printf("ACK ESPNOW_PEER_ADD mac=%s ok=%u\n", argument, ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "ESPNOW_PEER_DEL") == 0) { + if (argument == nullptr || argument[0] == '\0') { + Serial.println("ERR ESPNOW_PEER_DEL_ARG"); + return; + } + const bool ok = g_network.removeEspNowPeer(argument); + Serial.printf("ACK ESPNOW_PEER_DEL mac=%s ok=%u\n", argument, ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "ESPNOW_PEER_LIST") == 0) { + const uint8_t count = g_network.espNowPeerCount(); + Serial.printf("ESPNOW_PEER_LIST count=%u\n", count); + for (uint8_t index = 0U; index < count; ++index) { + char peer[18] = {0}; + if (!g_network.espNowPeerAt(index, peer, sizeof(peer))) { + continue; + } + Serial.printf("ESPNOW_PEER idx=%u mac=%s\n", index, peer); + } + return; + } + if (std::strcmp(command, "ESPNOW_SEND") == 0) { + if (argument == nullptr) { + Serial.println("ERR ESPNOW_SEND_ARG"); + return; + } + String payload; + if (!parseEspNowSendPayload(argument, payload, nullptr)) { + Serial.println("ERR ESPNOW_SEND_ARG"); + return; + } + const bool ok = g_network.sendEspNowTarget(kEspNowBroadcastTarget, payload.c_str()); + Serial.printf("ACK ESPNOW_SEND target=%s ok=%u\n", kEspNowBroadcastTarget, ok ? 1U : 0U); + return; + } + if (std::strcmp(command, "AUDIO_TEST") == 0) { + g_audio.stop(); + const bool ok = g_audio.playDiagnosticTone(); + Serial.printf("ACK AUDIO_TEST %u\n", ok ? 1 : 0); + return; + } + if (std::strcmp(command, "AUDIO_TEST_FS") == 0) { + g_audio.stop(); + const bool ok = g_audio.play(kDiagAudioFile); + Serial.printf("ACK AUDIO_TEST_FS %u\n", ok ? 1 : 0); + return; + } + if (std::strcmp(command, "AUDIO_PROFILE") == 0) { + if (argument == nullptr) { + Serial.printf("AUDIO_PROFILE current=%u label=%s count=%u\n", + g_audio.outputProfile(), + g_audio.outputProfileLabel(g_audio.outputProfile()), + g_audio.outputProfileCount()); + return; + } + char* end = nullptr; + const unsigned long parsed = std::strtoul(argument, &end, 10); + if (end == argument || (end != nullptr && *end != '\0') || parsed > 255UL) { + Serial.println("ERR AUDIO_PROFILE_ARG"); + return; + } + const uint8_t profile = static_cast(parsed); + const bool ok = g_audio.setOutputProfile(profile); + Serial.printf("ACK AUDIO_PROFILE %u %u %s\n", + profile, + ok ? 1U : 0U, + ok ? g_audio.outputProfileLabel(profile) : "invalid"); + return; + } + if (std::strcmp(command, "AUDIO_STATUS") == 0) { + Serial.printf("AUDIO_STATUS playing=%u track=%s codec=%s bitrate=%u profile=%u:%s fx=%u:%s vol=%u\n", + g_audio.isPlaying() ? 1U : 0U, + g_audio.currentTrack(), + g_audio.activeCodec(), + g_audio.activeBitrateKbps(), + g_audio.outputProfile(), + g_audio.outputProfileLabel(g_audio.outputProfile()), + g_audio.fxProfile(), + g_audio.fxProfileLabel(g_audio.fxProfile()), + g_audio.volume()); + return; + } + if (std::strcmp(command, "AUDIO_FX") == 0) { + if (argument == nullptr) { + Serial.printf("AUDIO_FX current=%u label=%s count=%u\n", + g_audio.fxProfile(), + g_audio.fxProfileLabel(g_audio.fxProfile()), + g_audio.fxProfileCount()); + return; + } + char* end = nullptr; + const unsigned long parsed = std::strtoul(argument, &end, 10); + if (end == argument || (end != nullptr && *end != '\0') || parsed >= g_audio.fxProfileCount() || parsed > 255UL) { + Serial.println("ERR AUDIO_FX_ARG"); + return; + } + const uint8_t fx = static_cast(parsed); + const bool ok = g_audio.setFxProfile(fx); + Serial.printf("ACK AUDIO_FX %u %u %s\n", + fx, + ok ? 1U : 0U, + ok ? g_audio.fxProfileLabel(fx) : "invalid"); + return; + } + if (std::strcmp(command, "VOL") == 0) { + if (argument == nullptr) { + Serial.printf("VOL %u\n", g_audio.volume()); + return; + } + char* end = nullptr; + const unsigned long parsed = std::strtoul(argument, &end, 10); + if (end == argument || (end != nullptr && *end != '\0') || parsed > static_cast(FREENOVE_AUDIO_MAX_VOLUME)) { + Serial.println("ERR VOL_ARG"); + return; + } + g_audio.setVolume(static_cast(parsed)); + Serial.printf("ACK VOL %u\n", g_audio.volume()); + return; + } + if (std::strcmp(command, "AUDIO_STOP") == 0) { + g_audio.stop(); + Serial.println("ACK AUDIO_STOP"); + return; + } + if (std::strcmp(command, "STOP") == 0) { + g_audio.stop(); + Serial.println("ACK STOP"); + return; + } + Serial.printf("UNKNOWN %s\n", command_line); +} + +void pollSerialCommands(uint32_t now_ms) { + while (Serial.available() > 0) { + const int raw = Serial.read(); + if (raw < 0) { + break; + } + const char ch = static_cast(raw); + if (ch == '\r' || ch == '\n') { + if (g_serial_line_len == 0U) { + continue; + } + g_serial_line[g_serial_line_len] = '\0'; + g_app_coordinator.onSerialLine(g_serial_line, now_ms); + g_serial_line_len = 0U; + continue; + } + if (g_serial_line_len + 1U >= kSerialLineCapacity) { + g_serial_line_len = 0U; + Serial.println("ERR CMD_TOO_LONG"); + continue; + } + g_serial_line[g_serial_line_len++] = ch; + } +} + +} // namespace + +void setup() { + Serial.begin(115200); + delay(100); + RuntimeMetrics::instance().reset(bootResetReasonCode()); + Serial.println("[MAIN] Freenove all-in-one boot"); + bootPrintReport(kFirmwareName, ZACUS_FW_VERSION); + logBuildMemoryPolicy(); + logBootMemoryProfile(); + g_runtime_serial_service.configure(handleSerialCommandImpl, dispatchControlActionImpl); + g_runtime_scene_service.configure(refreshSceneIfNeededImpl, startPendingAudioIfAny); + g_runtime_web_service.configure(setupWebUiImpl); + + if (!g_storage.begin()) { + Serial.println("[MAIN] storage init failed"); + } + g_storage.ensurePath("/data"); + g_storage.ensurePath("/scenarios"); + g_storage.ensurePath("/scenarios/data"); + g_storage.ensurePath("/screens"); + g_storage.ensurePath("/story"); + g_storage.ensurePath("/story/scenarios"); + g_storage.ensurePath("/story/screens"); + g_storage.ensurePath("/story/audio"); + g_storage.ensurePath("/story/apps"); + g_storage.ensurePath("/story/actions"); + g_storage.ensurePath("/picture"); + g_storage.ensurePath("/music"); + g_storage.ensurePath("/audio"); + g_storage.ensurePath("/recorder"); + g_storage.ensureDefaultStoryBundle(); + if (kAutoSyncStoryFromSdOnBoot && g_storage.hasSdCard()) { + g_storage.syncStoryTreeFromSd(); + } + g_storage.ensureDefaultScenarioFile(kDefaultScenarioFile); + if (kAutoSyncStoryFromSdOnBoot && g_storage.hasSdCard()) { + g_storage.syncStoryFileFromSd(kDefaultScenarioFile); + } else if (g_storage.hasSdCard()) { + Serial.println("[MAIN] SD story sync disabled on boot (LittleFS is primary)"); + } + RuntimeConfigService::load(g_storage, &g_network_cfg, &g_hardware_cfg, &g_camera_cfg, &g_media_cfg); + loadBootProvisioningState(); + loadEspNowDeviceNameFromNvs(); + { + BootModeStore::StartupMode startup_mode = BootModeStore::StartupMode::kStory; + if (g_boot_mode_store.loadMode(&startup_mode)) { + applyStartupMode(startup_mode); + } else { + applyStartupMode(BootModeStore::StartupMode::kStory); + } + Serial.printf("[BOOT] startup_mode=%s media_validated=%u\n", + BootModeStore::modeLabel(currentStartupMode()), + g_boot_mode_store.isMediaValidated() ? 1U : 0U); + } + g_resource_coordinator.begin(); + Serial.printf("[MAIN] default scenario checksum=%lu\n", + static_cast(g_storage.checksum(kDefaultScenarioFile))); + Serial.printf("[MAIN] story storage sd=%u\n", g_storage.hasSdCard() ? 1U : 0U); + Serial.printf("[AUTH] setup_mode=%u auth_required=%u token_set=%u\n", + g_setup_mode ? 1U : 0U, + g_web_auth_required ? 1U : 0U, + g_web_auth_token[0] != '\0' ? 1U : 0U); + + // Initialize audio before camera/network stacks to keep DMA heap pressure low during I2S bring-up. + g_audio.begin(); + Serial.printf("[MAIN] audio profile=%u:%s count=%u\n", + g_audio.outputProfile(), + g_audio.outputProfileLabel(g_audio.outputProfile()), + g_audio.outputProfileCount()); + g_audio.setAudioDoneCallback(onAudioFinished, nullptr); + if (kBootDiagnosticTone) { + g_audio.playDiagnosticTone(); + } + + g_media.begin(g_media_cfg); + g_camera.begin(g_camera_cfg); + if (g_camera_cfg.enabled_on_boot) { + String cam_error; + if (approveCameraOperation("boot_cam_on", &cam_error)) { + const bool cam_ok = g_camera.start(); + Serial.printf("[CAM] boot start=%u\n", cam_ok ? 1U : 0U); + } else { + Serial.printf("[CAM] boot start blocked profile=%s\n", g_resource_coordinator.profileName()); + } + } + if (g_hardware_cfg.enabled_on_boot) { + g_hardware_started = g_hardware.begin(); + g_next_hw_telemetry_ms = millis() + g_hardware_cfg.telemetry_period_ms; + g_mic_event_armed = true; + g_battery_low_latched = false; + resetLaTriggerState(false); + } else { + g_hardware_started = false; + Serial.println("[HW] disabled by APP_HARDWARE config"); + } + + g_buttons.begin(); + g_touch.begin(); + g_network.begin(g_network_cfg.hostname); + if (kBootEspNowOnlyMode) { + g_network.configureFallbackAp("", ""); + g_network.configureLocalPolicy("", "", false, g_network_cfg.local_retry_ms, false); + Serial.println("[NET] wifi+web disabled (espnow_only_mode=1)"); + } else { + g_network.configureFallbackAp(g_network_cfg.ap_default_ssid, g_network_cfg.ap_default_password); + g_network.configureLocalPolicy(g_network_cfg.local_ssid, + g_network_cfg.local_password, + g_network_cfg.force_ap_if_not_local, + g_network_cfg.local_retry_ms, + g_network_cfg.pause_local_retry_when_ap_client); + if (g_setup_mode && g_network_cfg.ap_default_ssid[0] != '\0') { + g_network.startAp(g_network_cfg.ap_default_ssid, g_network_cfg.ap_default_password); + } + if (g_network_cfg.local_ssid[0] != '\0') { + const bool connect_started = g_network.connectSta(g_network_cfg.local_ssid, g_network_cfg.local_password); + Serial.printf("[NET] boot wifi target=%s started=%u\n", + g_network_cfg.local_ssid, + connect_started ? 1U : 0U); + } + } + if (g_network_cfg.espnow_enabled_on_boot) { + if (g_network.enableEspNow()) { + for (uint8_t index = 0U; index < g_network_cfg.espnow_boot_peer_count; ++index) { + const char* peer = g_network_cfg.espnow_boot_peers[index]; + if (peer == nullptr || peer[0] == '\0') { + continue; + } + const bool ok = g_network.addEspNowPeer(peer); + Serial.printf("[NET] boot peer add mac=%s ok=%u\n", peer, ok ? 1U : 0U); + } + } + } else { + Serial.println("[NET] ESP-NOW boot disabled by APP_ESPNOW config"); + } + g_next_espnow_discovery_ms = millis() + 2000U; + if (!kBootEspNowOnlyMode) { + setupWebUi(); + } else { + Serial.println("[WEB] disabled (espnow_only_mode=1)"); + } + if (!g_scenario.begin(kDefaultScenarioFile)) { + Serial.println("[MAIN] scenario init failed"); + } + if (kForceTestLabSceneLock) { + const bool routed = g_scenario.gotoScene(kTestLabSceneId, millis(), "boot_force_test_lab"); + Serial.printf("[BOOT] route test_lab scene=%s ok=%u lock=1\n", kTestLabSceneId, routed ? 1U : 0U); + } else if (g_boot_media_manager_mode) { + const bool routed = g_scenario.gotoScene(kMediaManagerSceneId, millis(), "boot_mode_media_manager"); + Serial.printf("[BOOT] route media_manager scene=%s ok=%u\n", kMediaManagerSceneId, routed ? 1U : 0U); + } else { + const bool routed = g_scenario.gotoScene(kDefaultBootSceneId, millis(), "boot_story_default"); + Serial.printf("[BOOT] route default scene=%s ok=%u\n", kDefaultBootSceneId, routed ? 1U : 0U); + } + g_last_action_step_key[0] = '\0'; + + g_ui.begin(); + applyLcdBacklight(g_lcd_backlight_level); + g_ui.setHardwareController(&g_hardware); + UiLaMetrics boot_la_metrics = {}; + boot_la_metrics.locked = false; + boot_la_metrics.stability_pct = 0U; + boot_la_metrics.stable_ms = 0U; + boot_la_metrics.stable_target_ms = g_hardware_cfg.mic_la_stable_ms; + boot_la_metrics.gate_elapsed_ms = 0U; + boot_la_metrics.gate_timeout_ms = g_hardware_cfg.mic_la_timeout_ms; + g_ui.setLaMetrics(boot_la_metrics); + g_ui.setHardwareSnapshotRef(&g_hardware.snapshotRef()); +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + g_amp_ready = false; + g_amp_scene_active = false; + copyText(g_amp_base_dir, sizeof(g_amp_base_dir), kAmpMusicPathPrimary); + Serial.println("[AMP] lazy init (on SCENE_MP3_PLAYER)"); +#endif + g_camera_scene_active = false; + g_camera_scene_ready = ensureCameraUiInitialized(); + refreshSceneIfNeeded(true); + startPendingAudioIfAny(); + + g_runtime_services.audio = &g_audio; + g_runtime_services.scenario = &g_scenario; + g_runtime_services.ui = &g_ui; + g_runtime_services.storage = &g_storage; + g_runtime_services.buttons = &g_buttons; + g_runtime_services.touch = &g_touch; + g_runtime_services.network = &g_network; + g_runtime_services.hardware = &g_hardware; + g_runtime_services.camera = &g_camera; + g_runtime_services.media = &g_media; + g_runtime_services.resource_coordinator = &g_resource_coordinator; + g_runtime_services.network_cfg = &g_network_cfg; + g_runtime_services.hardware_cfg = &g_hardware_cfg; + g_runtime_services.camera_cfg = &g_camera_cfg; + g_runtime_services.media_cfg = &g_media_cfg; + g_runtime_services.tick_runtime = runtimeTickBridge; + g_runtime_services.dispatch_serial = serialDispatchBridge; + g_app_coordinator.begin(&g_runtime_services); +} + +void runRuntimeIteration(uint32_t now_ms) { + ButtonEvent event; + while (g_buttons.pollEvent(&event)) { + const uint32_t event_ms = (event.ms != 0U) ? event.ms : now_ms; + ZACUS_RL_LOG_MS(250U, + "[MAIN] button key=%u long=%u ms=%lu\n", + event.key, + event.long_press ? 1U : 0U, + static_cast(event_ms)); + UiInputEvent ui_event = {}; + ui_event.type = UiInputEventType::kButton; + ui_event.key = event.key; + ui_event.long_press = event.long_press; + g_ui.submitInputEvent(ui_event); + if (g_camera_scene_active) { + (void)dispatchCameraSceneButton(event.key, event.long_press); + } +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (!g_amp_scene_active && !g_camera_scene_active) { + notifyScenarioButtonGuarded(event.key, event.long_press, event_ms, "physical_button"); + } +#else + if (!g_camera_scene_active) { + notifyScenarioButtonGuarded(event.key, event.long_press, event_ms, "physical_button"); + } +#endif + if (g_hardware_started) { + g_hardware.noteButton(event.key, event.long_press, event_ms); + } + } + + TouchPoint touch; + if (g_touch.poll(&touch)) { + UiInputEvent ui_event = {}; + ui_event.type = UiInputEventType::kTouch; + ui_event.touch_x = touch.x; + ui_event.touch_y = touch.y; + ui_event.touch_pressed = touch.touched; + g_ui.submitInputEvent(ui_event); + } else { + UiInputEvent ui_event = {}; + ui_event.type = UiInputEventType::kTouch; + ui_event.touch_x = 0; + ui_event.touch_y = 0; + ui_event.touch_pressed = false; + g_ui.submitInputEvent(ui_event); + } + + const uint32_t network_started_us = perfMonitor().beginSample(); + g_network.update(now_ms); + maybeRunEspNowDiscoveryRuntime(now_ms); + perfMonitor().endSample(PerfSection::kNetworkUpdate, network_started_us); + if (g_hardware_started) { + applyMicRuntimePolicy(); + g_hardware.update(now_ms); + updateSceneWs2812Fx(now_ms); + maybeEmitHardwareEvents(now_ms); + maybeLogHardwareTelemetry(now_ms); + maybeStreamMicTunerStatus(now_ms); + } + char net_payload[192] = {0}; + char net_peer[18] = {0}; + char net_msg_id[32] = {0}; + char net_type[24] = {0}; + uint32_t net_seq = 0U; + bool net_ack_requested = false; + while (g_network.consumeEspNowMessage(net_payload, + sizeof(net_payload), + net_peer, + sizeof(net_peer), + net_msg_id, + sizeof(net_msg_id), + &net_seq, + net_type, + sizeof(net_type), + &net_ack_requested)) { + EspNowCommandResult command_result; + bool handled_as_command = false; + if (net_type[0] != '\0' && std::strcmp(net_type, "command") == 0) { + handled_as_command = executeEspNowCommandPayload(net_payload, now_ms, &command_result); + if (!command_result.handled) { + command_result.handled = true; + command_result.ok = false; + command_result.code = "command"; + command_result.error = "unsupported_command"; + } + sendEspNowAck(net_peer, net_msg_id, net_seq, command_result, net_ack_requested); + Serial.printf("[NET] ESPNOW command peer=%s msg_id=%s seq=%lu ok=%u code=%s err=%s\n", + net_peer[0] != '\0' ? net_peer : "n/a", + net_msg_id[0] != '\0' ? net_msg_id : "n/a", + static_cast(net_seq), + command_result.ok ? 1U : 0U, + command_result.code.c_str(), + command_result.error.c_str()); + if (handled_as_command) { + continue; + } + } + if (!g_network_cfg.espnow_bridge_to_story_event) { + Serial.printf("[NET] ESPNOW peer=%s payload=%s type=%s bridge=off\n", + net_peer[0] != '\0' ? net_peer : "n/a", + net_payload, + net_type[0] != '\0' ? net_type : "legacy"); + continue; + } + char event_token[kSerialLineCapacity] = {0}; + if (!normalizeEspNowPayloadToScenarioEvent(net_payload, event_token, sizeof(event_token))) { + Serial.printf("[NET] ESPNOW peer=%s payload=%s type=%s ignored=unsupported\n", + net_peer[0] != '\0' ? net_peer : "n/a", + net_payload, + net_type[0] != '\0' ? net_type : "legacy"); + continue; + } + const ScenarioSnapshot before = g_scenario.snapshot(); + const bool dispatched = dispatchScenarioEventByName(event_token, now_ms); + const ScenarioSnapshot after = g_scenario.snapshot(); + const bool changed = std::strcmp(stepIdFromSnapshot(before), stepIdFromSnapshot(after)) != 0; + Serial.printf("[NET] ESPNOW peer=%s payload=%s type=%s event=%s dispatched=%u changed=%u step=%s\n", + net_peer[0] != '\0' ? net_peer : "n/a", + net_payload, + net_type[0] != '\0' ? net_type : "legacy", + event_token, + dispatched ? 1U : 0U, + changed ? 1U : 0U, + stepIdFromSnapshot(after)); + } + + const uint32_t audio_started_us = perfMonitor().beginSample(); +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (!g_amp_scene_active) { + g_audio.update(); + } +#else + g_audio.update(); +#endif + perfMonitor().endSample(PerfSection::kAudioUpdate, audio_started_us); + g_media.update(now_ms, &g_audio); + const uint32_t scenario_started_us = perfMonitor().beginSample(); + const ScenarioSnapshot scenario_before_tick = g_scenario.snapshot(); + if (kForceTestLabSceneLock) { + if (!isFixedTestSceneActive(scenario_before_tick)) { + const bool routed = g_scenario.gotoScene(kTestLabSceneId, now_ms, "runtime_force_test_lab"); + if (!routed) { + ZACUS_RL_LOG_MS(4000U, "[SCENE] force test lab failed\n"); + } + } + } else if (isFixedTestSceneActive(scenario_before_tick)) { + // Keep SCENE_TEST_LAB stable while calibrating colors (no automatic step transitions). + } else { + g_scenario.tick(now_ms); + } + perfMonitor().endSample(PerfSection::kScenarioTick, scenario_started_us); + startPendingAudioIfAny(); + updateUsonProtoAmbientAudio(g_scenario.snapshot(), now_ms); + if (g_win_etape_ui_refresh_pending) { + g_win_etape_ui_refresh_pending = false; + refreshSceneIfNeeded(true); + } + uint32_t la_gate_elapsed_ms = 0U; + if (g_la_trigger.gate_active && g_la_trigger.gate_entered_ms > 0U) { + la_gate_elapsed_ms = now_ms - g_la_trigger.gate_entered_ms; + } + UiLaMetrics la_metrics = {}; + la_metrics.locked = g_la_trigger.locked; + la_metrics.stability_pct = laStablePercent(); + la_metrics.stable_ms = g_la_trigger.stable_ms; + la_metrics.stable_target_ms = g_hardware_cfg.mic_la_stable_ms; + la_metrics.gate_elapsed_ms = la_gate_elapsed_ms; + la_metrics.gate_timeout_ms = g_hardware_cfg.mic_la_timeout_ms; + g_ui.setLaMetrics(la_metrics); + refreshSceneIfNeeded(false); + updateWarningSirenFx(now_ms); + updateSceneBacklightFx(now_ms); + const uint32_t ui_started_us = perfMonitor().beginSample(); + g_ui.tick(now_ms); + char runtime_event[24] = {0}; + while (g_ui.consumeRuntimeEvent(runtime_event, sizeof(runtime_event))) { + char event_token[40] = "SERIAL:"; + std::strncat(event_token, runtime_event, sizeof(event_token) - std::strlen(event_token) - 1U); + bool dispatched = dispatchScenarioEventByName(event_token, now_ms); + if (!dispatched) { + dispatched = dispatchScenarioEventByName(runtime_event, now_ms); + if (dispatched) { + std::strncpy(event_token, runtime_event, sizeof(event_token) - 1U); + event_token[sizeof(event_token) - 1U] = '\0'; + } + } + Serial.printf("[UI_EVENT] event=%s dispatched=%u\n", event_token, dispatched ? 1U : 0U); + if (dispatched) { + refreshSceneIfNeeded(true); + } + runtime_event[0] = '\0'; + } +#if defined(USE_AUDIO) && (USE_AUDIO != 0) + if (g_amp_ready) { + g_amp_player.tick(now_ms); + } +#endif + g_resource_coordinator.update(g_ui.memorySnapshot(), now_ms); + applyMicRuntimePolicy(); + RuntimeMetrics::instance().noteUiFrame(now_ms); + perfMonitor().endSample(PerfSection::kUiTick, ui_started_us); + RuntimeMetrics::instance().logPeriodic(now_ms); + if (g_web_started) { + g_web_server.handleClient(); + if (g_web_disconnect_sta_pending && + static_cast(now_ms - g_web_disconnect_sta_at_ms) >= 0) { + g_web_disconnect_sta_pending = false; + g_network.disconnectSta(); + } + } + yield(); +} + +void loop() { + const uint32_t now_ms = millis(); + pollSerialCommands(now_ms); + g_app_coordinator.tick(now_ms); +} diff --git a/ui_freenove_allinone/src/app/runtime_scene_service.cpp b/ui_freenove_allinone/src/app/runtime_scene_service.cpp new file mode 100644 index 0000000..6a4a9a8 --- /dev/null +++ b/ui_freenove_allinone/src/app/runtime_scene_service.cpp @@ -0,0 +1,20 @@ +#include "app/runtime_scene_service.h" + +void RuntimeSceneService::configure(RefreshSceneFn refresh_scene, StartPendingAudioFn start_pending_audio) { + refresh_scene_ = refresh_scene; + start_pending_audio_ = start_pending_audio; +} + +void RuntimeSceneService::refreshSceneIfNeeded(bool force_render) const { + if (refresh_scene_ == nullptr) { + return; + } + refresh_scene_(force_render); +} + +void RuntimeSceneService::startPendingAudioIfAny() const { + if (start_pending_audio_ == nullptr) { + return; + } + start_pending_audio_(); +} diff --git a/ui_freenove_allinone/src/app/runtime_serial_service.cpp b/ui_freenove_allinone/src/app/runtime_serial_service.cpp new file mode 100644 index 0000000..39570ba --- /dev/null +++ b/ui_freenove_allinone/src/app/runtime_serial_service.cpp @@ -0,0 +1,26 @@ +#include "app/runtime_serial_service.h" + +void RuntimeSerialService::configure(HandleSerialCommandFn handle_serial_command, + DispatchControlActionFn dispatch_control_action) { + handle_serial_command_ = handle_serial_command; + dispatch_control_action_ = dispatch_control_action; +} + +void RuntimeSerialService::handleSerialCommand(const char* command_line, uint32_t now_ms) const { + if (handle_serial_command_ == nullptr) { + return; + } + handle_serial_command_(command_line, now_ms); +} + +bool RuntimeSerialService::dispatchControlAction(const String& action_raw, + uint32_t now_ms, + String* out_error) const { + if (dispatch_control_action_ == nullptr) { + if (out_error != nullptr) { + *out_error = "serial_service_unconfigured"; + } + return false; + } + return dispatch_control_action_(action_raw, now_ms, out_error); +} diff --git a/ui_freenove_allinone/src/app/runtime_web_service 2.cpp b/ui_freenove_allinone/src/app/runtime_web_service 2.cpp new file mode 100644 index 0000000..87dcb13 --- /dev/null +++ b/ui_freenove_allinone/src/app/runtime_web_service 2.cpp @@ -0,0 +1,12 @@ +#include "app/runtime_web_service.h" + +void RuntimeWebService::configure(SetupWebUiFn setup_web_ui) { + setup_web_ui_ = setup_web_ui; +} + +void RuntimeWebService::setupWebUi() const { + if (setup_web_ui_ == nullptr) { + return; + } + setup_web_ui_(); +} diff --git a/ui_freenove_allinone/src/app/runtime_web_service.cpp b/ui_freenove_allinone/src/app/runtime_web_service.cpp new file mode 100644 index 0000000..87dcb13 --- /dev/null +++ b/ui_freenove_allinone/src/app/runtime_web_service.cpp @@ -0,0 +1,12 @@ +#include "app/runtime_web_service.h" + +void RuntimeWebService::configure(SetupWebUiFn setup_web_ui) { + setup_web_ui_ = setup_web_ui; +} + +void RuntimeWebService::setupWebUi() const { + if (setup_web_ui_ == nullptr) { + return; + } + setup_web_ui_(); +} diff --git a/ui_freenove_allinone/src/app/scenario_manager.cpp b/ui_freenove_allinone/src/app/scenario_manager.cpp new file mode 100644 index 0000000..5da70bc --- /dev/null +++ b/ui_freenove_allinone/src/app/scenario_manager.cpp @@ -0,0 +1,836 @@ +// scenario_manager.cpp - Story transitions + timing hooks. +#include "scenario_manager.h" + +#include +#include +#include +#include + +#include "resources/screen_scene_registry.h" +#include "scenarios/default_scenario_v2.h" + +namespace { + +constexpr uint32_t kEtape2DelayMs = 15UL * 60UL * 1000UL; +constexpr uint32_t kEtape2TestDelayMs = 5000U; +constexpr uint32_t kWinDueDelayMs = 10UL * 60UL * 1000UL; + +bool eventNameMatches(const char* expected, const char* actual, StoryEventType type) { + if (expected == nullptr || expected[0] == '\0') { + return true; + } + if (actual == nullptr) { + return false; + } + if (type == StoryEventType::kButton && std::strcmp(expected, "ANY") == 0) { + return actual[0] != '\0'; + } + return std::strcmp(expected, actual) == 0; +} + +const char* stringOrNull(JsonVariantConst value) { + if (!value.is()) { + return nullptr; + } + const char* text = value.as(); + if (text == nullptr || text[0] == '\0') { + return nullptr; + } + return text; +} + +bool loadScenarioIdFromFile(const char* scenario_file_path, String* out_scenario_id) { + if (scenario_file_path == nullptr || scenario_file_path[0] == '\0' || out_scenario_id == nullptr) { + return false; + } + if (!LittleFS.exists(scenario_file_path)) { + return false; + } + + File file = LittleFS.open(scenario_file_path, "r"); + if (!file) { + Serial.printf("[SCENARIO] failed to open scenario config: %s\n", scenario_file_path); + return false; + } + const size_t file_size = static_cast(file.size()); + if (file_size == 0U || file_size > 32768U) { + file.close(); + Serial.printf("[SCENARIO] unexpected scenario config size: %s (%u bytes)\n", + scenario_file_path, + static_cast(file_size)); + return false; + } + + StaticJsonDocument<64> filter; + filter["scenario"] = true; + filter["scenario_id"] = true; + filter["id"] = true; + + StaticJsonDocument<384> document; + const DeserializationError error = + deserializeJson(document, file, DeserializationOption::Filter(filter)); + file.close(); + if (error) { + Serial.printf("[SCENARIO] invalid scenario config json (%s): %s\n", + scenario_file_path, + error.c_str()); + return false; + } + + const char* const id_candidates[] = {"scenario", "scenario_id", "id"}; + const char* scenario_id = ScenarioManager::readScenarioField( + document.as(), id_candidates, sizeof(id_candidates) / sizeof(id_candidates[0])); + if (scenario_id == nullptr || scenario_id[0] == '\0') { + Serial.printf("[SCENARIO] missing scenario id in config: %s\n", scenario_file_path); + return false; + } + + *out_scenario_id = scenario_id; + return true; +} + +} // namespace + +const char* ScenarioManager::readScenarioField(JsonVariantConst root, + const char* const* candidates, + size_t candidate_count) { + if (candidates == nullptr || candidate_count == 0U || root.isNull()) { + return nullptr; + } + JsonObjectConst object = root.as(); + if (object.isNull()) { + return nullptr; + } + for (size_t index = 0U; index < candidate_count; ++index) { + const char* key = candidates[index]; + if (key == nullptr || key[0] == '\0') { + continue; + } + JsonVariantConst candidate = object[key]; + if (!candidate.is()) { + continue; + } + const char* text = candidate.as(); + if (text != nullptr && text[0] != '\0') { + return text; + } + } + return nullptr; +} + +bool ScenarioManager::begin(const char* scenario_file_path) { + scenario_ = nullptr; + debug_transition_bypass_enabled_ = false; + initial_step_override_.remove(0); + clearStepResourceOverrides(); + String selected_scenario_id; + if (loadScenarioIdFromFile(scenario_file_path, &selected_scenario_id)) { + scenario_ = storyScenarioV2ById(selected_scenario_id.c_str()); + if (scenario_ != nullptr) { + Serial.printf("[SCENARIO] selected id from %s: %s\n", + scenario_file_path, + selected_scenario_id.c_str()); + } else { + Serial.printf("[SCENARIO] unknown id in %s: %s (fallback default)\n", + scenario_file_path, + selected_scenario_id.c_str()); + } + } else if (scenario_file_path != nullptr && scenario_file_path[0] != '\0') { + Serial.printf("[SCENARIO] no valid scenario config at %s (fallback default)\n", scenario_file_path); + } + + if (scenario_ == nullptr) { + scenario_ = storyScenarioV2Default(); + } + if (scenario_ == nullptr) { + Serial.println("[SCENARIO] default scenario unavailable"); + return false; + } + + if (storyValidateScenarioDef(*scenario_, nullptr)) { + Serial.printf("[SCENARIO] loaded built-in scenario: %s v%u (%u steps)\n", + scenario_->id, + scenario_->version, + scenario_->stepCount); + } else { + Serial.printf("[SCENARIO] warning: validation failed for %s\n", scenario_->id); + } + + loadStepResourceOverrides(scenario_file_path); + reset(); + return true; +} + +bool ScenarioManager::beginById(const char* scenario_id) { + scenario_ = nullptr; + debug_transition_bypass_enabled_ = false; + initial_step_override_.remove(0); + clearStepResourceOverrides(); + + if (scenario_id != nullptr && scenario_id[0] != '\0') { + scenario_ = storyScenarioV2ById(scenario_id); + } + if (scenario_ == nullptr) { + Serial.printf("[SCENARIO] unknown scenario id: %s\n", (scenario_id != nullptr) ? scenario_id : "null"); + return false; + } + + if (storyValidateScenarioDef(*scenario_, nullptr)) { + Serial.printf("[SCENARIO] loaded built-in scenario by id: %s v%u (%u steps)\n", + scenario_->id, + scenario_->version, + scenario_->stepCount); + } else { + Serial.printf("[SCENARIO] warning: validation failed for %s\n", scenario_->id); + } + reset(); + return true; +} + +void ScenarioManager::reset() { + if (scenario_ == nullptr) { + return; + } + const char* initial_step_id = scenario_->initialStepId; + if (!initial_step_override_.isEmpty()) { + initial_step_id = initial_step_override_.c_str(); + } + current_step_index_ = storyFindStepIndex(*scenario_, initial_step_id); + if (current_step_index_ < 0 && scenario_->stepCount > 0U) { + current_step_index_ = 0; + } + step_entered_at_ms_ = millis(); + pending_audio_pack_.remove(0); + forced_screen_scene_id_.remove(0); + scene_changed_ = true; + timer_armed_ = false; + timer_fired_ = false; + etape2_due_at_ms_ = 0U; + win_due_armed_ = false; + win_due_fired_ = false; + win_due_at_ms_ = 0U; + + const ScenarioSnapshot state = snapshot(); + if (state.audio_pack_id != nullptr && state.audio_pack_id[0] != '\0') { + pending_audio_pack_ = state.audio_pack_id; + } +} + +void ScenarioManager::tick(uint32_t now_ms) { + if (scenario_ == nullptr || current_step_index_ < 0) { + return; + } + evaluateAfterMsTransitions(now_ms); + if (timer_armed_ && !timer_fired_ && etape2_due_at_ms_ > 0U && now_ms >= etape2_due_at_ms_) { + timer_fired_ = true; + dispatchEvent(StoryEventType::kTimer, "ETAPE2_DUE", now_ms, "timer_due"); + } + if (win_due_armed_ && !win_due_fired_ && win_due_at_ms_ > 0U && now_ms >= win_due_at_ms_) { + win_due_fired_ = true; + dispatchEvent(StoryEventType::kTimer, "WIN_DUE", now_ms, "timer_win_due"); + } +} + +void ScenarioManager::notifyUnlock(uint32_t now_ms) { + (void)notifyUnlockEvent("UNLOCK", now_ms); +} + +bool ScenarioManager::notifyUnlockEvent(const char* event_name, uint32_t now_ms) { + timer_armed_ = true; + timer_fired_ = false; + etape2_due_at_ms_ = now_ms + (test_mode_ ? kEtape2TestDelayMs : kEtape2DelayMs); + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "UNLOCK"; + return dispatchEvent(StoryEventType::kUnlock, name, now_ms, "unlock_event"); +} + +void ScenarioManager::notifyButton(uint8_t key, bool long_press, uint32_t now_ms) { + const StepDef* step = currentStep(); + + if (dispatchEvent(StoryEventType::kButton, "ANY", now_ms, long_press ? "btn_any_long" : "btn_any_short")) { + return; + } + char button_event[24] = {0}; + std::snprintf(button_event, + sizeof(button_event), + "BTN%u_%s", + static_cast(key), + long_press ? "LONG" : "SHORT"); + if (dispatchEvent(StoryEventType::kButton, button_event, now_ms, "btn_specific")) { + return; + } + + if (step != nullptr && key >= 1U && key <= 5U && step->id != nullptr) { + const char* screen_scene_id = step->resources.screenSceneId; + if (std::strcmp(step->id, "STEP_WAIT_ETAPE2") == 0) { + timer_armed_ = true; + timer_fired_ = false; + etape2_due_at_ms_ = now_ms + (test_mode_ ? kEtape2TestDelayMs : kEtape2DelayMs); + return; + } + if (screen_scene_id != nullptr && + (std::strcmp(screen_scene_id, "SCENE_LA_DETECTOR") == 0 || + std::strcmp(screen_scene_id, "SCENE_LA_DETECT") == 0)) { + timer_armed_ = true; + timer_fired_ = false; + etape2_due_at_ms_ = now_ms + (test_mode_ ? kEtape2TestDelayMs : kEtape2DelayMs); + return; + } + if (std::strcmp(step->id, "STEP_WAIT_UNLOCK") == 0) { + // Contract: any short or long press from lock screen jumps to LA detector. + if (dispatchEvent(StoryEventType::kSerial, "BTN_NEXT", now_ms, "btn_any_short")) { + return; + } + dispatchEvent(StoryEventType::kSerial, "NEXT", now_ms, "btn_any_short_legacy"); + return; + } + } +} + +void ScenarioManager::notifyAudioDone(uint32_t now_ms) { + dispatchEvent(StoryEventType::kAudioDone, "AUDIO_DONE", now_ms, "audio_done"); +} + +bool ScenarioManager::notifyButtonEvent(const char* event_name, uint32_t now_ms) { + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "ANY"; + return dispatchEvent(StoryEventType::kButton, name, now_ms, "button_event"); +} + +bool ScenarioManager::notifyEspNowEvent(const char* event_name, uint32_t now_ms) { + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "EVENT"; + return dispatchEvent(StoryEventType::kEspNow, name, now_ms, "espnow_event"); +} + +bool ScenarioManager::notifySerialEvent(const char* event_name, uint32_t now_ms) { + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "SERIAL_EVENT"; + return dispatchEvent(StoryEventType::kSerial, name, now_ms, "serial_event"); +} + +bool ScenarioManager::notifyTimerEvent(const char* event_name, uint32_t now_ms) { + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "TIMER_EVENT"; + return dispatchEvent(StoryEventType::kTimer, name, now_ms, "timer_event"); +} + +bool ScenarioManager::notifyActionEvent(const char* event_name, uint32_t now_ms) { + const char* name = (event_name != nullptr && event_name[0] != '\0') ? event_name : "ACTION_EVENT"; + return dispatchEvent(StoryEventType::kAction, name, now_ms, "action_event"); +} + +bool ScenarioManager::gotoScene(const char* scene_id, uint32_t now_ms, const char* source) { + if (scenario_ == nullptr || scene_id == nullptr || scene_id[0] == '\0') { + return false; + } + const char* normalized_scene = storyNormalizeScreenSceneId(scene_id); + for (uint8_t index = 0U; index < scenario_->stepCount; ++index) { + const StepDef& step = scenario_->steps[index]; + const char* screen_scene_id = step.resources.screenSceneId; + const char* audio_pack_id = step.resources.audioPackId; + applyStepResourceOverride(&step, &screen_scene_id, &audio_pack_id); + (void)audio_pack_id; + if (screen_scene_id == nullptr) { + continue; + } + const char* normalized_step_scene = storyNormalizeScreenSceneId(screen_scene_id); + const bool direct_match = (std::strcmp(screen_scene_id, scene_id) == 0); + const bool normalized_match = (normalized_scene != nullptr && normalized_step_scene != nullptr && + std::strcmp(normalized_step_scene, normalized_scene) == 0); + if (!direct_match && !normalized_match) { + continue; + } + const char* enter_source = + (source != nullptr && source[0] != '\0') ? source : "scene_goto"; + enterStep(static_cast(index), now_ms, enter_source, "scene_goto"); + runImmediateTransitions(now_ms, enter_source, "scene_goto"); + return true; + } + if (normalized_scene == nullptr) { + return false; + } + if (currentStep() == nullptr) { + return false; + } + forced_screen_scene_id_ = normalized_scene; + scene_changed_ = true; + Serial.printf("[SCENARIO] scene override via=%s id=%s\n", + (source != nullptr && source[0] != '\0') ? source : "scene_goto", + normalized_scene); + return true; +} + +ScenarioSnapshot ScenarioManager::snapshot() const { + ScenarioSnapshot out; + out.scenario = scenario_; + out.step = currentStep(); + if (out.step != nullptr) { + const char* screen_scene_id = out.step->resources.screenSceneId; + const char* audio_pack_id = out.step->resources.audioPackId; + const char* const* action_ids = out.step->resources.actionIds; + uint8_t action_count = out.step->resources.actionCount; + applyStepResourceOverride(out.step, &screen_scene_id, &audio_pack_id, &action_ids, &action_count); + out.screen_scene_id = screen_scene_id; + if (!forced_screen_scene_id_.isEmpty()) { + out.screen_scene_id = forced_screen_scene_id_.c_str(); + } + out.audio_pack_id = audio_pack_id; + out.action_ids = action_ids; + out.action_count = action_count; + out.mp3_gate_open = out.step->mp3GateOpen; + } + return out; +} + +bool ScenarioManager::consumeSceneChanged() { + const bool changed = scene_changed_; + scene_changed_ = false; + return changed; +} + +bool ScenarioManager::consumeAudioRequest(String* out_audio_pack_id) { + if (pending_audio_pack_.isEmpty()) { + return false; + } + if (out_audio_pack_id != nullptr) { + *out_audio_pack_id = pending_audio_pack_; + } + pending_audio_pack_.remove(0); + return true; +} + +void ScenarioManager::setDebugTransitionBypassEnabled(bool enabled, const char* source) { + debug_transition_bypass_enabled_ = enabled; + Serial.printf("[SCENARIO] debug bypass %s source=%s\n", + debug_transition_bypass_enabled_ ? "ON" : "OFF", + (source != nullptr && source[0] != '\0') ? source : "-"); +} + +bool ScenarioManager::debugTransitionBypassEnabled() const { + return debug_transition_bypass_enabled_; +} + +uint32_t ScenarioManager::transitionEventMask() const { + if (scenario_ == nullptr || scenario_->steps == nullptr) { + return 0U; + } + uint32_t mask = 0U; + for (uint8_t step_index = 0; step_index < scenario_->stepCount; ++step_index) { + const StepDef& step = scenario_->steps[step_index]; + if (step.transitions == nullptr || step.transitionCount == 0U) { + continue; + } + for (uint8_t transition_index = 0; transition_index < step.transitionCount; ++transition_index) { + const TransitionDef& transition = step.transitions[transition_index]; + if (transition.debugOnly && !debug_transition_bypass_enabled_) { + continue; + } + if (transition.trigger != StoryTransitionTrigger::kOnEvent && + transition.trigger != StoryTransitionTrigger::kAfterMs) { + continue; + } + const uint8_t event_index = static_cast(transition.eventType); + if (event_index >= 31U) { + continue; + } + mask |= (1UL << event_index); + } + } + return mask; +} + +bool ScenarioManager::dispatchEvent(StoryEventType type, + const char* event_name, + uint32_t now_ms, + const char* source) { + const StepDef* step = currentStep(); + if (step == nullptr || step->transitionCount == 0U) { + return false; + } + + const TransitionDef* selected = nullptr; + for (uint8_t i = 0; i < step->transitionCount; ++i) { + const TransitionDef& transition = step->transitions[i]; + if (!transitionMatches(transition, type, event_name)) { + continue; + } + if (!isTransitionAllowed(transition, "dispatch", event_name)) { + continue; + } + if (selected == nullptr || transition.priority > selected->priority) { + selected = &transition; + } + } + if (selected == nullptr) { + return false; + } + if (!applyTransition(*selected, now_ms, source, event_name)) { + return false; + } + runImmediateTransitions(now_ms, source, event_name); + return true; +} + +bool ScenarioManager::applyTransition(const TransitionDef& transition, + uint32_t now_ms, + const char* source, + const char* event_name) { + if (scenario_ == nullptr || transition.targetStepId == nullptr) { + return false; + } + if (!isTransitionAllowed(transition, source, event_name)) { + return false; + } + if (transition.debugOnly) { + Serial.printf("[SCENARIO] apply debug transition id=%s step=%s event=%s context=%s (bypass enabled)\n", + transition.id != nullptr ? transition.id : "n/a", + currentStep() != nullptr && currentStep()->id != nullptr ? currentStep()->id : "n/a", + (event_name != nullptr && event_name[0] != '\0') ? event_name : "-", + (source != nullptr && source[0] != '\0') ? source : "-"); + } + const int8_t target = storyFindStepIndex(*scenario_, transition.targetStepId); + if (target < 0) { + Serial.printf("[SCENARIO] invalid transition target: %s\n", transition.targetStepId); + return false; + } + enterStep(target, now_ms, source, event_name); + return true; +} + +bool ScenarioManager::runImmediateTransitions(uint32_t now_ms, const char* source, const char* parent_event_name) { + bool moved = false; + uint8_t hop_count = 0U; + for (uint8_t guard = 0; guard < 8U; ++guard) { + const StepDef* step = currentStep(); + if (step == nullptr || step->transitionCount == 0U) { + break; + } + const TransitionDef* selected = nullptr; + for (uint8_t i = 0; i < step->transitionCount; ++i) { + const TransitionDef& transition = step->transitions[i]; + if (transition.trigger != StoryTransitionTrigger::kImmediate) { + continue; + } + if (!isTransitionAllowed(transition, "immediate", parent_event_name)) { + continue; + } + if (selected == nullptr || transition.priority > selected->priority) { + selected = &transition; + } + } + if (selected == nullptr) { + break; + } + ++hop_count; + if (!applyTransition(*selected, now_ms, source, parent_event_name != nullptr ? parent_event_name : "immediate")) { + break; + } + moved = true; + } + if (hop_count > 1U) { + Serial.printf("[SCENARIO] immediate_chain hops=%u source=%s event=%s\n", + static_cast(hop_count), + (source != nullptr && source[0] != '\0') ? source : "-", + (parent_event_name != nullptr && parent_event_name[0] != '\0') ? parent_event_name : "-"); + } + return moved; +} + +void ScenarioManager::evaluateAfterMsTransitions(uint32_t now_ms) { + const StepDef* step = currentStep(); + if (step == nullptr || step->transitionCount == 0U) { + return; + } + + const TransitionDef* selected = nullptr; + for (uint8_t i = 0; i < step->transitionCount; ++i) { + const TransitionDef& transition = step->transitions[i]; + if (transition.trigger != StoryTransitionTrigger::kAfterMs) { + continue; + } + if (!isTransitionAllowed(transition, "after_ms", "after_ms")) { + continue; + } + if (now_ms - step_entered_at_ms_ < transition.afterMs) { + continue; + } + if (selected == nullptr || transition.priority > selected->priority) { + selected = &transition; + } + } + if (selected != nullptr) { + if (applyTransition(*selected, now_ms, "after_ms", "after_ms")) { + runImmediateTransitions(now_ms, "after_ms", "after_ms"); + } + } +} + +void ScenarioManager::enterStep(int8_t step_index, uint32_t now_ms, const char* source, const char* event_name) { + if (scenario_ == nullptr || step_index < 0 || step_index >= static_cast(scenario_->stepCount)) { + return; + } + + const StepDef* previous_step = currentStep(); + const char* from_step = (previous_step != nullptr && previous_step->id != nullptr) ? previous_step->id : "n/a"; + const char* from_scene = (previous_step != nullptr) ? previous_step->resources.screenSceneId : nullptr; + const char* from_pack = (previous_step != nullptr) ? previous_step->resources.audioPackId : nullptr; + if (previous_step != nullptr) { + applyStepResourceOverride(previous_step, &from_scene, &from_pack); + } + if (!forced_screen_scene_id_.isEmpty()) { + from_scene = forced_screen_scene_id_.c_str(); + } + + current_step_index_ = step_index; + step_entered_at_ms_ = now_ms; + scene_changed_ = true; + + const StepDef* step = currentStep(); + if (step == nullptr) { + return; + } + + pending_audio_pack_.remove(0); + forced_screen_scene_id_.remove(0); + const char* screen_scene_id = step->resources.screenSceneId; + const char* audio_pack_id = step->resources.audioPackId; + applyStepResourceOverride(step, &screen_scene_id, &audio_pack_id); + if (audio_pack_id != nullptr && audio_pack_id[0] != '\0') { + pending_audio_pack_ = audio_pack_id; + } + win_due_armed_ = false; + win_due_fired_ = false; + win_due_at_ms_ = 0U; + if (screen_scene_id != nullptr && std::strcmp(screen_scene_id, "SCENE_FINAL_WIN") == 0) { + win_due_armed_ = true; + win_due_fired_ = false; + win_due_at_ms_ = now_ms + kWinDueDelayMs; + } + Serial.printf("[SCENARIO] transition from_step=%s to_step=%s from_scene=%s to_scene=%s event=%s source=%s audio_pack=%s\n", + from_step, + step->id != nullptr ? step->id : "n/a", + (from_scene != nullptr && from_scene[0] != '\0') ? from_scene : "n/a", + (screen_scene_id != nullptr && screen_scene_id[0] != '\0') ? screen_scene_id : "n/a", + (event_name != nullptr && event_name[0] != '\0') ? event_name : "-", + (source != nullptr && source[0] != '\0') ? source : "-", + (audio_pack_id != nullptr && audio_pack_id[0] != '\0') ? audio_pack_id : "n/a"); +} + +const StepDef* ScenarioManager::currentStep() const { + if (scenario_ == nullptr || current_step_index_ < 0 || current_step_index_ >= static_cast(scenario_->stepCount)) { + return nullptr; + } + return &scenario_->steps[current_step_index_]; +} + +bool ScenarioManager::transitionMatches(const TransitionDef& transition, + StoryEventType type, + const char* event_name) const { + if (transition.trigger != StoryTransitionTrigger::kOnEvent) { + return false; + } + if (transition.eventType != type) { + return false; + } + return eventNameMatches(transition.eventName, event_name, type); +} + +bool ScenarioManager::isTransitionAllowed(const TransitionDef& transition, + const char* context, + const char* event_name) const { + if (!transition.debugOnly) { + return true; + } + if (!debug_transition_bypass_enabled_) { + Serial.printf("[SCENARIO] skip debug transition id=%s step=%s event=%s context=%s (bypass disabled)\n", + transition.id != nullptr ? transition.id : "n/a", + currentStep() != nullptr && currentStep()->id != nullptr ? currentStep()->id : "n/a", + (event_name != nullptr && event_name[0] != '\0') ? event_name : "-", + (context != nullptr && context[0] != '\0') ? context : "-"); + return false; + } + return true; +} + +void ScenarioManager::clearStepResourceOverrides() { + for (uint8_t index = 0; index < step_resource_override_count_; ++index) { + step_resource_overrides_[index].step_id.remove(0); + step_resource_overrides_[index].screen_scene_id.remove(0); + step_resource_overrides_[index].audio_pack_id.remove(0); + step_resource_overrides_[index].action_count = 0U; + for (uint8_t action_index = 0; action_index < StepResourceOverride::kMaxActionOverrides; ++action_index) { + step_resource_overrides_[index].action_ids[action_index].remove(0); + step_resource_overrides_[index].action_ptrs[action_index] = nullptr; + } + } + step_resource_override_count_ = 0U; +} + +void ScenarioManager::loadStepResourceOverrides(const char* scenario_file_path) { + clearStepResourceOverrides(); + if (scenario_file_path == nullptr || scenario_file_path[0] == '\0') { + return; + } + if (!LittleFS.exists(scenario_file_path)) { + return; + } + + File file = LittleFS.open(scenario_file_path, "r"); + if (!file) { + return; + } + const size_t file_size = static_cast(file.size()); + if (file_size == 0U || file_size > 12288U) { + file.close(); + return; + } + + DynamicJsonDocument document(file_size + 1024U); + const DeserializationError error = deserializeJson(document, file); + file.close(); + if (error) { + Serial.printf("[SCENARIO] override parse failed (%s): %s\n", scenario_file_path, error.c_str()); + return; + } + + if (document["debug_transition_bypass_enabled"].is()) { + debug_transition_bypass_enabled_ = document["debug_transition_bypass_enabled"].as(); + } else if (document["story"]["debug_transition_bypass_enabled"].is()) { + debug_transition_bypass_enabled_ = document["story"]["debug_transition_bypass_enabled"].as(); + } + Serial.printf("[SCENARIO] debug bypass from scenario config=%u\n", debug_transition_bypass_enabled_ ? 1U : 0U); + + const char* const initial_step_keys[] = {"initial_step", "initialStepId"}; + const char* initial_step = + readScenarioField(document.as(), initial_step_keys, sizeof(initial_step_keys) / sizeof(initial_step_keys[0])); + if (initial_step != nullptr) { + initial_step_override_ = initial_step; + Serial.printf("[SCENARIO] override initial_step=%s\n", initial_step_override_.c_str()); + } + + JsonArrayConst steps = document["steps"].as(); + if (steps.isNull()) { + return; + } + + for (JsonVariantConst variant : steps) { + if (!variant.is()) { + continue; + } + JsonObjectConst step_obj = variant.as(); + const char* step_id = stringOrNull(step_obj["id"]); + if (step_id == nullptr) { + step_id = stringOrNull(step_obj["step_id"]); + } + if (step_id == nullptr) { + step_id = stringOrNull(step_obj["stepId"]); + } + if (step_id == nullptr) { + continue; + } + + const char* const screen_keys[] = {"screen_scene_id", "screenSceneId"}; + const char* screen_scene_id = + readScenarioField(variant, screen_keys, sizeof(screen_keys) / sizeof(screen_keys[0])); + if (screen_scene_id == nullptr) { + screen_scene_id = readScenarioField( + step_obj["resources"], screen_keys, sizeof(screen_keys) / sizeof(screen_keys[0])); + } + + const char* const audio_keys[] = {"audio_pack_id", "audioPackId"}; + const char* audio_pack_id = + readScenarioField(variant, audio_keys, sizeof(audio_keys) / sizeof(audio_keys[0])); + if (audio_pack_id == nullptr) { + audio_pack_id = readScenarioField(step_obj["resources"], + audio_keys, + sizeof(audio_keys) / sizeof(audio_keys[0])); + } + + JsonArrayConst action_ids = step_obj["action_ids"].as(); + if (action_ids.isNull()) { + action_ids = step_obj["actionIds"].as(); + } + if (action_ids.isNull()) { + action_ids = step_obj["actions"].as(); + } + if (action_ids.isNull()) { + action_ids = step_obj["resources"]["action_ids"].as(); + } + if (action_ids.isNull()) { + action_ids = step_obj["resources"]["actionIds"].as(); + } + const bool has_action_override = !action_ids.isNull() && action_ids.size() > 0U; + + if (screen_scene_id == nullptr && audio_pack_id == nullptr && !has_action_override) { + continue; + } + if (step_resource_override_count_ >= kMaxStepResourceOverrides) { + Serial.printf("[SCENARIO] step overrides truncated at %u entries\n", kMaxStepResourceOverrides); + break; + } + + StepResourceOverride& entry = step_resource_overrides_[step_resource_override_count_++]; + entry.step_id = step_id; + entry.screen_scene_id = (screen_scene_id != nullptr) ? screen_scene_id : ""; + entry.audio_pack_id = (audio_pack_id != nullptr) ? audio_pack_id : ""; + entry.action_count = 0U; + for (uint8_t action_index = 0; action_index < StepResourceOverride::kMaxActionOverrides; ++action_index) { + entry.action_ids[action_index].remove(0); + entry.action_ptrs[action_index] = nullptr; + } + if (has_action_override) { + for (JsonVariantConst action_id_variant : action_ids) { + if (entry.action_count >= StepResourceOverride::kMaxActionOverrides) { + break; + } + if (!action_id_variant.is()) { + continue; + } + const char* action_id = action_id_variant.as(); + if (action_id == nullptr || action_id[0] == '\0') { + continue; + } + entry.action_ids[entry.action_count] = action_id; + entry.action_ptrs[entry.action_count] = entry.action_ids[entry.action_count].c_str(); + ++entry.action_count; + } + } + } + + if (step_resource_override_count_ > 0U) { + Serial.printf("[SCENARIO] loaded %u step resource overrides\n", step_resource_override_count_); + } +} + +const ScenarioManager::StepResourceOverride* ScenarioManager::findStepResourceOverride(const char* step_id) const { + if (step_id == nullptr || step_id[0] == '\0') { + return nullptr; + } + for (uint8_t index = 0; index < step_resource_override_count_; ++index) { + const StepResourceOverride& candidate = step_resource_overrides_[index]; + if (candidate.step_id == step_id) { + return &candidate; + } + } + return nullptr; +} + +void ScenarioManager::applyStepResourceOverride(const StepDef* step, + const char** out_screen_scene_id, + const char** out_audio_pack_id, + const char* const** out_action_ids, + uint8_t* out_action_count) const { + if (step == nullptr) { + return; + } + const StepResourceOverride* entry = findStepResourceOverride(step->id); + if (entry == nullptr) { + return; + } + if (out_screen_scene_id != nullptr && !entry->screen_scene_id.isEmpty()) { + *out_screen_scene_id = entry->screen_scene_id.c_str(); + } + if (out_audio_pack_id != nullptr && !entry->audio_pack_id.isEmpty()) { + *out_audio_pack_id = entry->audio_pack_id.c_str(); + } + if (out_action_ids != nullptr && out_action_count != nullptr && entry->action_count > 0U) { + *out_action_ids = entry->action_ptrs; + *out_action_count = entry->action_count; + } +} diff --git a/ui_freenove_allinone/src/app/scene_fx_orchestrator.cpp b/ui_freenove_allinone/src/app/scene_fx_orchestrator.cpp new file mode 100644 index 0000000..f2bfc5d --- /dev/null +++ b/ui_freenove_allinone/src/app/scene_fx_orchestrator.cpp @@ -0,0 +1,93 @@ +#include "app/scene_fx_orchestrator.h" + +#include + +namespace { + +bool isAmpSceneId(const char* scene_id) { + if (scene_id == nullptr || scene_id[0] == '\0') { + return false; + } + return std::strcmp(scene_id, "SCENE_MP3_PLAYER") == 0 || + std::strcmp(scene_id, "SCENE_AUDIO_PLAYER") == 0 || + std::strcmp(scene_id, "SCENE_MP3") == 0; +} + +bool isCameraSceneId(const char* scene_id) { + return (scene_id != nullptr && std::strcmp(scene_id, "SCENE_PHOTO_MANAGER") == 0); +} + +bool isIntroSceneId(const char* scene_id) { + (void)scene_id; + return false; +} + +bool isDirectFxSceneId(const char* scene_id) { + if (scene_id == nullptr || scene_id[0] == '\0') { + return false; + } + return std::strcmp(scene_id, "SCENE_WINNER") == 0 || + std::strcmp(scene_id, "SCENE_FIREWORKS") == 0 || + std::strcmp(scene_id, "SCENE_U_SON_PROTO") == 0 || + std::strcmp(scene_id, "SCENE_LA_DETECTOR") == 0 || + std::strcmp(scene_id, "SCENE_WIN_ETAPE1") == 0; +} + +} // namespace + +SceneTransitionPlan SceneFxOrchestrator::planTransition(const char* scene_id, + bool scene_changed, + bool force_refresh) { + const char* target_scene = (scene_id != nullptr && scene_id[0] != '\0') ? scene_id : "SCENE_READY"; + const SceneRuntimeOwner target_owner = classifyOwner(target_scene); + + SceneTransitionPlan plan = {}; + plan.should_apply = scene_changed || force_refresh || !sameText(current_scene_id_, target_scene); + plan.owner_changed = (target_owner != current_owner_); + plan.scene_changed = scene_changed || !sameText(current_scene_id_, target_scene); + plan.from_owner = current_owner_; + plan.to_owner = target_owner; + plan.from_scene = current_scene_id_; + plan.to_scene = target_scene; + return plan; +} + +void SceneFxOrchestrator::applyTransition(const SceneTransitionPlan& plan) { + if (!plan.should_apply || plan.to_scene == nullptr) { + return; + } + current_owner_ = plan.to_owner; + std::strncpy(current_scene_id_, plan.to_scene, sizeof(current_scene_id_) - 1U); + current_scene_id_[sizeof(current_scene_id_) - 1U] = '\0'; +} + +SceneRuntimeOwner SceneFxOrchestrator::currentOwner() const { + return current_owner_; +} + +const char* SceneFxOrchestrator::currentSceneId() const { + return current_scene_id_; +} + +SceneRuntimeOwner SceneFxOrchestrator::classifyOwner(const char* scene_id) const { + if (isCameraSceneId(scene_id)) { + return SceneRuntimeOwner::kCamera; + } + if (isAmpSceneId(scene_id)) { + return SceneRuntimeOwner::kAmp; + } + if (isIntroSceneId(scene_id)) { + return SceneRuntimeOwner::kIntroFx; + } + if (isDirectFxSceneId(scene_id)) { + return SceneRuntimeOwner::kDirectFx; + } + return SceneRuntimeOwner::kStory; +} + +bool SceneFxOrchestrator::sameText(const char* lhs, const char* rhs) { + if (lhs == nullptr || rhs == nullptr) { + return false; + } + return std::strcmp(lhs, rhs) == 0; +} diff --git a/ui_freenove_allinone/src/app/serial_command_router.cpp b/ui_freenove_allinone/src/app/serial_command_router.cpp new file mode 100644 index 0000000..3c5de1d --- /dev/null +++ b/ui_freenove_allinone/src/app/serial_command_router.cpp @@ -0,0 +1,14 @@ +#include "app/serial_command_router.h" + +bool SerialCommandRouter::dispatch(const char* command_line, + uint32_t now_ms, + RuntimeServices* services) const { + if (command_line == nullptr || command_line[0] == '\0' || services == nullptr) { + return false; + } + if (services->dispatch_serial == nullptr) { + return false; + } + services->dispatch_serial(command_line, now_ms, services); + return true; +} diff --git a/ui_freenove_allinone/src/audio/audio_manager.cpp b/ui_freenove_allinone/src/audio/audio_manager.cpp new file mode 100644 index 0000000..ccbcc04 --- /dev/null +++ b/ui_freenove_allinone/src/audio/audio_manager.cpp @@ -0,0 +1,978 @@ +// audio_manager.cpp - audio playback over I2S with ESP32-audioI2S backend. +#include "audio_manager.h" + +#include +#include +#include +#include +#include + +#include "system/rate_limited_log.h" +#include "system/runtime_metrics.h" + +#if defined(ARDUINO_ARCH_ESP32) && __has_include() +#include +#define ZACUS_HAS_SD_AUDIO 1 +#else +#define ZACUS_HAS_SD_AUDIO 0 +#endif + +#if defined(ARDUINO_ARCH_ESP32) +#include +#include +#include +#include +#endif + +namespace { + +constexpr char kDiagnosticTrackPath[] = "/music/boot_radio.mp3"; +constexpr uint8_t kMaxTrackPathLen = 120U; +constexpr uint16_t kBitrateScanBytes = 4096U; +constexpr uint8_t kAudioDoneQueueDepth = 6U; +constexpr uint16_t kAudioDoneTrackLen = 96U; +constexpr uint16_t kAudioPumpTaskStackWords = 4096U; +constexpr uint8_t kAudioPumpTaskPriority = 3U; +constexpr uint8_t kAudioPumpTaskCore = 1U; +constexpr uint16_t kAudioPumpActiveDelayMs = 1U; +constexpr uint16_t kAudioPumpIdleDelayMs = 4U; +constexpr uint16_t kAudioStateLockTimeoutMs = 20U; +constexpr uint32_t kAudioUnderrunThresholdBytes = 768U; +constexpr uint32_t kAudioUnderrunCooldownMs = 250U; + +struct AudioPinProfile { + int bck; + int ws; + int dout; + const char* label; +}; + +constexpr AudioPinProfile kAudioPinProfiles[] = { + {FREENOVE_I2S_BCK, FREENOVE_I2S_WS, FREENOVE_I2S_DOUT, "sketch19"}, + {FREENOVE_I2S_WS, FREENOVE_I2S_BCK, FREENOVE_I2S_DOUT, "swap_bck_ws"}, + {FREENOVE_I2S_BCK, FREENOVE_I2S_WS, 2, "dout2_alt"}, +}; + +constexpr uint8_t kAudioPinProfileCount = + static_cast(sizeof(kAudioPinProfiles) / sizeof(kAudioPinProfiles[0])); + +struct AudioFxProfile { + const char* label; + int8_t low; + int8_t mid; + int8_t high; +}; + +constexpr AudioFxProfile kAudioFxProfiles[] = { + {"flat", 0, 0, 0}, + {"soft", -4, 1, -2}, + {"warm", 3, 0, -2}, + {"bright", -2, 1, 4}, +}; + +constexpr uint8_t kAudioFxProfileCount = + static_cast(sizeof(kAudioFxProfiles) / sizeof(kAudioFxProfiles[0])); + +constexpr uint16_t kAudioMp3Mpeg1LayerIII[16] = {0U, 32U, 40U, 48U, 56U, 64U, 80U, 96U, 112U, 128U, 160U, 192U, 224U, 256U, 320U, 0U}; +constexpr uint16_t kAudioMp3Mpeg2LayerIII[16] = {0U, 8U, 16U, 24U, 32U, 40U, 48U, 56U, 64U, 80U, 96U, 112U, 128U, 160U, 192U, 0U}; + +char toLowerAscii(char value) { + return static_cast(std::tolower(static_cast(value))); +} + +bool endsWithIgnoreCase(const String& value, const char* suffix) { + if (suffix == nullptr) { + return false; + } + const size_t suffix_len = std::strlen(suffix); + if (suffix_len == 0U || value.length() < suffix_len) { + return false; + } + const size_t offset = value.length() - suffix_len; + for (size_t index = 0U; index < suffix_len; ++index) { + if (toLowerAscii(value.charAt(offset + index)) != toLowerAscii(suffix[index])) { + return false; + } + } + return true; +} + +bool resolveFileSystem(bool use_sd, fs::FS*& out_fs, const char*& out_label) { + out_fs = &LittleFS; + out_label = "littlefs"; + if (!use_sd) { + return true; + } +#if ZACUS_HAS_SD_AUDIO + out_fs = &SD_MMC; + out_label = "sd"; + return true; +#else + return false; +#endif +} + +uint16_t parseMp3BitrateHeader(const uint8_t* header, size_t header_len) { + if (header == nullptr || header_len < 4U) { + return 0U; + } + if (header[0] != 0xFFU || (header[1] & 0xE0U) != 0xE0U) { + return 0U; + } + const uint8_t version = (header[1] >> 3U) & 0x03U; + const uint8_t layer = (header[1] >> 1U) & 0x03U; + const uint8_t bitrate_index = (header[2] >> 4U) & 0x0FU; + if (layer != 0x01U || bitrate_index == 0x00U || bitrate_index == 0x0FU) { + return 0U; + } + if (version == 0x03U) { + return kAudioMp3Mpeg1LayerIII[bitrate_index]; + } + return kAudioMp3Mpeg2LayerIII[bitrate_index]; +} + +void skipId3V2Header(File& file) { + if (!file || file.size() < 10U) { + return; + } + const uint32_t cursor = file.position(); + uint8_t id3[10] = {0}; + if (file.read(id3, sizeof(id3)) != sizeof(id3)) { + file.seek(cursor); + return; + } + if (id3[0] != 'I' || id3[1] != 'D' || id3[2] != '3') { + file.seek(cursor); + return; + } + const uint32_t size = ((static_cast(id3[6] & 0x7FU) << 21U) | + (static_cast(id3[7] & 0x7FU) << 14U) | + (static_cast(id3[8] & 0x7FU) << 7U) | + (static_cast(id3[9] & 0x7FU))); + file.seek(10U + size); +} + +uint16_t detectMp3Bitrate(fs::FS& file_system, const char* path) { + if (path == nullptr || path[0] == '\0') { + return 0U; + } + File file = file_system.open(path, "r"); + if (!file || file.isDirectory()) { + return 0U; + } + skipId3V2Header(file); + + uint8_t window[4] = {0}; + size_t filled = 0U; + uint16_t scanned = 0U; + while (file.available() && scanned < kBitrateScanBytes) { + const int raw = file.read(); + if (raw < 0) { + break; + } + if (filled < 4U) { + window[filled++] = static_cast(raw); + if (filled < 4U) { + continue; + } + } else { + window[0] = window[1]; + window[1] = window[2]; + window[2] = window[3]; + window[3] = static_cast(raw); + } + const uint16_t bitrate = parseMp3BitrateHeader(window, sizeof(window)); + if (bitrate > 0U) { + file.close(); + return bitrate; + } + ++scanned; + } + file.close(); + return 0U; +} + +struct AudioDoneEvent { + char track[kAudioDoneTrackLen]; +}; + +} // namespace + +struct AudioManager::AudioRtosState { +#if defined(ARDUINO_ARCH_ESP32) + TaskHandle_t pump_task = nullptr; + SemaphoreHandle_t state_mutex = nullptr; + QueueHandle_t done_queue = nullptr; +#endif + bool running = false; +}; + +AudioManager::AudioManager() = default; + +AudioManager::~AudioManager() { + stopAudioPump(); + if (takeStateLock(kAudioStateLockTimeoutMs)) { + if (player_) { + player_->stopSong(); + } + clearTrackState(); + releaseStateLock(); + } + player_.reset(); + destroyRtosState(); +} + +void AudioManager::createRtosState() { + if (rtos_state_) { + return; + } + rtos_state_ = std::unique_ptr(new AudioRtosState()); + if (!rtos_state_) { + return; + } +#if defined(ARDUINO_ARCH_ESP32) + rtos_state_->state_mutex = xSemaphoreCreateMutex(); + rtos_state_->done_queue = xQueueCreate(kAudioDoneQueueDepth, sizeof(AudioDoneEvent)); + if (rtos_state_->state_mutex == nullptr || rtos_state_->done_queue == nullptr) { + if (rtos_state_->done_queue != nullptr) { + vQueueDelete(rtos_state_->done_queue); + rtos_state_->done_queue = nullptr; + } + if (rtos_state_->state_mutex != nullptr) { + vSemaphoreDelete(rtos_state_->state_mutex); + rtos_state_->state_mutex = nullptr; + } + rtos_state_.reset(); + Serial.println("[AUDIO] RTOS state alloc failed"); + } +#endif +} + +void AudioManager::destroyRtosState() { + if (!rtos_state_) { + return; + } +#if defined(ARDUINO_ARCH_ESP32) + if (rtos_state_->done_queue != nullptr) { + vQueueDelete(rtos_state_->done_queue); + rtos_state_->done_queue = nullptr; + } + if (rtos_state_->state_mutex != nullptr) { + vSemaphoreDelete(rtos_state_->state_mutex); + rtos_state_->state_mutex = nullptr; + } +#endif + rtos_state_.reset(); +} + +bool AudioManager::takeStateLock(uint32_t timeout_ms) const { +#if defined(ARDUINO_ARCH_ESP32) + if (rtos_state_ == nullptr || rtos_state_->state_mutex == nullptr) { + return true; + } + const TickType_t ticks = (timeout_ms == 0U) ? 0U : pdMS_TO_TICKS(timeout_ms); + return xSemaphoreTake(rtos_state_->state_mutex, ticks) == pdTRUE; +#else + (void)timeout_ms; + return true; +#endif +} + +void AudioManager::releaseStateLock() const { +#if defined(ARDUINO_ARCH_ESP32) + if (rtos_state_ == nullptr || rtos_state_->state_mutex == nullptr) { + return; + } + xSemaphoreGive(rtos_state_->state_mutex); +#endif +} + +bool AudioManager::startAudioPump() { +#if defined(ARDUINO_ARCH_ESP32) + if (rtos_state_ == nullptr || rtos_state_->state_mutex == nullptr || rtos_state_->done_queue == nullptr) { + return false; + } + if (rtos_state_->running && rtos_state_->pump_task != nullptr) { + return true; + } + rtos_state_->running = true; + const BaseType_t created = xTaskCreatePinnedToCore(AudioManager::audioPumpTaskEntry, + "audio_pump", + kAudioPumpTaskStackWords, + this, + kAudioPumpTaskPriority, + &rtos_state_->pump_task, + kAudioPumpTaskCore); + if (created != pdPASS) { + rtos_state_->running = false; + rtos_state_->pump_task = nullptr; + Serial.println("[AUDIO] failed to start pump task"); + return false; + } + return true; +#else + return false; +#endif +} + +void AudioManager::stopAudioPump() { +#if defined(ARDUINO_ARCH_ESP32) + if (rtos_state_ == nullptr || !rtos_state_->running) { + pump_task_enabled_ = false; + return; + } + rtos_state_->running = false; + const uint32_t deadline_ms = millis() + 800U; + while (rtos_state_->pump_task != nullptr && static_cast(deadline_ms - millis()) > 0) { + delay(1); + } + if (rtos_state_->pump_task != nullptr) { + vTaskDelete(rtos_state_->pump_task); + rtos_state_->pump_task = nullptr; + } +#endif + pump_task_enabled_ = false; +} + +void AudioManager::audioPumpTaskEntry(void* arg) { + reinterpret_cast(arg)->audioPumpLoop(); +} + +void AudioManager::audioPumpLoop() { +#if defined(ARDUINO_ARCH_ESP32) + while (rtos_state_ != nullptr && rtos_state_->running) { + bool active = false; + bool finished = false; + char finished_track[kAudioDoneTrackLen] = {0}; + if (takeStateLock(0U)) { + if (player_ != nullptr && playing_) { + active = true; + const uint32_t now_ms = millis(); + player_->loop(); + const uint32_t in_buffer_bytes = player_->inBufferFilled(); + if (player_->isRunning() && in_buffer_bytes < kAudioUnderrunThresholdBytes && + (underrun_last_note_ms_ == 0U || (now_ms - underrun_last_note_ms_) >= kAudioUnderrunCooldownMs)) { + ++underrun_count_; + underrun_last_note_ms_ = now_ms; + RuntimeMetrics::instance().noteAudioUnderrun(); + if (underrun_last_log_ms_ == 0U || (now_ms - underrun_last_log_ms_) >= 1000U) { + underrun_last_log_ms_ = now_ms; + ZACUS_RL_LOG_MS(1000U, + "[AUDIO] underrun count=%lu in_buffer=%lu\n", + static_cast(underrun_count_), + static_cast(in_buffer_bytes)); + } + } + if (!player_->isRunning()) { + std::strncpy(finished_track, current_track_.c_str(), sizeof(finished_track) - 1U); + finished_track[sizeof(finished_track) - 1U] = '\0'; + clearTrackState(); + finished = true; + } + } + releaseStateLock(); + } + if (finished) { + enqueuePlaybackDone(finished_track); + } + vTaskDelay(pdMS_TO_TICKS(active ? kAudioPumpActiveDelayMs : kAudioPumpIdleDelayMs)); + } + if (rtos_state_ != nullptr) { + rtos_state_->running = false; + rtos_state_->pump_task = nullptr; + } + vTaskDelete(nullptr); +#endif +} + +bool AudioManager::ensurePlayer() { + if (player_) { + return true; + } + player_ = std::unique_ptr

2gu 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%0AJV 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%0D0LCeW=m5R=$3Ot*f#Ao~dfe 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