Hardware layer (kirin_hardware)

group Hardware layer (kirin_hardware)

Everything touching the physical board — motion, sensing, and the operator surface.

Everything that touches the physical board. Depends on Chess engine (kirin_engine); nothing in Chess engine (kirin_engine) may depend on this.

  • GameController — orchestrates engine ↔ board for a live game.

  • BoardInterpreter — turns an engine move into physical motion: piece-specific paths, blocker parking, A* routing, capture→storage disambiguation.

  • GrblController / gantry — emits G-code over serial; electromagnet via M8/M9.

  • BoardScanner — polls the 96 hall-effect sensors to read the human’s move.

  • DisplayController / ButtonController / LedController — the operator surface.

Design reference: docs/board-interpreter-docs/, docs/hardware-integration-docs/.

Identities, not types

This layer works in piece identity, because a captured piece must be routed to its own labelled storage slot. PieceTracker is the bridge: it maps each square to the identity currently sitting on it, so a captured type coming out of the engine can be matched to the correct physical slot. When you touch capture handling, storage routing, or path planning, that is the seam you are working on.

Files