app/board_backend.h

the physical-board primitives the game loop depends on.

GameSession’s single orchestration loop is written against this interface so the same loop drives real hardware (HardwareBackend over GameController) and off-Pi development (SimBackend). See docs/gui-docs/PLAN.md §3.3.

namespace Gantry
namespace kirin

Enums

enum class ResetMode

Values:

enumerator Auto
enumerator Hand
struct HumanMoveResult
#include <board_backend.h>

Public Members

bool ok = false
bool cancelled = false
std::string uci
int engineMove = 0
class IBoardBackend
#include <board_backend.h>

Subclassed by kirin::HardwareBackend, kirin::SimBackend

Public Functions

virtual ~IBoardBackend() = default
virtual bool prepareNewGame(bool engineWhite, ResetMode mode) = 0
inline virtual bool prepareNewGameFromSnapshot(bool engineWhite, const ::BoardIdentity &snapshot)
inline virtual bool resetToStart()
virtual bool executeEngineMove(int engineMove) = 0
inline virtual bool undoMove(int engineMove, int capturedSlot)
inline virtual bool executeSetup(const ::SetupPlan &plan, const ::BoardIdentity &target)
virtual HumanMoveResult waitForHumanMove(std::atomic<bool> &cancel) = 0
virtual bool verifyBoardState() = 0
inline virtual bool readBoardOccupancy(unsigned long long &expected, unsigned long long &actual)
inline virtual bool redriveLastMove(int engineMove)
virtual void syncWithEngine() = 0
virtual void updateTracker(int engineMove) = 0
inline virtual void submitHumanMove(const std::string &uci)
inline virtual void setScannerObserver(const ScannerObserver &observer)
inline virtual void setPlanObserver(const PlanObserver &observer)
inline virtual void setGcodeObserver(const Gantry::GcodeObserver &observer)
virtual bool isSimulation() const = 0