Fix reading history when bolus was attempted to cancel but bolus finished before pump accepted request.

This commit is contained in:
Johannes Mockenhaupt 2017-12-06 20:06:56 +01:00
parent 60d6f305b5
commit 8009b32b16
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1

View file

@ -104,12 +104,14 @@ public class BolusCommand extends BaseCommand {
boolean cancelInProgress = false; boolean cancelInProgress = false;
Double lastBolusReported = 0d; Double lastBolusReported = 0d;
Double bolusRemaining = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_REMAINING); Double bolusRemaining = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_REMAINING);
Thread cancellationThread = null;
while (bolusRemaining != null || scripter.getCurrentMenu().getType() == MenuType.WARNING_OR_ERROR) { while (bolusRemaining != null || scripter.getCurrentMenu().getType() == MenuType.WARNING_OR_ERROR) {
if (cancelRequested && !cancelInProgress) { if (cancelRequested && !cancelInProgress) {
bolusProgressReporter.report(STOPPING, 0, 0); bolusProgressReporter.report(STOPPING, 0, 0);
cancelInProgress = true; cancelInProgress = true;
new Thread(() -> cancellationThread = new Thread(() ->
scripter.pressKeyMs(RuffyScripter.Key.UP, 3000), "bolus-canceller").start(); scripter.pressKeyMs(RuffyScripter.Key.UP, 3000), "bolus-canceller");
cancellationThread.start();
} }
if (scripter.getCurrentMenu().getType() == MenuType.WARNING_OR_ERROR) { if (scripter.getCurrentMenu().getType() == MenuType.WARNING_OR_ERROR) {
// confirm warning alert and update the result to indicate alerts occurred // confirm warning alert and update the result to indicate alerts occurred
@ -140,6 +142,16 @@ public class BolusCommand extends BaseCommand {
SystemClock.sleep(50); SystemClock.sleep(50);
bolusRemaining = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_REMAINING); bolusRemaining = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_REMAINING);
} }
// if a cancellation was started by pressing up for 3 seconds but the bolus has finished during those
// three seconds, must wait until the button is unpressed again so that follow up commands
// work properly.
if (cancellationThread != null) {
try {
cancellationThread.join();
} catch (InterruptedException e) {
// ignore
}
}
bolusProgressReporter.report(DELIVERED, 100, bolus); bolusProgressReporter.report(DELIVERED, 100, bolus);
result.success = true; result.success = true;
} finally { } finally {