diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
index 76e8697666..7c3e3eb767 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
@@ -283,4 +283,21 @@ public class DateTimeUtil {
}
+ public static long getTimeInFutureFromMinutes(long startTime, int minutes) {
+ return startTime + getTimeInMs(minutes);
+ }
+
+ public static long getTimeInFutureFromMinutes(int minutes) {
+ return System.currentTimeMillis() + getTimeInMs(minutes);
+ }
+
+
+ public static long getTimeInMs(int minutes) {
+ return getTimeInS(minutes) * 1000L;
+ }
+
+ public static int getTimeInS(int minutes) {
+ return minutes * 60;
+ }
+
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java
index 6145693620..5b8f8667df 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java
@@ -51,6 +51,7 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor;
+import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.comm.message.response.podinfo.PodInfoRecentPulseLog;
import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType;
import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunicationManagerInterface;
@@ -561,7 +562,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
if (currentProfile != null) {
int hour = (new GregorianCalendar()).get(Calendar.HOUR_OF_DAY);
- return currentProfile.getBasalTimeFromMidnight(getTimeInS(hour * 60));
+ return currentProfile.getBasalTimeFromMidnight(DateTimeUtil.getTimeInS(hour * 60));
} else {
return 0.0d;
}
@@ -618,7 +619,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
try {
OmnipodUITask responseTask = omnipodUIComm.executeCommand(OmnipodCommandType.SetBolus,
- detailedBolusInfo.insulin, detailedBolusInfo.isSMB);
+ detailedBolusInfo);
PumpEnactResult result = responseTask.getResult();
@@ -626,8 +627,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
if (result.success) {
- TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, true);
-
// we subtract insulin, exact amount will be visible with next remainingInsulin update.
// if (getPodPumpStatusObject().reservoirRemainingUnits != 0 &&
// getPodPumpStatusObject().reservoirRemainingUnits != 75 ) {
@@ -637,14 +636,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
incrementStatistics(detailedBolusInfo.isSMB ? OmnipodConst.Statistics.SMBBoluses
: OmnipodConst.Statistics.StandardBoluses);
- // calculate time for bolus and set driver to busy for that time
-
- // TODO fix this
-// int bolusTime = 1; //omnipodCommunicationManager.get;
-// long time = System.currentTimeMillis() + (bolusTime * 1000);
-//
-// this.busyTimestamps.add(time);
- result.bolusDelivered(detailedBolusInfo.insulin).carbsDelivered(detailedBolusInfo.carbs);
+ result.carbsDelivered(detailedBolusInfo.carbs);
}
return result;
@@ -667,12 +659,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
LOG.info(getLogPrefix() + "stopBolusDelivering - wasSuccess={}", result.success);
- if (result.success) {
- // TODO fix bolus record with cancel
-
- //TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, true);
- }
-
finishAction("Bolus");
}
@@ -748,19 +734,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
LOG.info(getLogPrefix() + "setTempBasalAbsolute - setTBR. Response: " + result.success);
if (result.success) {
- pumpStatusLocal.tempBasalStart = System.currentTimeMillis();
- pumpStatusLocal.tempBasalAmount = absoluteRate;
- pumpStatusLocal.tempBasalLength = durationInMinutes;
- pumpStatusLocal.tempBasalEnd = getTimeInFutureFromMinutes(durationInMinutes);
-
- TemporaryBasal tempStart = new TemporaryBasal() //
- .date(System.currentTimeMillis()) //
- .duration(durationInMinutes) //
- .absolute(absoluteRate) //
- .source(Source.USER);
-
- TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempStart);
-
incrementStatistics(OmnipodConst.Statistics.TBRsSet);
}
@@ -791,19 +764,8 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
}
- protected long getTimeInFutureFromMinutes(int minutes) {
- return System.currentTimeMillis() + getTimeInMs(minutes);
- }
- protected long getTimeInMs(int minutes) {
- return getTimeInS(minutes) * 1000L;
- }
-
- protected int getTimeInS(int minutes) {
- return minutes * 60;
- }
-
@Override
public PumpEnactResult cancelTempBasal(boolean enforceNew) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/data/PodCommResponse.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/data/PodCommResponse.java
deleted file mode 100644
index 625168bac0..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/data/PodCommResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.omnipod.comm.data;
-
-import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodResponseType;
-
-public class PodCommResponse {
-
- PodResponseType podResponseType;
-
- Boolean acknowledged;
- Object customData;
- Object errorResponse;
-
- public boolean isAcknowledged() {
- return (acknowledged != null && acknowledged);
- }
-
- // some status data if it can be returned (battery, reservoir, etc)
-
-}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommunicationManagerInterface.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommunicationManagerInterface.java
index 01d25c8763..3999cd2923 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommunicationManagerInterface.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommunicationManagerInterface.java
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.omnipod.defs;
+import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair;
@@ -39,9 +40,9 @@ public interface OmnipodCommunicationManagerInterface {
/**
* Set Bolus
*
- * @param amount amount of bolus in U
+ * @param detailedBolusInfo DetailedBolusInfo instance with amount and all other required data
*/
- PumpEnactResult setBolus(Double amount, boolean isSmb);
+ PumpEnactResult setBolus(DetailedBolusInfo detailedBolusInfo);
/**
* Cancel Bolus (if bolus is already stopped, return acknowledgment)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/OmnipodPumpStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/OmnipodPumpStatus.java
index 2fb6bd10c2..8996795fa9 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/OmnipodPumpStatus.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/OmnipodPumpStatus.java
@@ -41,6 +41,7 @@ public class OmnipodPumpStatus extends PumpStatus {
public long tempBasalEnd;
public Double tempBasalAmount = 0.0d;
public Integer tempBasalLength;
+ public long tempBasalPumpId;
public PodSessionState podSessionState;
private boolean rileyLinkAddressChanged = false;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java
index d6b4638e0c..a9c8fad873 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java
@@ -16,6 +16,7 @@ import java.util.Objects;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.Source;
@@ -31,6 +32,7 @@ import info.nightscout.androidaps.plugins.general.overview.notifications.Notific
import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpStatusType;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
+import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunicationService;
import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodManager;
import info.nightscout.androidaps.plugins.pump.omnipod.comm.SetupActionResult;
@@ -270,17 +272,17 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface
}
@Override
- public PumpEnactResult setBolus(Double units, boolean isSmb) {
+ public PumpEnactResult setBolus(DetailedBolusInfo detailedBolusInfo) {
OmnipodManager.BolusCommandResult bolusCommandResult;
- boolean beepsEnabled = isSmb ? isSmbBeepsEnabled() : isBolusBeepsEnabled();
+ boolean beepsEnabled = detailedBolusInfo.isSMB ? isSmbBeepsEnabled() : isBolusBeepsEnabled();
Date bolusStarted;
try {
- bolusCommandResult = delegate.bolus(units, beepsEnabled, beepsEnabled, isSmb ? null :
+ bolusCommandResult = delegate.bolus(detailedBolusInfo.insulin, beepsEnabled, beepsEnabled, detailedBolusInfo.isSMB ? null :
(estimatedUnitsDelivered, percentage) -> {
EventOverviewBolusProgress progressUpdateEvent = EventOverviewBolusProgress.INSTANCE;
- progressUpdateEvent.setStatus(getStringResource(R.string.bolusdelivering, units));
+ progressUpdateEvent.setStatus(getStringResource(R.string.bolusdelivering, detailedBolusInfo.insulin));
progressUpdateEvent.setPercent(percentage);
sendEvent(progressUpdateEvent);
});
@@ -303,11 +305,20 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface
double unitsDelivered = bolusDeliveryResult.getUnitsDelivered();
- if (pumpStatus != null && !isSmb) {
+ if (pumpStatus != null && !detailedBolusInfo.isSMB) {
lastBolusTime = pumpStatus.lastBolusTime = bolusStarted;
lastBolusUnits = pumpStatus.lastBolusAmount = unitsDelivered;
}
+ long pumpId = addSuccessToHistory(bolusStarted.getTime(), PodHistoryEntryType.SetBolus, unitsDelivered);
+
+ detailedBolusInfo.date = bolusStarted.getTime();
+ detailedBolusInfo.insulin = unitsDelivered;
+ detailedBolusInfo.pumpId = pumpId;
+ detailedBolusInfo.source = Source.PUMP;
+
+ TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
+
return new PumpEnactResult().success(true).enacted(true).bolusDelivered(unitsDelivered);
}
@@ -334,13 +345,30 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface
long time = System.currentTimeMillis();
try {
delegate.setTemporaryBasal(tempBasalPair, beepsEnabled, beepsEnabled);
- addSuccessToHistory(time, PodHistoryEntryType.SetTemporaryBasal, tempBasalPair);
+ time = System.currentTimeMillis();
} catch (Exception ex) {
String comment = handleAndTranslateException(ex);
addFailureToHistory(time, PodHistoryEntryType.SetTemporaryBasal, comment);
return new PumpEnactResult().success(false).enacted(false).comment(comment);
}
+ long pumpId = addSuccessToHistory(time, PodHistoryEntryType.SetTemporaryBasal, tempBasalPair);
+
+ pumpStatus.tempBasalStart = time;
+ pumpStatus.tempBasalAmount = tempBasalPair.getInsulinRate();
+ pumpStatus.tempBasalLength = tempBasalPair.getDurationMinutes();
+ pumpStatus.tempBasalEnd = DateTimeUtil.getTimeInFutureFromMinutes(time, tempBasalPair.getDurationMinutes());
+ pumpStatus.tempBasalPumpId = pumpId;
+
+ TemporaryBasal tempStart = new TemporaryBasal() //
+ .date(time) //
+ .duration(tempBasalPair.getDurationMinutes()) //
+ .absolute(tempBasalPair.getInsulinRate()) //
+ .pumpId(pumpId)
+ .source(Source.PUMP);
+
+ TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempStart);
+
return new PumpEnactResult().success(true).enacted(true);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/db/PodHistoryEntryType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/db/PodHistoryEntryType.java
index b75453c8e5..0e7c3a9dc2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/db/PodHistoryEntryType.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/db/PodHistoryEntryType.java
@@ -20,6 +20,7 @@ public enum PodHistoryEntryType {
SetTemporaryBasal(10, R.string.omnipod_cmd_set_tbr),
CancelTemporaryBasal(11, R.string.omnipod_cmd_cancel_tbr),
+ CancelTemporaryBasalForce(12, R.string.omnipod_cmd_cancel_tbr_forced),
SetBasalSchedule(20, R.string.omnipod_cmd_set_basal_schedule),
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUITask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUITask.java
index aafd5e960c..e7dce48a5c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUITask.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUITask.java
@@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.ui;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.logging.L;
@@ -73,11 +74,10 @@ public class OmnipodUITask {
break;
case SetBolus: {
- Double amount = getDoubleFromParameters(0);
- boolean isSmb = getBooleanFromParameters(1);
+ DetailedBolusInfo detailedBolusInfo = (DetailedBolusInfo)parameters[0];
- if (amount != null)
- returnData = communicationManager.setBolus(amount, isSmb);
+ if (detailedBolusInfo != null)
+ returnData = communicationManager.setBolus(detailedBolusInfo);
}
break;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/comm/OmnipodDashCommunicationManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/comm/OmnipodDashCommunicationManager.java
index ee8d9212c4..40105b1126 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/comm/OmnipodDashCommunicationManager.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/comm/OmnipodDashCommunicationManager.java
@@ -5,6 +5,7 @@ import android.content.Context;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.logging.L;
@@ -86,6 +87,11 @@ public class OmnipodDashCommunicationManager implements OmnipodCommunicationMana
return null;
}
+ @Override
+ public PumpEnactResult setBolus(DetailedBolusInfo detailedBolusInfo) {
+ return null;
+ }
+
public PumpEnactResult setBolus(Double parameter, boolean isSmb) {
return null;
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 258a164297..916b9c7212 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1704,6 +1704,7 @@
Cancel Bolus
Set Temporary Basal
Cancel Temporary Basal
+ Cancel Temporary Basal (Forced)
Set Basal Schedule
Get Pod Status
Get Pod Info