mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2025-12-20 12:42:18 +01:00
DroidFish: Created method EngineState.setState() to simplify state machine debugging.
This commit is contained in:
@@ -79,9 +79,16 @@ public class DroidComputerPlayer {
|
|||||||
/** Default constructor. */
|
/** Default constructor. */
|
||||||
EngineState() {
|
EngineState() {
|
||||||
engine = "";
|
engine = "";
|
||||||
state = MainState.DEAD;
|
setState(MainState.DEAD);
|
||||||
searchId = -1;
|
searchId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final void setState(MainState s) {
|
||||||
|
// System.out.printf("state: %s -> %s\n",
|
||||||
|
// (state != null) ? state.toString() : "(null)",
|
||||||
|
// s.toString());
|
||||||
|
state = s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Information about current/next engine search task. */
|
/** Information about current/next engine search task. */
|
||||||
@@ -286,7 +293,7 @@ public class DroidComputerPlayer {
|
|||||||
|
|
||||||
if (engineState.state == MainState.PONDER) {
|
if (engineState.state == MainState.PONDER) {
|
||||||
uciEngine.writeLineToEngine("ponderhit");
|
uciEngine.writeLineToEngine("ponderhit");
|
||||||
engineState.state = MainState.SEARCH;
|
engineState.setState(MainState.SEARCH);
|
||||||
pvModified = true;
|
pvModified = true;
|
||||||
notifyGUI();
|
notifyGUI();
|
||||||
}
|
}
|
||||||
@@ -300,7 +307,7 @@ public class DroidComputerPlayer {
|
|||||||
uciEngine.shutDown();
|
uciEngine.shutDown();
|
||||||
uciEngine = null;
|
uciEngine = null;
|
||||||
}
|
}
|
||||||
engineState.state = MainState.DEAD;
|
engineState.setState(MainState.DEAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Start an engine, if not already started.
|
/** Start an engine, if not already started.
|
||||||
@@ -386,7 +393,7 @@ public class DroidComputerPlayer {
|
|||||||
private final void handleQueue() {
|
private final void handleQueue() {
|
||||||
if (engineState.state == MainState.DEAD) {
|
if (engineState.state == MainState.DEAD) {
|
||||||
engineState.engine = "";
|
engineState.engine = "";
|
||||||
engineState.state = MainState.IDLE;
|
engineState.setState(MainState.IDLE);
|
||||||
}
|
}
|
||||||
if (engineState.state == MainState.IDLE)
|
if (engineState.state == MainState.IDLE)
|
||||||
handleIdleState();
|
handleIdleState();
|
||||||
@@ -406,7 +413,7 @@ public class DroidComputerPlayer {
|
|||||||
case PONDER:
|
case PONDER:
|
||||||
case ANALYZE:
|
case ANALYZE:
|
||||||
uciEngine.writeLineToEngine("stop");
|
uciEngine.writeLineToEngine("stop");
|
||||||
engineState.state = MainState.STOP_SEARCH;
|
engineState.setState(MainState.STOP_SEARCH);
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -463,7 +470,7 @@ public class DroidComputerPlayer {
|
|||||||
if (newGame) {
|
if (newGame) {
|
||||||
uciEngine.writeLineToEngine("ucinewgame");
|
uciEngine.writeLineToEngine("ucinewgame");
|
||||||
uciEngine.writeLineToEngine("isready");
|
uciEngine.writeLineToEngine("isready");
|
||||||
engineState.state = MainState.WAIT_READY;
|
engineState.setState(MainState.WAIT_READY);
|
||||||
newGame = false;
|
newGame = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -524,7 +531,7 @@ public class DroidComputerPlayer {
|
|||||||
if (sr.ponderMove != null)
|
if (sr.ponderMove != null)
|
||||||
goStr.append(" ponder");
|
goStr.append(" ponder");
|
||||||
uciEngine.writeLineToEngine(goStr.toString());
|
uciEngine.writeLineToEngine(goStr.toString());
|
||||||
engineState.state = (sr.ponderMove == null) ? MainState.SEARCH : MainState.PONDER;
|
engineState.setState((sr.ponderMove == null) ? MainState.SEARCH : MainState.PONDER);
|
||||||
} else { // Analyze
|
} else { // Analyze
|
||||||
StringBuilder posStr = new StringBuilder();
|
StringBuilder posStr = new StringBuilder();
|
||||||
posStr.append("position fen ");
|
posStr.append("position fen ");
|
||||||
@@ -541,7 +548,7 @@ public class DroidComputerPlayer {
|
|||||||
uciEngine.setOption("UCI_AnalyseMode", true);
|
uciEngine.setOption("UCI_AnalyseMode", true);
|
||||||
uciEngine.setOption("Threads", sr.engineThreads > 0 ? sr.engineThreads : numCPUs);
|
uciEngine.setOption("Threads", sr.engineThreads > 0 ? sr.engineThreads : numCPUs);
|
||||||
uciEngine.writeLineToEngine("go infinite");
|
uciEngine.writeLineToEngine("go infinite");
|
||||||
engineState.state = MainState.ANALYZE;
|
engineState.setState(MainState.ANALYZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -577,7 +584,7 @@ public class DroidComputerPlayer {
|
|||||||
numCPUs = nThreads;
|
numCPUs = nThreads;
|
||||||
maxPV = 1;
|
maxPV = 1;
|
||||||
engineState.engine = searchRequest.engine;
|
engineState.engine = searchRequest.engine;
|
||||||
engineState.state = MainState.READ_OPTIONS;
|
engineState.setState(MainState.READ_OPTIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -620,13 +627,13 @@ public class DroidComputerPlayer {
|
|||||||
uci.initOptions();
|
uci.initOptions();
|
||||||
uci.writeLineToEngine("ucinewgame");
|
uci.writeLineToEngine("ucinewgame");
|
||||||
uci.writeLineToEngine("isready");
|
uci.writeLineToEngine("isready");
|
||||||
engineState.state = MainState.WAIT_READY;
|
engineState.setState(MainState.WAIT_READY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WAIT_READY: {
|
case WAIT_READY: {
|
||||||
if ("readyok".equals(s)) {
|
if ("readyok".equals(s)) {
|
||||||
engineState.state = MainState.IDLE;
|
engineState.setState(MainState.IDLE);
|
||||||
handleIdleState();
|
handleIdleState();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -647,7 +654,7 @@ public class DroidComputerPlayer {
|
|||||||
if (engineState.state == MainState.SEARCH)
|
if (engineState.state == MainState.SEARCH)
|
||||||
reportMove(bestMove, nextPonderMove);
|
reportMove(bestMove, nextPonderMove);
|
||||||
|
|
||||||
engineState.state = MainState.IDLE;
|
engineState.setState(MainState.IDLE);
|
||||||
searchRequest = null;
|
searchRequest = null;
|
||||||
handleIdleState();
|
handleIdleState();
|
||||||
}
|
}
|
||||||
@@ -657,7 +664,7 @@ public class DroidComputerPlayer {
|
|||||||
String[] tokens = tokenize(s);
|
String[] tokens = tokenize(s);
|
||||||
if (tokens[0].equals("bestmove")) {
|
if (tokens[0].equals("bestmove")) {
|
||||||
uci.writeLineToEngine("isready");
|
uci.writeLineToEngine("isready");
|
||||||
engineState.state = MainState.WAIT_READY;
|
engineState.setState(MainState.WAIT_READY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user