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 6ae191bf64..b9f54205d2 100644 --- a/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java +++ b/app/src/main/java/de/jotomo/ruffyscripter/commands/BolusCommand.java @@ -18,7 +18,6 @@ import static de.jotomo.ruffyscripter.commands.ProgressReportCallback.State.DELI import static de.jotomo.ruffyscripter.commands.ProgressReportCallback.State.STOPPED; import static de.jotomo.ruffyscripter.commands.ProgressReportCallback.State.STOPPING; import static de.jotomo.ruffyscripter.commands.ProgressReportCallback.State.DELIVERED; -import static de.jotomo.ruffyscripter.commands.ProgressReportCallback.State.PREPARING; public class BolusCommand implements Command { private static final Logger log = LoggerFactory.getLogger(BolusCommand.class); @@ -164,7 +163,8 @@ public class BolusCommand implements Command { } private boolean confirmAlert(String alertText, int maxWaitTillExpectedAlert) { - + // TODO + return false; } private void enterBolusMenu(RuffyScripter scripter) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpCombo/ComboPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpCombo/ComboPlugin.java index 3ed1028434..c2c7076e6c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpCombo/ComboPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpCombo/ComboPlugin.java @@ -369,36 +369,38 @@ public class ComboPlugin implements PluginBase, PumpInterface { private static ProgressReportCallback bolusProgressReportCallback = new ProgressReportCallback() { @Override public void report(ProgressReportCallback.State state, int percent, double delivered) { - EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.getInstance(); + EventOverviewBolusProgress enent = EventOverviewBolusProgress.getInstance(); switch (state) { - // TODO move into enum as toString or so and make it translateb case DELIVERING: - bolusingEvent.status = String.format(MainApp.sResources.getString(R.string.bolusdelivering), delivered); + enent.status = String.format(MainApp.sResources.getString(R.string.bolusdelivering), delivered); break; case DELIVERED: - bolusingEvent.status = "Bolus delivery finished successfully"; - break; - case STOPPED: - bolusingEvent.status = "Bolus delivery was cancelled"; + enent.status = String.format(MainApp.sResources.getString(R.string.bolusdelivered), delivered); break; case STOPPING: - bolusingEvent.status = "Cancelling bolus delivery"; + enent.status = MainApp.sResources.getString(R.string.bolusstopping); + break; + case STOPPED: + enent.status = MainApp.sResources.getString(R.string.bolusstopped); break; } - bolusingEvent.percent = percent; - MainApp.bus().post(bolusingEvent); + enent.percent = percent; + MainApp.bus().post(enent); } }; - // what a mess: pump integration code reading carb info from Detailed**Bolus**Info, - // writing carb treatments to the history table. What's PumpEnactResult for again? + /** Updates Treatment records with carbs and boluses and delivers a bolus if needed */ @Override public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) { if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) { if (detailedBolusInfo.insulin > 0) { // bolus needed, ask pump to deliver it - EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.getInstance(); - MainApp.bus().post(bolusingEvent); + + // TODO read history to ensure there are no boluses delivered on the pump we aren't + // aware of and haven't included in the bolus calulation + + // Note that the BolusCommand send progress updates to the bolusProgressReporterCallback, + // which then posts appropriate events on the bus, so in this branch no posts are needed runningBolusCommand = new BolusCommand(detailedBolusInfo.insulin, bolusProgressReportCallback); CommandResult bolusCmdResult = runCommand(runningBolusCommand); runningBolusCommand = null; @@ -407,12 +409,8 @@ public class ComboPlugin implements PluginBase, PumpInterface { pumpEnactResult.enacted = bolusCmdResult.enacted; pumpEnactResult.comment = bolusCmdResult.message; - // if enacted, add bolus and carbs to treatment history + // if enacted by pump, add bolus and carbs to treatment history if (pumpEnactResult.enacted) { - // TODO if no error occurred, the requested bolus is what the pump delievered, - // that has been checked. If an error occurred, we should check how much insulin - // was delivered, e.g. when the cartridge went empty mid-bolus - // For the first iteration, the alert the pump raises must suffice pumpEnactResult.bolusDelivered = detailedBolusInfo.insulin; pumpEnactResult.carbsDelivered = detailedBolusInfo.carbs; @@ -425,11 +423,6 @@ public class ComboPlugin implements PluginBase, PumpInterface { return pumpEnactResult; } else { // no bolus required, carb only treatment - - // TODO the ui freezes when the calculator issues a carb-only treatment - // so just wait, yeah, this is dumb. for now; proper fix via GL#10 - // info.nightscout.androidaps.plugins.Overview.Dialogs.BolusProgressDialog.scheduleDismiss() - // send event to indicate popup can be dismissed? SystemClock.sleep(6000); PumpEnactResult pumpEnactResult = new PumpEnactResult(); pumpEnactResult.success = true; @@ -438,6 +431,10 @@ public class ComboPlugin implements PluginBase, PumpInterface { pumpEnactResult.carbsDelivered = detailedBolusInfo.carbs; pumpEnactResult.comment = MainApp.instance().getString(R.string.virtualpump_resultok); MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo); + + EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.getInstance(); + bolusingEvent.percent = 100; + MainApp.bus().post(bolusingEvent); return pumpEnactResult; } } else { @@ -453,6 +450,12 @@ public class ComboPlugin implements PluginBase, PumpInterface { } } + @Override + public void stopBolusDelivering() { + BolusCommand localRunningBolusCommand = runningBolusCommand; + if (localRunningBolusCommand != null) localRunningBolusCommand.requestCancellation(); + } + private CommandResult runCommand(Command command) { if (ruffyScripter == null) { String msg = "No connection to ruffy. Pump control not available."; @@ -486,11 +489,6 @@ public class ComboPlugin implements PluginBase, PumpInterface { return commandResult; } - @Override - public void stopBolusDelivering() { - if (runningBolusCommand != null) runningBolusCommand.requestCancellation(); - } - // Note: AAPS calls this only to enact OpenAPS recommendations @Override public PumpEnactResult setTempBasalAbsolute(Double absoluteRate, Integer durationInMinutes, boolean force) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8597ac3d74..bc806b0426 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -702,6 +702,8 @@ Ultra-Rapid Oref "DIA of %s too short - using %s instead!" ACTIVATE PROFILE + Stopping bolus delivery + Bolus delivery stopped