DroidFish: Created method EngineState.setState() to simplify state machine debugging.

This commit is contained in:
Peter Osterlund
2012-01-08 00:32:18 +00:00
parent b97830c29a
commit 298d0478de

View File

@@ -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;
} }