Files
ESP32_ZACUS/specs/apps/flashlight.md
T
L'électron rare 878d911065 P1.1+P1.2: Phase 9 Touch Emulator + AGENT_TODO Update
 P1.1 Phase 9 Touch Input (4h)
- TouchEmulator: 4x4 grid navigation via buttons (UP/DOWN/LEFT/RIGHT toggle)
- Files: touch_emulator.{h,cpp} + AmigaUIShell integration
- Button mapping: 0=UP, 1=SELECT, 2=DOWN, 3=MENU, 4=TOGGLE_LR
- Build SUCCESS (31.06s, 64.4% RAM, 42.0% Flash)

 P1.2 Documentation Update (1h)
- AGENT_TODO.md: Phase 9 completion + Sprint 9 section added
- Root cause analysis: watchdog timeout (cycle 9) → stack fix (8192→16384)
- Troubleshooting guide: common issues + debug commands

Files:
  + touch_emulator.{h,cpp}
  ~ ui_amiga_shell.* + main.cpp + AGENT_TODO.md

Next: P1.3 (Sprint 1 endurance validation) + P2 (main.cpp refactor)
2026-03-11 00:03:58 +01:00

47 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Spec App - Lampe de Poche (`flashlight`)
## 1. Cadrage
- ID runtime: `flashlight`
- Catégorie: `utility`
- Scène d'entrée: `SCENE_FLASHLIGHT`
- Module actuel: `FlashlightModule`
- Manifest attendu: `/apps/flashlight/manifest.json`
- Offline: **oui** | Streaming: **non**
## 2. Capacités
- Requises (136): `CAP_LED`, `CAP_GPU_UI`
- Optionnelles (0): `AUCUNE`
## 3. Objectif Produit
- Contrôle LED manuel (on/off/intensité).
## 4. Contrat Actions (`APP_ACTION` / `/api/apps/action`)
| Action | Payload | Effet attendu |
|---|---|---|
| `light_on` | `vide` | Allume la LED en blanc avec intensité courante. |
| `light_off` | `vide` | Éteint la LED. |
| `light_toggle` | `vide` | Alterne on/off en conservant l'intensité. |
| `set_level` | `0..255` ou `{"level":N}` | Met à jour l'intensité (appliquée à chaud si allumé). |
| `status` | `vide` | Publie `on=<0|1> level=<N>` dans `last_event`. |
## 5. Stockage & Persistance
- Pas de persistance actuelle de l'intensité.
## 6. Backlog Développement (MVP)
- Slider intensité + bouton toggle fiable.
- Sécurité thermique/autonomie (limite max configurable).
- Restauration niveau précédent (v2).
- Intégrer le déclenchement depuis le launcher (`AmigaUIShell::launchSelectedApp`) via `APP_OPEN`.
- Vérifier la route de scène (`entry_screen`) et la cohérence UI/LVGL.
## 7. Critères dAcceptation
- L'app se lance via API et via commande série sans crash.
- Les actions principales répondent sans erreur non gérée.
- Le statut runtime reflète correctement `state`, `last_event`, `last_error`.
- Retour propre à `SCENE_READY` après fermeture app.
## 8. Tests Recommandés
1. `APP_OPEN flashlight` puis contrôle `UI_SCENE_STATUS`.
2. Exécuter 3-5 actions clés de `FlashlightModule` (serial/API).
3. `APP_CLOSE` puis validation `APP_IDLE` et absence de fuite mémoire visible.