Files
ESP32_ZACUS/idf_zacus/components/puzzle_state/README.md
T
2026-06-11 02:56:47 +02:00

1.3 KiB

puzzle_state

Agrégation côté master des énigmes résolues. Chaque énigme reporte un fragment de code ; puzzle_state assemble le code final en concaténant les fragments de toutes les énigmes résolues, par id croissant.

Logique pure, sans I/O — testée sur hôte.

API (puzzle_state.h)

  • puzzle_state_init(s) — remet l'état à zéro.
  • puzzle_state_report(s, id, fragment, len) — enregistre une énigme résolue. Idempotent par id : reporter deux fois le même id ne duplique pas ses chiffres. len <= PUZZLE_MAX_FRAG ; fragment non-NULL si len > 0. Un fragment de len == 0 est valide (énigme marquée résolue, aucun chiffre).
  • puzzle_state_code(s, out, cap) — écrit le code assemblé (chiffres de toutes les énigmes résolues, id croissant) en chaîne NUL-terminée ; renvoie le nombre de chiffres écrits. Chaque octet de fragment est pris modulo 10 pour donner un chiffre décimal. cap == 0 n'écrit rien et renvoie 0.

Constantes : PUZZLE_MAX_ID = 8, PUZZLE_MAX_FRAG = 4.

Tests hôte

make -C idf_zacus/components/puzzle_state/test/host test

2 tests : assemblage du code à partir des fragments reportés, et idempotence (une énigme reportée deux fois ne duplique pas ses chiffres). Nécessite Unity.