From f4bafc6260a274cec7910de1106d4b734d7de1ee Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Sun, 22 Apr 2018 19:05:39 +0200 Subject: [PATCH 1/7] Add IobCobCalculatorPlugin.getCobInfo(). --- .../androidaps/data/QuickWizardEntry.java | 14 ++++------- .../plugins/IobCobCalculator/CobInfo.java | 15 +++++++++++ .../IobCobCalculatorPlugin.java | 25 +++++++++++++++++++ .../Overview/Dialogs/WizardDialog.java | 10 +++----- .../plugins/Overview/OverviewFragment.java | 13 ++++++---- app/src/main/res/values/strings.xml | 1 + 6 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/CobInfo.java diff --git a/app/src/main/java/info/nightscout/androidaps/data/QuickWizardEntry.java b/app/src/main/java/info/nightscout/androidaps/data/QuickWizardEntry.java index e4cd50c490..04f297d7a9 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/QuickWizardEntry.java +++ b/app/src/main/java/info/nightscout/androidaps/data/QuickWizardEntry.java @@ -11,7 +11,7 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.interfaces.TreatmentsInterface; -import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData; +import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo; import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin; @@ -79,14 +79,10 @@ public class QuickWizardEntry { // COB double cob = 0d; - AutosensData autosensData; - if (_synchronized) - autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("QuickWizard COB"); - else - autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensData("QuickWizard COB"); - - if (autosensData != null && useCOB() == YES) { - cob = autosensData.cob; + if (useCOB() == YES) { + CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(_synchronized, "QuickWizard COB"); + if (cobInfo.displayCob != null) + cob = cobInfo.displayCob; } // Temp target diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/CobInfo.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/CobInfo.java new file mode 100644 index 0000000000..90b72132bd --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/CobInfo.java @@ -0,0 +1,15 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator; + +import android.support.annotation.Nullable; + +public class CobInfo { + /** All COB up to now, including carbs not yet processed by IobCob calculation. */ + @Nullable + public final Double displayCob; + public final double futureCarbs; + + public CobInfo(@Nullable Double displayCob, double futureCarbs) { + this.displayCob = displayCob; + this.futureCarbs = futureCarbs; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java index 2241c256ac..4d2f7aa1f7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java @@ -34,9 +34,12 @@ import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData; import info.nightscout.androidaps.plugins.OpenAPSSMB.OpenAPSSMBPlugin; +import info.nightscout.androidaps.plugins.Treatments.Treatment; import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin; import info.nightscout.utils.DateUtil; +import static info.nightscout.utils.DateUtil.now; + /** * Created by mike on 24.04.2017. */ @@ -401,6 +404,28 @@ public class IobCobCalculatorPlugin extends PluginBase { } } + public CobInfo getCobInfo(boolean _synchronized, String reason) { + AutosensData autosensData = _synchronized ? getLastAutosensDataSynchronized(reason) : getLastAutosensData(reason); + Double displayCob = null; + double futureCarbs = 0; + long now = now(); + List treatments = TreatmentsPlugin.getPlugin().getTreatmentsFromHistory(); + + if (autosensData != null) { + displayCob = autosensData.cob; + for (Treatment treatment : treatments) { + if (IobCobCalculatorPlugin.roundUpTime(treatment.date) > autosensData.time && treatment.date < now && treatment.carbs > 0) { + displayCob += treatment.carbs; + } + } + } + for (Treatment treatment : treatments) { + if (treatment.date > now && treatment.carbs > 0) { + futureCarbs += treatment.carbs; + } + } + return new CobInfo(displayCob, futureCarbs); + } @Nullable public AutosensData getLastAutosensData(String reason) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java index edee0c838d..2aba5e47a1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java @@ -56,7 +56,7 @@ import info.nightscout.androidaps.events.EventRefreshOverview; import info.nightscout.androidaps.interfaces.Constraint; import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData; +import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo; import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; @@ -488,11 +488,9 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com // COB Double c_cob = 0d; if (cobCheckbox.isChecked()) { - AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensData("Wizard COB"); - - if (autosensData != null) { - c_cob = autosensData.cob; - } + CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "Wizard COB"); + if (cobInfo != null) + c_cob = cobInfo.displayCob; } BolusWizard wizard = new BolusWizard(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java index 40c62d21b3..93dfc9870e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java @@ -88,7 +88,7 @@ import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialo import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin; -import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData; +import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo; import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished; import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventIobCalculationProgress; @@ -1283,10 +1283,13 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, // cob if (cobView != null) { // view must not exists - String cobText = ""; - AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensData("Overview COB"); - if (autosensData != null) - cobText = (int) autosensData.cob + " g"; + String cobText = MainApp.gs(R.string.value_unavailable_short); + CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "Overview COB"); + if (cobInfo.displayCob != null) { + cobText = DecimalFormatter.to0Decimal(cobInfo.displayCob); + if (cobInfo.futureCarbs > 0) + cobText += "(" + DecimalFormatter.to0Decimal(cobInfo.futureCarbs) + ")"; + } cobView.setText(cobText); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e384efc072..dd34d68d5b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1031,4 +1031,5 @@ Bolus snooze dia divisor Max daily safety multiplier Current basal safety multiplier + n/a From 60fbb1eeba85b060e0be590329e5c19849c863d0 Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Tue, 24 Apr 2018 23:00:22 +0200 Subject: [PATCH 2/7] Fix another NPE. --- .../androidaps/plugins/Overview/Dialogs/WizardDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java index 2aba5e47a1..e15c34bac8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java @@ -489,7 +489,7 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com Double c_cob = 0d; if (cobCheckbox.isChecked()) { CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "Wizard COB"); - if (cobInfo != null) + if (cobInfo != null && cobInfo.displayCob != null) c_cob = cobInfo.displayCob; } From da96b2d87cbec4dfe7d9babae7d04f22ca7476d4 Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Tue, 24 Apr 2018 23:07:57 +0200 Subject: [PATCH 3/7] Round up to be sure. --- .../plugins/IobCobCalculator/IobCobCalculatorPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java index 4d2f7aa1f7..fe7aded027 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java @@ -414,7 +414,8 @@ public class IobCobCalculatorPlugin extends PluginBase { if (autosensData != null) { displayCob = autosensData.cob; for (Treatment treatment : treatments) { - if (IobCobCalculatorPlugin.roundUpTime(treatment.date) > autosensData.time && treatment.date < now && treatment.carbs > 0) { + if (IobCobCalculatorPlugin.roundUpTime(treatment.date) > IobCobCalculatorPlugin.roundUpTime(autosensData.time) + && treatment.date < now && treatment.carbs > 0) { displayCob += treatment.carbs; } } From b5a6ef2ecca1228f27f8010cb1d8d7d20d5dbc5c Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 25 Apr 2018 12:15:29 +0200 Subject: [PATCH 4/7] make now part of the past --- .../plugins/IobCobCalculator/IobCobCalculatorPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java index fe7aded027..b6620b4e7c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java @@ -415,7 +415,7 @@ public class IobCobCalculatorPlugin extends PluginBase { displayCob = autosensData.cob; for (Treatment treatment : treatments) { if (IobCobCalculatorPlugin.roundUpTime(treatment.date) > IobCobCalculatorPlugin.roundUpTime(autosensData.time) - && treatment.date < now && treatment.carbs > 0) { + && treatment.date <= now && treatment.carbs > 0) { displayCob += treatment.carbs; } } From 2f846bc4171dfad0c220e7ea9d2fd234d392a6f8 Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Thu, 26 Apr 2018 01:04:27 +0200 Subject: [PATCH 5/7] WatchUpdaterService: use IobCob.getCobInfo(). --- .../plugins/Wear/wearintegration/WatchUpdaterService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index a92738d336..171f37959d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -37,6 +37,7 @@ import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.TemporaryBasal; +import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo; import info.nightscout.androidaps.plugins.Treatments.Treatment; import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.TreatmentsInterface; @@ -718,9 +719,9 @@ public class WatchUpdaterService extends WearableListenerService implements private String generateCOBString() { String cobStringResult = "--"; - AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensData("WatcherUpdaterService"); - if (autosensData != null) { - cobStringResult = (int) autosensData.cob + "g"; + CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "WatcherUpdaterService"); + if (cobInfo.displayCob != null) { + cobStringResult = DecimalFormatter.to0Decimal(cobInfo.displayCob) + "g"; } return cobStringResult; } From 8d4e9f00437a8e2cae78b2e3cb17b19677281eca Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Thu, 26 Apr 2018 01:16:31 +0200 Subject: [PATCH 6/7] Add future carbs on watch. --- .../plugins/Wear/wearintegration/WatchUpdaterService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index 171f37959d..35a224c5f3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -722,6 +722,9 @@ public class WatchUpdaterService extends WearableListenerService implements CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "WatcherUpdaterService"); if (cobInfo.displayCob != null) { cobStringResult = DecimalFormatter.to0Decimal(cobInfo.displayCob) + "g"; + if (cobInfo.futureCarbs > 0) { + cobStringResult += " (" + DecimalFormatter.to0Decimal(cobInfo.futureCarbs) + ")"; + } } return cobStringResult; } From f3bc59003e487aad65cfd5e868e66c7d6dce9d9f Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Thu, 26 Apr 2018 01:33:09 +0200 Subject: [PATCH 7/7] Space-optimize COB on watch. --- .../plugins/Wear/wearintegration/WatchUpdaterService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index 35a224c5f3..0d809a7bab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -721,10 +721,11 @@ public class WatchUpdaterService extends WearableListenerService implements String cobStringResult = "--"; CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "WatcherUpdaterService"); if (cobInfo.displayCob != null) { - cobStringResult = DecimalFormatter.to0Decimal(cobInfo.displayCob) + "g"; + cobStringResult = DecimalFormatter.to0Decimal(cobInfo.displayCob); if (cobInfo.futureCarbs > 0) { - cobStringResult += " (" + DecimalFormatter.to0Decimal(cobInfo.futureCarbs) + ")"; + cobStringResult += "(" + DecimalFormatter.to0Decimal(cobInfo.futureCarbs) + ")"; } + cobStringResult += "g"; } return cobStringResult; }