diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java index 39b197a3a6..e504034d31 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainApp.java +++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java @@ -18,6 +18,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import info.nightscout.androidaps.db.DatabaseHelper; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Actions.ActionsFragment; @@ -212,6 +213,21 @@ public class MainApp extends Application { return newList; } + @Nullable + public static InsulinInterface getInsulinIterfaceById(int id) { + ArrayList newList = new ArrayList<>(); + + if (pluginsList != null) { + for (PluginBase p : pluginsList) { + if (p.getType() == PluginBase.INSULIN && ((InsulinInterface)p).getId() == id) + return (InsulinInterface) p; + } + } else { + log.error("InsulinInterface not found"); + } + return null; + } + public static ArrayList getSpecificPluginsVisibleInList(int type) { ArrayList newList = new ArrayList<>(); diff --git a/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java b/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java index 5ef0767c59..3c9460e889 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java @@ -98,7 +98,7 @@ public class TempBasal { tempBolusPart.insulin = tempBolusSize; tempBolusPart.created_at = new Date(date); - Iob aIOB = insulinInterface.iobCalc(tempBolusPart, time, profile.getDia()); + Iob aIOB = insulinInterface.iobCalcForTreatment(tempBolusPart, time, profile.getDia()); result.basaliob += aIOB.iobContrib; result.activity += aIOB.activityContrib; Double dia_ago = time - profile.getDia() * 60 * 60 * 1000; diff --git a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java index dc933e59ee..da753638ec 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java +++ b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java @@ -14,6 +14,7 @@ import java.util.List; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.Overview.graphExtensions.DataPointWithLabelInterface; @@ -147,4 +148,11 @@ public class Treatment implements DataPointWithLabelInterface { ConfigBuilderPlugin.uploadCareportalEntryToNS(data); } + public Iob iobCalc(long time, double dia) { + InsulinInterface insulinInterface = MainApp.getInsulinIterfaceById(insulinType); + if (insulinInterface == null) + insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); + + return insulinInterface.iobCalcForTreatment(this, time, dia); + } } diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java index 6b50178652..20c563dede 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java @@ -17,5 +17,5 @@ public interface InsulinInterface { String getFriendlyName(); String getComment(); double getDia(); - public Iob iobCalc(Treatment treatment, long time, Double dia); + public Iob iobCalcForTreatment(Treatment treatment, long time, Double dia); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java index abc768afdc..4f3db14929 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java @@ -50,7 +50,7 @@ public class ActivityGraph extends GraphView { List iobArray = new ArrayList(); for (long time = 0; time <= hours * 60 * 60 * 1000; time += 5 * 60 * 1000L) { - Iob iob = insulin.iobCalc(t, time, dia); + Iob iob = t.iobCalc(time, dia); activityArray.add(new DataPoint(time / 60 / 1000, iob.activityContrib)); iobArray.add(new DataPoint(time / 60 / 1000, iob.iobContrib)); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java index 9773c20f55..1e3bc744e0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java @@ -100,7 +100,7 @@ public class InsulinFastactingPlugin implements PluginBase, InsulinInterface { } @Override - public Iob iobCalc(Treatment treatment, long time, Double dia) { + public Iob iobCalcForTreatment(Treatment treatment, long time, Double dia) { Iob result = new Iob(); Double scaleFactor = 3.0 / dia; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java index 58d644043c..6c292b6f5e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java @@ -100,7 +100,7 @@ public class InsulinFastactingProlongedPlugin implements PluginBase, InsulinInte } @Override - public Iob iobCalc(Treatment treatment, long time, Double dia) { + public Iob iobCalcForTreatment(Treatment treatment, long time, Double dia) { Iob result = new Iob(); //Double scaleFactor = 3.0 / dia; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index bee7d8c4d0..9cd5181e0f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -205,7 +205,6 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet return total; NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); - InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); if (profile == null) return total; @@ -214,10 +213,10 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { for (Integer pos = 0; pos < treatments.size(); pos++) { Treatment t = treatments.get(pos); if (t.created_at.getTime() > time) continue; - Iob tIOB = insulinInterface.iobCalc(t, time, dia); + Iob tIOB = t.iobCalc(time, dia); total.iob += tIOB.iobContrib; total.activity += tIOB.activityContrib; - Iob bIOB = insulinInterface.iobCalc(t, time, dia / SP.getInt("openapsama_bolussnooze_dia_divisor", 2)); + Iob bIOB = t.iobCalc(time, dia / SP.getInt("openapsama_bolussnooze_dia_divisor", 2)); total.bolussnooze += bIOB.iobContrib; } return total; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsBolusFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsBolusFragment.java index 5fa82b30b0..a442ec7799 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsBolusFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsBolusFragment.java @@ -75,13 +75,12 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet return; NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); - InsulinInterface insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); - if (profile == null || insulinInterface == null) + if (profile == null) return; holder.date.setText(DateUtil.dateAndTimeString(treatments.get(position).created_at)); holder.insulin.setText(DecimalFormatter.to2Decimal(treatments.get(position).insulin) + " U"); holder.carbs.setText(DecimalFormatter.to0Decimal(treatments.get(position).carbs) + " g"); - Iob iob = insulinInterface.iobCalc(treatments.get(position), new Date().getTime(), profile.getDia()); + Iob iob = treatments.get(position).iobCalc(new Date().getTime(), profile.getDia()); holder.iob.setText(DecimalFormatter.to2Decimal(iob.iobContrib) + " U"); holder.activity.setText(DecimalFormatter.to3Decimal(iob.activityContrib) + " U"); holder.mealOrCorrection.setText(treatments.get(position).mealBolus ? MainApp.sResources.getString(R.string.mealbolus) : MainApp.sResources.getString(R.string.correctionbous)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TreatmentsFromHistory/TreatmentsFromHistoryPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/TreatmentsFromHistory/TreatmentsFromHistoryPlugin.java index c77c1825a5..c7e24d1551 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TreatmentsFromHistory/TreatmentsFromHistoryPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TreatmentsFromHistory/TreatmentsFromHistoryPlugin.java @@ -203,7 +203,6 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet return total; NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); - InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); if (profile == null) return total; @@ -212,10 +211,10 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf for (Integer pos = 0; pos < treatments.size(); pos++) { Treatment t = treatments.get(pos); if (t.created_at.getTime() > time) continue; - Iob tIOB = insulinInterface.iobCalc(t, time, dia); + Iob tIOB = t.iobCalc(time, dia); total.iob += tIOB.iobContrib; total.activity += tIOB.activityContrib; - Iob bIOB = insulinInterface.iobCalc(t, time, dia / SP.getInt("openapsama_bolussnooze_dia_divisor", 2)); + Iob bIOB = t.iobCalc(time, dia / SP.getInt("openapsama_bolussnooze_dia_divisor", 2)); total.bolussnooze += bIOB.iobContrib; }