From 7fe9ad791035238f7eb5db6260429caaac7d6740 Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Tue, 18 Jul 2017 01:24:13 +0200 Subject: [PATCH] Add retries for inputing values. Rarely there seem to be timing issues and e.g. 10 button down presses to go from 100% to 0% only goes down to 20%. Retry two more times in that case, restarting the input process on the active screen (bolus input, tbr percent/duration input). --- .../ruffyscripter/commands/BolusCommand.java | 21 +++++++-- .../ruffyscripter/commands/SetTbrCommand.java | 43 ++++++++++++++++--- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java b/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java index d84023ef1e..f97573bfdf 100644 --- a/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java +++ b/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java @@ -37,9 +37,24 @@ public class BolusCommand implements Command { public CommandResult execute(RuffyScripter scripter) { try { enterBolusMenu(scripter); - inputBolusAmount(scripter); - SystemClock.sleep(500); - verifyDisplayedBolusAmount(scripter); + + boolean bolusAmountInputSuccess = false; + int bolusAmountInputRetries = 2; + while (!bolusAmountInputSuccess) { + try { + inputBolusAmount(scripter); + SystemClock.sleep(750); + verifyDisplayedBolusAmount(scripter); + bolusAmountInputSuccess = true; + } catch (CommandException e) { + if (bolusAmountInputRetries >= 0) { + log.warn("Failed to set bolus amount, retrying", e); + bolusAmountInputRetries--; + } else { + throw e; + } + } + } // confirm bolus scripter.verifyMenuIsDisplayed(MenuType.BOLUS_ENTER); diff --git a/app/src/main/java/de/jotomo/ruffyscripter/commands/SetTbrCommand.java b/app/src/main/java/de/jotomo/ruffyscripter/commands/SetTbrCommand.java index 90d118fe83..f1ddb20516 100644 --- a/app/src/main/java/de/jotomo/ruffyscripter/commands/SetTbrCommand.java +++ b/app/src/main/java/de/jotomo/ruffyscripter/commands/SetTbrCommand.java @@ -49,16 +49,31 @@ public class SetTbrCommand implements Command { violations.add("Max allowed zero-temp duration is 2h"); } - return violations; + return violations; } @Override public CommandResult execute(RuffyScripter scripter) { try { enterTbrMenu(scripter); - inputTbrPercentage(scripter); - SystemClock.sleep(500); - verifyDisplayedTbrPercentage(scripter); + + boolean tbrPercentInputSuccess = false; + int tbrPercentInputRetries = 2; + while (!tbrPercentInputSuccess) { + try { + inputTbrPercentage(scripter); + SystemClock.sleep(750); + verifyDisplayedTbrPercentage(scripter); + tbrPercentInputSuccess = true; + } catch (CommandException e) { + if (tbrPercentInputRetries >= 0) { + log.warn("Setting TBR percentage failed, retrying", e); + tbrPercentInputRetries--; + } else { + throw e; + } + } + } if (percentage == 100) { cancelTbrAndConfirmCancellationWarning(scripter); @@ -69,9 +84,23 @@ public class SetTbrCommand implements Command { scripter.waitForMenuUpdate(); scripter.verifyMenuIsDisplayed(MenuType.TBR_DURATION); - inputTbrDuration(scripter); - SystemClock.sleep(500); - verifyDisplayedTbrDuration(scripter); + boolean tbrDurationSuccess = false; + int tbrDurationRetries = 2; + while (!tbrDurationSuccess) { + try { + inputTbrDuration(scripter); + SystemClock.sleep(750); + verifyDisplayedTbrDuration(scripter); + tbrDurationSuccess = true; + } catch (CommandException e) { + if (tbrDurationRetries >= 0) { + log.warn("Setting TBR duration failed, retrying", e); + tbrDurationRetries--; + } else { + throw e; + } + } + } // confirm TBR scripter.pressCheckKey();