From 7ab813ef22f2b11755f2159a21ab2077726d8113 Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Wed, 18 Sep 2019 17:45:18 +0100 Subject: [PATCH 1/3] - added CustomeAction for FillCanula --- .../pump/omnipod/AapsOmnipodManager.java | 8 ++--- .../pump/omnipod/OmnipodPumpPlugin.java | 34 +++++++++++++++---- .../comm/ui/OmnipodUIPostprocessor.java | 17 ++++++++-- .../pump/omnipod/comm/ui/OmnipodUITask.java | 9 +++-- .../pump/omnipod/defs/OmnipodCommandType.java | 4 ++- .../OmnipodCommunicationManagerInterface.java | 2 +- .../omnipod/defs/OmnipodCustomActionType.java | 4 ++- .../pump/omnipod/defs/PodInitActionType.java | 8 ++--- .../pump/omnipod/util/LogReceiver.java | 26 ++++++++++++++ .../omnipod_dash/OmnipodDashPumpPlugin.java | 3 +- .../comm/OmnipodDashCommunicationManager.java | 2 +- 11 files changed, 92 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/LogReceiver.java diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/AapsOmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/AapsOmnipodManager.java index 09f5c74668..725f871a9a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/AapsOmnipodManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/AapsOmnipodManager.java @@ -28,18 +28,18 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface } @Override - public PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver) { + public PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver, Profile profile) { if (PodInitActionType.PairAndPrimeWizardStep.equals(podInitActionType)) { PumpEnactResult result = delegate.pairAndPrime(); podInitReceiver.returnInitTaskStatus(podInitActionType, result.success, (result.success ? null : result.comment)); return result; - } else if(PodInitActionType.FillCannulaWizardStep.equals(podInitActionType)) { + } else if (PodInitActionType.FillCannulaSetBasalProfileWizardStep.equals(podInitActionType)) { // FIXME we need a basal profile here - PumpEnactResult result = delegate.insertCannula(null); + PumpEnactResult result = delegate.insertCannula(profile); podInitReceiver.returnInitTaskStatus(podInitActionType, result.success, (result.success ? null : result.comment)); return result; } - return new PumpEnactResult().success(false).enacted(false).comment("Illegal PodInitActionType: "+ podInitActionType.name()); + return new PumpEnactResult().success(false).enacted(false).comment("Illegal PodInitActionType: " + podInitActionType.name()); } @Override 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 88f928d10e..f48d7e006d 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,11 +51,13 @@ import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCustomActionT import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodPodType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodPumpPluginInterface; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodStatusRequest; +import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitActionType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodSessionState; import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodPumpValuesChanged; import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodRefreshButtonState; import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; import info.nightscout.androidaps.plugins.pump.omnipod.service.RileyLinkOmnipodService; +import info.nightscout.androidaps.plugins.pump.omnipod.util.LogReceiver; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; @@ -763,8 +765,11 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump private CustomAction customActionResetRLConfig = new CustomAction( R.string.medtronic_custom_action_reset_rileylink, OmnipodCustomActionType.ResetRileyLinkConfiguration, true); - protected CustomAction customActionInitPod = new CustomAction( - R.string.omnipod_cmd_init_pod, OmnipodCustomActionType.InitPod, true); + protected CustomAction customActionPairAndPrime = new CustomAction( + R.string.omnipod_cmd_init_pod, OmnipodCustomActionType.PairAndPrime, true); + + protected CustomAction customActionFillCanullaSetBasalProfile = new CustomAction( + R.string.omnipod_cmd_init_pod, OmnipodCustomActionType.FillCanulaSetBasalProfile, false); protected CustomAction customActionDeactivatePod = new CustomAction( R.string.omnipod_cmd_deactivate_pod, OmnipodCustomActionType.DeactivatePod, false); @@ -779,7 +784,8 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump if (customActions == null) { this.customActions = Arrays.asList( customActionResetRLConfig, // - customActionInitPod, // + customActionPairAndPrime, // + customActionFillCanullaSetBasalProfile, // customActionDeactivatePod, // customActionResetPod); } @@ -787,6 +793,9 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump return this.customActions; } + + LogReceiver logReceiver = new LogReceiver(); + // TODO we need to brainstorm how we want to do this -- Andy @Override public void executeCustomAction(CustomActionType customActionType) { @@ -800,8 +809,13 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump } break; - case InitPod: { - omnipodUIComm.executeCommand(OmnipodCommandType.InitPod); + case PairAndPrime: { + omnipodUIComm.executeCommand(OmnipodCommandType.PairAndPrimePod, PodInitActionType.PairAndPrimeWizardStep, logReceiver); + } + break; + + case FillCanulaSetBasalProfile: { + omnipodUIComm.executeCommand(OmnipodCommandType.FillCanulaAndSetBasalProfile, PodInitActionType.FillCannulaSetBasalProfileWizardStep, this.currentProfile, logReceiver); } break; @@ -835,11 +849,17 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump switch (customAction) { - case InitPod: { - this.customActionInitPod.setEnabled(isEnabled); + case PairAndPrime: { + this.customActionPairAndPrime.setEnabled(isEnabled); } break; + case FillCanulaSetBasalProfile: { + this.customActionFillCanullaSetBasalProfile.setEnabled(isEnabled); + } + break; + + case DeactivatePod: { this.customActionDeactivatePod.setEnabled(isEnabled); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java index 03d3a21504..e7d3810806 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java @@ -33,15 +33,26 @@ public class OmnipodUIPostprocessor { switch (uiTask.commandType) { - case InitPod: { - omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.InitPod, false); + case PairAndPrimePod: { + if (uiTask.returnData.success) { + omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.PairAndPrime, false); + omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.FillCanulaSetBasalProfile, true); + } + omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.DeactivatePod, true); + } + break; + + case FillCanulaAndSetBasalProfile: { + if (uiTask.returnData.success) { + omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.FillCanulaSetBasalProfile, false); + } omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.DeactivatePod, true); } break; case DeactivatePod: case ResetPodStatus: { - omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.InitPod, true); + omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.PairAndPrime, true); omnipodPumpPlugin.setEnableCustomAction(OmnipodCustomActionType.DeactivatePod, false); } break; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUITask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUITask.java index 3aa2b3d4c7..d8fe0a685f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUITask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUITask.java @@ -56,8 +56,13 @@ public class OmnipodUITask { // } // break; - case InitPod: - returnData = communicationManager.initPod((PodInitActionType) parameters[0], (PodInitReceiver) parameters[1]); + case PairAndPrimePod: + returnData = communicationManager.initPod((PodInitActionType) parameters[0], (PodInitReceiver) parameters[1], null); +// TODO returnData = communicationManager.pairAndPrime(); + break; + + case FillCanulaAndSetBasalProfile: + returnData = communicationManager.initPod((PodInitActionType) parameters[0], (PodInitReceiver) parameters[1], (Profile) parameters[2]); // TODO returnData = communicationManager.pairAndPrime(); break; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommandType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommandType.java index 75963932d8..ec7c34bad1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommandType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCommandType.java @@ -5,7 +5,9 @@ package info.nightscout.androidaps.plugins.pump.omnipod.defs; */ public enum OmnipodCommandType { - InitPod, // + PairAndPrimePod, // + FillCanulaAndSetBasalProfile, // + //InitPod, // DeactivatePod, // SetBasalProfile, // SetBolus, // 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 8780b69b17..4c5aa050ce 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 @@ -11,7 +11,7 @@ public interface OmnipodCommunicationManagerInterface { /** * Initialize Pod */ - PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver); + PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver, Profile profile); /** * Get Pod Status (is pod running, battery left ?, reservoir, etc) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCustomActionType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCustomActionType.java index bc75946c48..edf7181f18 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCustomActionType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodCustomActionType.java @@ -9,7 +9,9 @@ import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; public enum OmnipodCustomActionType implements CustomActionType { ResetRileyLinkConfiguration(), // - InitPod(), // + PairAndPrime(), // + FillCanulaSetBasalProfile(), // + //InitPod(), // DeactivatePod(), // ResetPodStatus(), // ; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/PodInitActionType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/PodInitActionType.java index 8b7b21148c..283b52cf64 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/PodInitActionType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/PodInitActionType.java @@ -10,9 +10,9 @@ public enum PodInitActionType { PairPod(PairAndPrimeWizardStep), // PrimePod(PairAndPrimeWizardStep), // - FillCannulaWizardStep, - FillCannula(FillCannulaWizardStep), - SetBasalProfile(FillCannulaWizardStep); + FillCannulaSetBasalProfileWizardStep, + FillCannula(FillCannulaSetBasalProfileWizardStep), + SetBasalProfile(FillCannulaSetBasalProfileWizardStep); private PodInitActionType[] parent; @@ -41,7 +41,7 @@ public enum PodInitActionType { if (podType == OmnipodPodType.Eros) { outList.add(PodInitActionType.PairAndPrimeWizardStep); - outList.add(PodInitActionType.FillCannulaWizardStep); + outList.add(PodInitActionType.FillCannulaSetBasalProfileWizardStep); } else { // TODO we might have different wizard steps, with different handling for Dash } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/LogReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/LogReceiver.java new file mode 100644 index 0000000000..71e19a2efa --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/LogReceiver.java @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitActionType; +import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitReceiver; + +public class LogReceiver implements PodInitReceiver { + + private static final Logger LOG = LoggerFactory.getLogger(LogReceiver.class); + + @Override + public void returnInitTaskStatus(PodInitActionType podInitActionType, boolean isSuccess, String errorMessage) { + + if (errorMessage != null) { + LOG.error(podInitActionType.name() + " - Success: " + isSuccess + ", Error Message: " + errorMessage); + } else { + if (isSuccess) { + LOG.info(podInitActionType.name() + " - Success: " + isSuccess); + } else { + LOG.error(podInitActionType.name() + " - NOT Succesful"); + } + } + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java index ad4a6ddd54..bbfe552458 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java @@ -271,7 +271,8 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP if (customActions == null) { this.customActions = Arrays.asList( - customActionInitPod, // + customActionPairAndPrime, // + customActionFillCanullaSetBasalProfile, // customActionDeactivatePod, // customActionResetPod); } 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 f07aa097bb..d6b4be1d8a 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 @@ -65,7 +65,7 @@ public class OmnipodDashCommunicationManager implements OmnipodCommunicationMana @Override - public PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver) { + public PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver, Profile profile) { return null; } From 529d0111c598b356bbd944840594c62d5d0d29ce Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Wed, 18 Sep 2019 18:00:30 +0100 Subject: [PATCH 2/3] - some error fixes, and changes around profile --- .../plugins/pump/omnipod/OmnipodPumpPlugin.java | 10 +++++++++- app/src/main/res/values/strings.xml | 12 ++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) 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 f48d7e006d..ad395b121a 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 @@ -61,6 +61,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.util.LogReceiver; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; /** @@ -421,7 +422,9 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump public boolean isThisProfileSet(Profile profile) { // TODO status was not yet read from pod + // TODO maybe not possible, need to see how we will handle that if (currentProfile == null) { + this.currentProfile = profile; return true; } @@ -815,7 +818,12 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump break; case FillCanulaSetBasalProfile: { - omnipodUIComm.executeCommand(OmnipodCommandType.FillCanulaAndSetBasalProfile, PodInitActionType.FillCannulaSetBasalProfileWizardStep, this.currentProfile, logReceiver); + if (this.currentProfile != null) { + omnipodUIComm.executeCommand(OmnipodCommandType.FillCanulaAndSetBasalProfile, PodInitActionType.FillCannulaSetBasalProfileWizardStep, logReceiver, this.currentProfile); + } else { + OKDialog.show(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.combo_warning), + MainApp.gs(R.string.omnipod_error_operation_not_possible_no_profile), null); + } } break; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39259e1c71..e28249ceef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,20 +4,20 @@ Afrikaans Bulgarian Dutch - + French German Greek - + Chinese - + Italian - + Korean Lithuanian Polish Portuguese - + Romanian Russian Slovak @@ -1662,6 +1662,7 @@ Operation is not possible.\n\n You need to configure Omnipod first, before you can use this operation. + Operation is not possible.\n\n You need to wait few minutes, until AAPS tries to set profile for first time. Init Pod @@ -1682,7 +1683,6 @@ Pump integration for Omnipod Dash. - %1$d day %1$d days From 4351b65a922a485467dbdb94e8a2dbf124b3fdee Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Sat, 9 Nov 2019 13:58:43 +0000 Subject: [PATCH 3/3] - changes to make driver running (no init pod yet), just fixed some running pains with driver --- .../plugins/pump/common/data/PumpStatus.java | 2 +- .../dialog/RileyLinkStatusGeneral.java | 72 +++++++--- .../tasks/InitializePumpManagerTask.java | 55 ++++++-- .../plugins/pump/omnipod/OmnipodFragment.kt | 129 ++++++++++-------- .../plugins/pump/omnipod/OmnipodManager.java | 6 + .../pump/omnipod/OmnipodPumpPlugin.java | 17 ++- .../pump/omnipod/comm/ui/OmnipodUIComm.java | 7 +- .../comm/ui/OmnipodUIPostprocessor.java | 8 +- .../omnipod/service/OmnipodPumpStatus.java | 3 + .../omnipod_dash/OmnipodDashPumpPlugin.java | 3 +- app/src/main/res/layout/omnipod_fragment.xml | 5 +- app/src/main/res/values/strings.xml | 5 + 12 files changed, 211 insertions(+), 101 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java index 11fd84a016..da86a1ce60 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java @@ -27,7 +27,7 @@ public abstract class PumpStatus { // other pump settings public String activeProfileName = "0"; - public double reservoirRemainingUnits = 0d; + public double reservoirRemainingUnits = 0.0d; public int reservoirFullUnits = 0; public int batteryRemaining = 0; // percent, so 0-100 public Double batteryVoltage = null; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java index 021d1ee068..a2d487d696 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java @@ -13,6 +13,7 @@ import java.util.Locale; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion; @@ -22,6 +23,8 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil; import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; +import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; +import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; /** * Created by andy on 5/19/18. @@ -44,6 +47,7 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter RileyLinkServiceData rileyLinkServiceData; MedtronicPumpStatus medtronicPumpStatus; + OmnipodPumpStatus omnipodPumpStatus; boolean first = false; @@ -118,31 +122,59 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter } - // TODO add handling for Omnipod pump status - this.medtronicPumpStatus = MedtronicUtil.getPumpStatus(); + if (MedtronicUtil.isMedtronicPump()) { - if (medtronicPumpStatus != null) { - this.deviceType.setText(MainApp.gs(RileyLinkTargetDevice.MedtronicPump.getResourceId())); - this.deviceModel.setText(medtronicPumpStatus.pumpType.getDescription()); - this.serialNumber.setText(medtronicPumpStatus.serialNumber); - this.pumpFrequency.setText(MainApp.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide)); + this.medtronicPumpStatus = MedtronicUtil.getPumpStatus(); - // TODO extend when Omnipod used + if (medtronicPumpStatus != null) { + this.deviceType.setText(MainApp.gs(RileyLinkTargetDevice.MedtronicPump.getResourceId())); + this.deviceModel.setText(medtronicPumpStatus.pumpType.getDescription()); + this.serialNumber.setText(medtronicPumpStatus.serialNumber); + this.pumpFrequency.setText(MainApp.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide)); - if (MedtronicUtil.getMedtronicPumpModel() != null) - this.connectedDevice.setText("Medtronic " + MedtronicUtil.getMedtronicPumpModel().getPumpModel()); - else - this.connectedDevice.setText("???"); + if (MedtronicUtil.getMedtronicPumpModel() != null) + this.connectedDevice.setText("Medtronic " + MedtronicUtil.getMedtronicPumpModel().getPumpModel()); + else + this.connectedDevice.setText("???"); - if (rileyLinkServiceData.lastGoodFrequency != null) - this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz", - rileyLinkServiceData.lastGoodFrequency)); + if (rileyLinkServiceData.lastGoodFrequency != null) + this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz", + rileyLinkServiceData.lastGoodFrequency)); + + if (medtronicPumpStatus.lastConnection != 0) + this.lastDeviceContact.setText(StringUtil.toDateTimeString(new LocalDateTime( + medtronicPumpStatus.lastDataTime))); + else + this.lastDeviceContact.setText(MainApp.gs(R.string.common_never)); + } + } else { + + // TODO add handling for Omnipod Dash pump status + this.omnipodPumpStatus = OmnipodUtil.getPumpStatus(); + + if (omnipodPumpStatus != null) { + this.deviceType.setText(MainApp.gs(RileyLinkTargetDevice.Omnipod.getResourceId())); + this.deviceModel.setText(omnipodPumpStatus.pumpType== PumpType.Insulet_Omnipod ? "Eros" : "Dash"); + this.pumpFrequency.setText(MainApp.gs(R.string.omnipod_frequency)); + + if (omnipodPumpStatus.podAvailable) { + this.serialNumber.setText(omnipodPumpStatus.podNumber); + this.connectedDevice.setText(omnipodPumpStatus.pumpType== PumpType.Insulet_Omnipod ? "Eros Pod" : "Dash Pod"); + } else { + this.connectedDevice.setText("-"); + } + + if (rileyLinkServiceData.lastGoodFrequency != null) + this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz", + rileyLinkServiceData.lastGoodFrequency)); + + if (omnipodPumpStatus.lastConnection != 0) + this.lastDeviceContact.setText(StringUtil.toDateTimeString(new LocalDateTime( + omnipodPumpStatus.lastDataTime))); + else + this.lastDeviceContact.setText(MainApp.gs(R.string.common_never)); + } - if (medtronicPumpStatus.lastConnection != 0) - this.lastDeviceContact.setText(StringUtil.toDateTimeString(new LocalDateTime( - medtronicPumpStatus.lastDataTime))); - else - this.lastDeviceContact.setText("Never"); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java index 9856b21b66..64318cf0bd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java @@ -8,11 +8,13 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst; +import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; import info.nightscout.androidaps.utils.SP; /** @@ -42,7 +44,7 @@ public class InitializePumpManagerTask extends ServiceTask { double lastGoodFrequency = 0.0d; - if (RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency==null) { + if (RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency == null) { lastGoodFrequency = SP.getDouble(RileyLinkConst.Prefs.LastGoodDeviceFrequency, 0.0d); lastGoodFrequency = Math.round(lastGoodFrequency * 1000d) / 1000d; @@ -56,28 +58,55 @@ public class InitializePumpManagerTask extends ServiceTask { lastGoodFrequency = RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency; } - if ((lastGoodFrequency > 0.0d) - && RileyLinkUtil.getRileyLinkCommunicationManager().isValidFrequency(lastGoodFrequency)) { + + if (MedtronicUtil.isMedtronicPump()) { + + if ((lastGoodFrequency > 0.0d) + && RileyLinkUtil.getRileyLinkCommunicationManager().isValidFrequency(lastGoodFrequency)) { + + RileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkReady); + + if (L.isEnabled(L.PUMPCOMM)) + LOG.info("Setting radio frequency to {} MHz", lastGoodFrequency); + + RileyLinkUtil.getRileyLinkCommunicationManager().setRadioFrequencyForPump(lastGoodFrequency); + + boolean foundThePump = RileyLinkUtil.getRileyLinkCommunicationManager().tryToConnectToDevice(); + + if (foundThePump) { + RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); + } else { + RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorError, + RileyLinkError.NoContactWithDevice); + RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); + } + + } else { + RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); + } + } else { + + if (!RileyLinkUtil.isSame(lastGoodFrequency, RileyLinkTargetFrequency.Omnipod.getScanFrequencies()[0])) { + lastGoodFrequency = RileyLinkTargetFrequency.Omnipod.getScanFrequencies()[0]; + lastGoodFrequency = Math.round(lastGoodFrequency * 1000d) / 1000d; + + RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency = lastGoodFrequency; + } + RileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkReady); + RileyLinkUtil.setRileyLinkTargetFrequency(RileyLinkTargetFrequency.Omnipod); if (L.isEnabled(L.PUMPCOMM)) LOG.info("Setting radio frequency to {} MHz", lastGoodFrequency); RileyLinkUtil.getRileyLinkCommunicationManager().setRadioFrequencyForPump(lastGoodFrequency); - boolean foundThePump = RileyLinkUtil.getRileyLinkCommunicationManager().tryToConnectToDevice(); - if (foundThePump) { - RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); - } else { - RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorError, - RileyLinkError.NoContactWithDevice); - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); - } + LOG.error("TRYYYYYY TO CONNECT IF AVAILABLE"); + + RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); - } else { - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodFragment.kt index 9f088046eb..c56958ec93 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodFragment.kt @@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory class OmnipodFragment : Fragment() { private val log = LoggerFactory.getLogger(L.PUMP) private var disposable: CompositeDisposable = CompositeDisposable() + private var podAvailable = false operator fun CompositeDisposable.plusAssign(disposable: Disposable) { add(disposable) @@ -68,7 +69,7 @@ class OmnipodFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - omnipod_pod_status.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder)) + //omnipod_pod_status.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder)) omnipod_rl_status.text = MainApp.gs(RileyLinkServiceState.NotStarted.getResourceId(RileyLinkTargetDevice.Omnipod)) @@ -199,9 +200,11 @@ class OmnipodFragment : Fragment() { if (pumpStatus.podSessionState == null) { omnipod_pod_address.text = MainApp.gs(R.string.omnipod_pod_name_no_info) omnipod_pod_expiry.text = "-" - omnipod_pod_status.text = "{fa-bed} " + omnipod_pod_status.text = MainApp.gs(R.string.omnipod_pod_no_pod_connected) + pumpStatus.podAvailable = false } else { - + podAvailable = true + pumpStatus.podAvailable = true omnipod_pod_address.text = pumpStatus.podSessionState.address.toString() omnipod_pod_expiry.text = pumpStatus.podSessionState.expiryDateAsString @@ -307,70 +310,86 @@ class OmnipodFragment : Fragment() { setDeviceStatus() + if (podAvailable) { // last connection - if (pumpStatus.lastConnection != 0L) { - val minAgo = DateUtil.minAgo(pumpStatus.lastConnection) - val min = (System.currentTimeMillis() - pumpStatus.lastConnection) / 1000 / 60 - if (pumpStatus.lastConnection + 60 * 1000 > System.currentTimeMillis()) { - omnipod_lastconnection.setText(R.string.combo_pump_connected_now) - omnipod_lastconnection.setTextColor(Color.WHITE) - } else if (pumpStatus.lastConnection + 30 * 60 * 1000 < System.currentTimeMillis()) { + if (pumpStatus.lastConnection != 0L) { + val minAgo = DateUtil.minAgo(pumpStatus.lastConnection) + val min = (System.currentTimeMillis() - pumpStatus.lastConnection) / 1000 / 60 + if (pumpStatus.lastConnection + 60 * 1000 > System.currentTimeMillis()) { + omnipod_lastconnection.setText(R.string.combo_pump_connected_now) + omnipod_lastconnection.setTextColor(Color.WHITE) + } else if (pumpStatus.lastConnection + 30 * 60 * 1000 < System.currentTimeMillis()) { - if (min < 60) { - omnipod_lastconnection.text = MainApp.gs(R.string.minago, min) - } else if (min < 1440) { - val h = (min / 60).toInt() - omnipod_lastconnection.text = (MainApp.gq(R.plurals.objective_hours, h, h) + " " - + MainApp.gs(R.string.ago)) + if (min < 60) { + omnipod_lastconnection.text = MainApp.gs(R.string.minago, min) + } else if (min < 1440) { + val h = (min / 60).toInt() + omnipod_lastconnection.text = (MainApp.gq(R.plurals.objective_hours, h, h) + " " + + MainApp.gs(R.string.ago)) + } else { + val h = (min / 60).toInt() + val d = h / 24 + // h = h - (d * 24); + omnipod_lastconnection.text = (MainApp.gq(R.plurals.objective_days, d, d) + " " + + MainApp.gs(R.string.ago)) + } + omnipod_lastconnection.setTextColor(Color.RED) } else { - val h = (min / 60).toInt() - val d = h / 24 - // h = h - (d * 24); - omnipod_lastconnection.text = (MainApp.gq(R.plurals.objective_days, d, d) + " " - + MainApp.gs(R.string.ago)) + omnipod_lastconnection.text = minAgo + omnipod_lastconnection.setTextColor(Color.WHITE) } - omnipod_lastconnection.setTextColor(Color.RED) - } else { - omnipod_lastconnection.text = minAgo - omnipod_lastconnection.setTextColor(Color.WHITE) } - } - // last bolus - val bolus = pumpStatus.lastBolusAmount - val bolusTime = pumpStatus.lastBolusTime - if (bolus != null && bolusTime != null) { - val agoMsc = System.currentTimeMillis() - pumpStatus.lastBolusTime.time - val bolusMinAgo = agoMsc.toDouble() / 60.0 / 1000.0 - val unit = MainApp.gs(R.string.insulin_unit_shortname) - val ago: String - if (agoMsc < 60 * 1000) { - ago = MainApp.gs(R.string.combo_pump_connected_now) - } else if (bolusMinAgo < 60) { - ago = DateUtil.minAgo(pumpStatus.lastBolusTime.time) + // last bolus + val bolus = pumpStatus.lastBolusAmount + val bolusTime = pumpStatus.lastBolusTime + if (bolus != null && bolusTime != null && podAvailable) { + val agoMsc = System.currentTimeMillis() - pumpStatus.lastBolusTime.time + val bolusMinAgo = agoMsc.toDouble() / 60.0 / 1000.0 + val unit = MainApp.gs(R.string.insulin_unit_shortname) + val ago: String + if (agoMsc < 60 * 1000) { + ago = MainApp.gs(R.string.combo_pump_connected_now) + } else if (bolusMinAgo < 60) { + ago = DateUtil.minAgo(pumpStatus.lastBolusTime.time) + } else { + ago = DateUtil.hourAgo(pumpStatus.lastBolusTime.time) + } + omnipod_lastbolus.text = MainApp.gs(R.string.combo_last_bolus, bolus, unit, ago) } else { - ago = DateUtil.hourAgo(pumpStatus.lastBolusTime.time) + omnipod_lastbolus.text = "" } - omnipod_lastbolus.text = MainApp.gs(R.string.combo_last_bolus, bolus, unit, ago) + + // base basal rate + + omnipod_basabasalrate.text = MainApp.gs(R.string.pump_basebasalrate, plugin.baseBasalRate) + + omnipod_tempbasal.text = TreatmentsPlugin.getPlugin() + .getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: "" + + // reservoir + if (RileyLinkUtil.isSame(pumpStatus.reservoirRemainingUnits, 75.0)) { + omnipod_reservoir.text = MainApp.gs(R.string.omnipod_reservoir_over50) + } else { + omnipod_reservoir.text = MainApp.gs(R.string.omnipod_reservoir_left, pumpStatus.reservoirRemainingUnits) + } + SetWarnColor.setColorInverse(omnipod_reservoir, pumpStatus.reservoirRemainingUnits, 50.0, 20.0) + } else { + omnipod_basabasalrate.text = "" + omnipod_reservoir.text = "" + omnipod_tempbasal.text = "" omnipod_lastbolus.text = "" + omnipod_lastconnection.text = "" + omnipod_lastconnection.setTextColor(Color.WHITE) + } - // base basal rate - omnipod_basabasalrate.text = ("(" + pumpStatus.activeProfileName + ") " - + MainApp.gs(R.string.pump_basebasalrate, plugin.baseBasalRate)) - - omnipod_tempbasal.text = TreatmentsPlugin.getPlugin() - .getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: "" - - // reservoir - if (RileyLinkUtil.isSame(pumpStatus.reservoirRemainingUnits, 0.0)) { - omnipod_reservoir.text = MainApp.gs(R.string.omnipod_reservoir_over50) - } else { - omnipod_reservoir.text = MainApp.gs(R.string.omnipod_reservoir_left, pumpStatus.reservoirRemainingUnits) - } - SetWarnColor.setColorInverse(omnipod_reservoir, pumpStatus.reservoirRemainingUnits, 50.0, 20.0) - omnipod_errors.text = pumpStatus.errorInfo + + omnipod_pod_active_alerts_ack.isEnabled = pumpStatus.ackAlertsAvailable + + omnipod_refresh.isEnabled = pumpStatus.podAvailable + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodManager.java index 200512b121..335c3a6224 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodManager.java @@ -21,6 +21,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.DeactivatePod import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.GetPodInfoAction; import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.GetStatusAction; import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.InsertCannulaAction; +import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.OmnipodAction; import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.PairAction; import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.PrimeAction; import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.SetBasalScheduleAction; @@ -345,4 +346,9 @@ public class OmnipodManager { // TODO use string resource return new PumpEnactResult().success(false).enacted(false).comment("Pod should be initialized first"); } + + private void addToHistory(long requestTime, OmnipodAction omnipodAction, long responseTime) { + // TODO andy + } + } \ No newline at end of file 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 d537187681..94d9038bc0 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 @@ -113,10 +113,10 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump OmnipodUtil.setOmnipodPodType(OmnipodPodType.Eros); if (omnipodCommunicationManager == null) { - omnipodCommunicationManager = AapsOmnipodManager.getInstance(); + //omnipodCommunicationManager = AapsOmnipodManager.getInstance(); } - omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager); + omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, this, this.pumpStatusLocal); OmnipodUtil.setPlugin(this); @@ -255,7 +255,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump if (isServiceSet()) { - if (isBusy) + if (isBusy || !pumpStatusLocal.podAvailable) return true; if (busyTimestamps.size() > 0) { @@ -313,6 +313,11 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump } + @Override + public boolean isSuspended() { + return (pumpStatusLocal!=null && !pumpStatusLocal.podAvailable); + } + @Override public void getPumpStatus() { @@ -487,6 +492,12 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump } + @Override + public boolean isFakingTempsByExtendedBoluses() { + return false; + } + + @Override @NonNull protected PumpEnactResult deliverBolus(final DetailedBolusInfo detailedBolusInfo) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIComm.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIComm.java index b5f6d4136b..be45c9f7e7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIComm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIComm.java @@ -4,8 +4,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunicationManagerInterface; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType; +import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; /** @@ -16,15 +18,16 @@ public class OmnipodUIComm { private static final Logger LOG = LoggerFactory.getLogger(L.PUMP); OmnipodCommunicationManagerInterface ocmInstance = null; - OmnipodUIPostprocessor uiPostprocessor = new OmnipodUIPostprocessor(); + OmnipodUIPostprocessor uiPostprocessor; // = new OmnipodUIPostprocessor(); private OmnipodCommunicationManagerInterface getCommunicationManager() { return ocmInstance; } - public OmnipodUIComm(OmnipodCommunicationManagerInterface communicationManager) { + public OmnipodUIComm(OmnipodCommunicationManagerInterface communicationManager, OmnipodPumpPlugin plugin, OmnipodPumpStatus status) { ocmInstance = communicationManager; + uiPostprocessor = new OmnipodUIPostprocessor(plugin, status); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java index e7d3810806..ebcf7c17da 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java @@ -21,9 +21,11 @@ public class OmnipodUIPostprocessor { OmnipodPumpPlugin omnipodPumpPlugin; - public OmnipodUIPostprocessor() { - pumpStatus = OmnipodUtil.getPumpStatus(); - omnipodPumpPlugin = OmnipodPumpPlugin.getPlugin(); + public OmnipodUIPostprocessor(OmnipodPumpPlugin plugin, OmnipodPumpStatus pumpStatus) { +// pumpStatus = OmnipodUtil.getPumpStatus(); +// omnipodPumpPlugin = OmnipodPumpPlugin.getPlugin(); + this.pumpStatus = pumpStatus; + this.omnipodPumpPlugin = plugin; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/OmnipodPumpStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/OmnipodPumpStatus.java index 184ce358e8..15e8e99cb8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/OmnipodPumpStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/OmnipodPumpStatus.java @@ -48,6 +48,8 @@ public class OmnipodPumpStatus extends PumpStatus { public String podNumber; public PodDeviceState podDeviceState = PodDeviceState.NeverContacted; + public boolean podAvailable = false; + public boolean ackAlertsAvailable = false; public OmnipodPumpStatus(PumpDescription pumpDescription) { @@ -63,6 +65,7 @@ public class OmnipodPumpStatus extends PumpStatus { this.lastConnection = SP.getLong(OmnipodConst.Statistics.LastGoodPumpCommunicationTime, 0L); this.lastDataTime = new LocalDateTime(this.lastConnection); this.pumpType = PumpType.Insulet_Omnipod; + this.podAvailable = false; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java index ec9f353a05..5522459e94 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod_dash/OmnipodDashPumpPlugin.java @@ -61,7 +61,6 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP private OmnipodDashPumpPlugin() { - super(new PluginDescription() // .mainType(PluginType.PUMP) // .fragmentClass(OmnipodFragment.class.getName()) // @@ -80,7 +79,7 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP omnipodCommunicationManager = OmnipodDashCommunicationManager.getInstance(); } - omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager); + omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, this, this.pumpStatusLocal); OmnipodUtil.setPlugin(this); diff --git a/app/src/main/res/layout/omnipod_fragment.xml b/app/src/main/res/layout/omnipod_fragment.xml index 165c7ed410..0c23e847ca 100644 --- a/app/src/main/res/layout/omnipod_fragment.xml +++ b/app/src/main/res/layout/omnipod_fragment.xml @@ -206,8 +206,9 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="start" - android:paddingLeft="5dp" - android:text="{fa-bluetooth-b}" + android:paddingStart="5dp" + android:paddingEnd="5dp" + android:text="" android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a1a03b2385..9d2d204f06 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1470,6 +1470,7 @@ Scanning Scanning finished Scanning error: %1$d + Never @@ -1631,9 +1632,13 @@ Pod Address Pod Expires No info + No Pod connected Active Pod Alerts Ack Alerts + + Omnipod (433.91 MHz) + Operation is not possible.\n\n You need to configure Omnipod first, before you can use this operation.