RuffyScripter.verifyMenuIsDisplayed: wait a bit longer if needed.

Sometimes the pump seems to take a bit longer.
This commit is contained in:
Johannes Mockenhaupt 2017-07-14 17:28:57 +02:00
parent 76578872d1
commit d35d93ed44
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1

View file

@ -158,16 +158,16 @@ public class RuffyScripter {
// did we get a menu update from the pump in the last 5s? Then we're connected // did we get a menu update from the pump in the last 5s? Then we're connected
if (currentMenu != null && menuLastUpdated + 5000 > System.currentTimeMillis()) { if (currentMenu != null && menuLastUpdated + 5000 > System.currentTimeMillis()) {
log.debug("Pump is sending us menu updating, so we're connected"); log.debug("Pump is sending us menu updating, so we're connected");
return; return;
} }
try { try {
boolean connectSuccesful = ruffyService.doRTConnect() == 0; boolean connectSuccesful = ruffyService.doRTConnect() == 0;
log.debug("Connect init successful: " + connectSuccesful); log.debug("Connect init successful: " + connectSuccesful);
while (currentMenu == null) { while (currentMenu == null) {
log.debug("Waiting for first menu update to be sent"); log.debug("Waiting for first menu update to be sent");
waitForMenuUpdate(); waitForMenuUpdate();
} }
} catch (RemoteException e) { } catch (RemoteException e) {
throw new CommandException().exception(e).message("Unexpected exception while initiating/restoring pump connection"); throw new CommandException().exception(e).message("Unexpected exception while initiating/restoring pump connection");
} }
@ -209,12 +209,14 @@ public class RuffyScripter {
pressKey(Key.MENU); pressKey(Key.MENU);
} }
/** Wait until the menu update is in */ /**
* Wait until the menu update is in
*/
public void waitForMenuUpdate() { public void waitForMenuUpdate() {
long timeoutExpired = System.currentTimeMillis() + 90 * 1000; long timeoutExpired = System.currentTimeMillis() + 90 * 1000;
long initialUpdateTime = menuLastUpdated; long initialUpdateTime = menuLastUpdated;
while (initialUpdateTime == menuLastUpdated) { while (initialUpdateTime == menuLastUpdated) {
if(System.currentTimeMillis() > timeoutExpired) { if (System.currentTimeMillis() > timeoutExpired) {
throw new CommandException().message("Timeout waiting for menu update"); throw new CommandException().message("Timeout waiting for menu update");
} }
SystemClock.sleep(50); SystemClock.sleep(50);
@ -232,7 +234,6 @@ public class RuffyScripter {
SystemClock.sleep(100); SystemClock.sleep(100);
ruffyService.rtSendKey(Key.NO_KEY, true); ruffyService.rtSendKey(Key.NO_KEY, true);
}*/ }*/
private void pressKey(final byte key) { private void pressKey(final byte key) {
try { try {
ruffyService.rtSendKey(key, true); ruffyService.rtSendKey(key, true);
@ -269,16 +270,22 @@ public class RuffyScripter {
} }
} }
public void verifyMenuIsDisplayed(MenuType menu) { public void verifyMenuIsDisplayed(MenuType expectedMenu) {
String message = "Invalid pump state, expected to be in menu " String failureMessage = "Invalid pump state, expected to be in menu "
+ menu + ", but current menu is " + currentMenu.getType(); + expectedMenu + ", but current menu is " + currentMenu.getType();
verifyMenuIsDisplayed(menu, message); verifyMenuIsDisplayed(expectedMenu, failureMessage);
} }
public void verifyMenuIsDisplayed(MenuType menu, String message) { public void verifyMenuIsDisplayed(MenuType expectedMenu, String failureMessage) {
waitForMenuUpdate(); waitForMenuUpdate();
if (currentMenu.getType() != menu) { int retries = 5;
throw new CommandException().message(message); while (currentMenu.getType() != expectedMenu) {
if (retries > 0) {
SystemClock.sleep(200);
retries = retries - 1;
} else {
throw new CommandException().message(failureMessage);
}
} }
} }
} }