Files
le-mystere-professeur-zacus/hardware/firmware/data/story/scenarios/DEFAULT.json
T
Clément SAILLANT cdbbed3fd0 Add QR Unlock App implementation and schema
- Implemented QrUnlockApp class with methods for lifecycle management (begin, start, update, stop, handleEvent) and snapshot retrieval.
- Created header file for QrUnlockApp with necessary method declarations and private members.
- Added Yamale schema for scenario template to define prompt input and optional firmware snapshot.
2026-02-25 17:21:24 +01:00

445 lines
12 KiB
JSON

{
"id": "DEFAULT",
"scenario": "DEFAULT",
"version": 2,
"initial_step": "SCENE_U_SON_PROTO",
"hardware_events": {
"button_short_1": "BTN_NEXT",
"button_short_2": "BTN_NEXT",
"button_short_3": "BTN_NEXT",
"button_short_4": "BTN_NEXT",
"button_short_5": "BTN_NEXT",
"button_long_3": "FORCE_ETAPE2",
"button_long_4": "FORCE_DONE",
"espnow_event": "ESPNOW:<payload>"
},
"app_bindings": [
"APP_AUDIO",
"APP_SCREEN",
"APP_GATE",
"APP_WIFI",
"APP_ESPNOW",
"APP_QR_UNLOCK"
],
"actions_catalog": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT",
"ACTION_QUEUE_SONAR",
"ACTION_ESP_NOW_SEND_ETAPE1",
"ACTION_ESP_NOW_SEND_ETAPE2",
"ACTION_QR_CODE_SCANNER_START",
"ACTION_WINNER",
"ACTION_SET_BOOT_MEDIA_MANAGER"
],
"steps": [
{
"id": "SCENE_U_SON_PROTO",
"screen_scene_id": "SCENE_U_SON_PROTO",
"audio_pack_id": "PACK_BOOT_RADIO",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT"
],
"transitions": [
{
"id": "TR_SCENE_U_SON_PROTO_1",
"trigger": "on_event",
"event_type": "audio_done",
"event_name": "AUDIO_DONE",
"target_step_id": "SCENE_U_SON_PROTO",
"after_ms": 0,
"priority": 80
},
{
"id": "TR_SCENE_U_SON_PROTO_2",
"trigger": "on_event",
"event_type": "button",
"event_name": "ANY",
"target_step_id": "SCENE_LA_DETECTOR",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_SCENE_U_SON_PROTO_3",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_ETAPE2",
"target_step_id": "SCENE_LA_DETECTOR",
"after_ms": 0,
"priority": 140
}
]
},
{
"id": "SCENE_LA_DETECTOR",
"screen_scene_id": "SCENE_LA_DETECTOR",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_QUEUE_SONAR"
],
"transitions": [
{
"id": "TR_SCENE_LA_DETECTOR_1",
"trigger": "on_event",
"event_type": "timer",
"event_name": "ETAPE2_DUE",
"target_step_id": "SCENE_U_SON_PROTO",
"after_ms": 0,
"priority": 100
},
{
"id": "TR_SCENE_LA_DETECTOR_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "BTN_NEXT",
"target_step_id": "RTC_ESP_ETAPE1",
"after_ms": 0,
"priority": 110
},
{
"id": "TR_SCENE_LA_DETECTOR_3",
"trigger": "on_event",
"event_type": "unlock",
"event_name": "UNLOCK",
"target_step_id": "RTC_ESP_ETAPE1",
"after_ms": 0,
"priority": 115
},
{
"id": "TR_SCENE_LA_DETECTOR_4",
"trigger": "on_event",
"event_type": "action",
"event_name": "ACTION_FORCE_ETAPE2",
"target_step_id": "RTC_ESP_ETAPE1",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_SCENE_LA_DETECTOR_5",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_WIN_ETAPE1",
"target_step_id": "RTC_ESP_ETAPE1",
"after_ms": 0,
"priority": 130
}
]
},
{
"id": "RTC_ESP_ETAPE1",
"screen_scene_id": "SCENE_WIN_ETAPE1",
"audio_pack_id": "PACK_CONFIRM_WIN_ETAPE1",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT",
"ACTION_ESP_NOW_SEND_ETAPE1",
"ACTION_QUEUE_SONAR"
],
"transitions": [
{
"id": "TR_RTC_ESP_ETAPE1_1",
"trigger": "on_event",
"event_type": "espnow",
"event_name": "ACK_WIN1",
"target_step_id": "WIN_ETAPE1",
"after_ms": 0,
"priority": 130
},
{
"id": "TR_RTC_ESP_ETAPE1_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_DONE",
"target_step_id": "WIN_ETAPE1",
"after_ms": 0,
"priority": 120
}
]
},
{
"id": "WIN_ETAPE1",
"screen_scene_id": "SCENE_WIN_ETAPE1",
"audio_pack_id": "PACK_WIN",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT"
],
"transitions": [
{
"id": "TR_WIN_ETAPE1_1",
"trigger": "on_event",
"event_type": "serial",
"event_name": "BTN_NEXT",
"target_step_id": "STEP_WARNING",
"after_ms": 0,
"priority": 110
},
{
"id": "TR_WIN_ETAPE1_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_DONE",
"target_step_id": "STEP_WARNING",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_WIN_ETAPE1_3",
"trigger": "on_event",
"event_type": "espnow",
"event_name": "ACK_WARNING",
"target_step_id": "STEP_WARNING",
"after_ms": 0,
"priority": 130
}
]
},
{
"id": "STEP_WARNING",
"screen_scene_id": "SCENE_WARNING",
"audio_pack_id": "PACK_BOOT_RADIO",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT"
],
"transitions": [
{
"id": "TR_STEP_WARNING_1",
"trigger": "on_event",
"event_type": "audio_done",
"event_name": "AUDIO_DONE",
"target_step_id": "STEP_WARNING",
"after_ms": 0,
"priority": 80
},
{
"id": "TR_STEP_WARNING_2",
"trigger": "on_event",
"event_type": "button",
"event_name": "ANY",
"target_step_id": "SCENE_LEFOU_DETECTOR",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_STEP_WARNING_3",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_ETAPE2",
"target_step_id": "SCENE_LEFOU_DETECTOR",
"after_ms": 0,
"priority": 140
}
]
},
{
"id": "SCENE_LEFOU_DETECTOR",
"screen_scene_id": "SCENE_LEFOU_DETECTOR",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_QUEUE_SONAR"
],
"transitions": [
{
"id": "TR_SCENE_LEFOU_DETECTOR_1",
"trigger": "on_event",
"event_type": "timer",
"event_name": "ETAPE2_DUE",
"target_step_id": "STEP_WARNING",
"after_ms": 0,
"priority": 100
},
{
"id": "TR_SCENE_LEFOU_DETECTOR_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "BTN_NEXT",
"target_step_id": "RTC_ESP_ETAPE2",
"after_ms": 0,
"priority": 110
},
{
"id": "TR_SCENE_LEFOU_DETECTOR_3",
"trigger": "on_event",
"event_type": "unlock",
"event_name": "UNLOCK",
"target_step_id": "RTC_ESP_ETAPE2",
"after_ms": 0,
"priority": 115
},
{
"id": "TR_SCENE_LEFOU_DETECTOR_4",
"trigger": "on_event",
"event_type": "action",
"event_name": "ACTION_FORCE_ETAPE2",
"target_step_id": "RTC_ESP_ETAPE2",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_SCENE_LEFOU_DETECTOR_5",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_WIN_ETAPE2",
"target_step_id": "RTC_ESP_ETAPE2",
"after_ms": 0,
"priority": 130
}
]
},
{
"id": "RTC_ESP_ETAPE2",
"screen_scene_id": "SCENE_WIN_ETAPE2",
"audio_pack_id": "PACK_CONFIRM_WIN_ETAPE2",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_HW_LED_ALERT",
"ACTION_ESP_NOW_SEND_ETAPE2",
"ACTION_QUEUE_SONAR"
],
"transitions": [
{
"id": "TR_RTC_ESP_ETAPE2_1",
"trigger": "on_event",
"event_type": "espnow",
"event_name": "ACK_WIN2",
"target_step_id": "SCENE_QR_DETECTOR",
"after_ms": 0,
"priority": 130
},
{
"id": "TR_RTC_ESP_ETAPE2_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_DONE",
"target_step_id": "SCENE_QR_DETECTOR",
"after_ms": 0,
"priority": 120
}
]
},
{
"id": "SCENE_QR_DETECTOR",
"screen_scene_id": "SCENE_QR_DETECTOR",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_QR_CODE_SCANNER_START"
],
"transitions": [
{
"id": "TR_SCENE_QR_DETECTOR_1",
"trigger": "on_event",
"event_type": "serial",
"event_name": "QR_OK",
"target_step_id": "SCENE_FINAL_WIN",
"after_ms": 0,
"priority": 140
},
{
"id": "TR_SCENE_QR_DETECTOR_2",
"trigger": "on_event",
"event_type": "unlock",
"event_name": "UNLOCK_QR",
"target_step_id": "SCENE_FINAL_WIN",
"after_ms": 0,
"priority": 150
},
{
"id": "TR_SCENE_QR_DETECTOR_3",
"trigger": "on_event",
"event_type": "serial",
"event_name": "BTN_NEXT",
"target_step_id": "SCENE_FINAL_WIN",
"after_ms": 0,
"priority": 110
},
{
"id": "TR_SCENE_QR_DETECTOR_4",
"trigger": "on_event",
"event_type": "action",
"event_name": "ACTION_FORCE_ETAPE2",
"target_step_id": "SCENE_FINAL_WIN",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_SCENE_QR_DETECTOR_5",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_WIN_ETAPE2",
"target_step_id": "SCENE_FINAL_WIN",
"after_ms": 0,
"priority": 130
}
]
},
{
"id": "SCENE_FINAL_WIN",
"screen_scene_id": "SCENE_FINAL_WIN",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_WINNER"
],
"transitions": [
{
"id": "TR_SCENE_FINAL_WIN_1",
"trigger": "on_event",
"event_type": "timer",
"event_name": "WIN_DUE",
"target_step_id": "STEP_MEDIA_MANAGER",
"after_ms": 0,
"priority": 140
},
{
"id": "TR_SCENE_FINAL_WIN_2",
"trigger": "on_event",
"event_type": "serial",
"event_name": "BTN_NEXT",
"target_step_id": "STEP_MEDIA_MANAGER",
"after_ms": 0,
"priority": 110
},
{
"id": "TR_SCENE_FINAL_WIN_3",
"trigger": "on_event",
"event_type": "unlock",
"event_name": "UNLOCK",
"target_step_id": "STEP_MEDIA_MANAGER",
"after_ms": 0,
"priority": 120
},
{
"id": "TR_SCENE_FINAL_WIN_4",
"trigger": "on_event",
"event_type": "action",
"event_name": "FORCE_WIN_ETAPE2",
"target_step_id": "STEP_MEDIA_MANAGER",
"after_ms": 0,
"priority": 130
},
{
"id": "TR_SCENE_FINAL_WIN_5",
"trigger": "on_event",
"event_type": "serial",
"event_name": "FORCE_WIN_ETAPE2",
"target_step_id": "STEP_MEDIA_MANAGER",
"after_ms": 0,
"priority": 125
}
]
},
{
"id": "STEP_MEDIA_MANAGER",
"screen_scene_id": "SCENE_MEDIA_MANAGER",
"action_ids": [
"ACTION_TRACE_STEP",
"ACTION_SET_BOOT_MEDIA_MANAGER"
],
"mp3_gate_open": true
}
],
"source": "story_selector",
"screen_root": "/story/screens",
"audio_root": "/story/audio"
}