Files
esp32/src/lichessboard.h
Pascal RIGAUD 1e258f6805 WIP
2026-02-09 07:38:28 +01:00

60 lines
1.4 KiB
C++

#ifndef LICHESS_BOARD_H
#define LICHESS_BOARD_H
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
// Callback pour chaque coup reçu
typedef void (*MoveCallback)(String from, String to, String san, String fen);
typedef void (*GameStateCallback)(String state); // started, finished, etc.
class LichessBoard
{
private:
WiFiClientSecure client;
String apiToken;
String currentGameId;
bool streaming;
String lastLine;
MoveCallback onMoveReceived;
GameStateCallback onGameStateChanged;
unsigned long lastHeartbeat;
const unsigned long heartbeatTimeout = 10000; // 10 secondes
// Parse une ligne JSON du stream
void parseLine(String line);
public:
LichessBoard();
// Configuration
void setToken(String token);
void setMoveCallback(MoveCallback callback);
void setGameStateCallback(GameStateCallback callback);
// Stream d'une partie spécifique
bool streamGame(String gameId);
// Stream de vos parties en cours (nécessite token)
bool streamMyGames();
// Stream des événements de votre compte
bool streamEvents();
// À appeler dans loop()
void loop();
// Contrôle
void stop();
bool isStreaming();
String getCurrentGameId();
// Récupérer l'état actuel d'une partie (non-stream)
bool getGameState(String gameId, String &fen, String &lastMove);
};
#endif