diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/OmnipodModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/OmnipodModule.kt index dc8f3ddc77..a47a316fd2 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/OmnipodModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/OmnipodModule.kt @@ -1,7 +1,11 @@ package info.nightscout.androidaps.dependencyInjection import dagger.Module +import dagger.Provides import dagger.android.ContributesAndroidInjector +import info.nightscout.androidaps.logging.AAPSLogger +import info.nightscout.androidaps.plugins.bus.RxBusWrapper +import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunicationManager import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.PodHistoryActivity @@ -11,8 +15,13 @@ import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.initpod.In import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.pages.InitPodRefreshAction import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.pages.PodInfoFragment import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.removepod.RemoveActionFragment +import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus +import info.nightscout.androidaps.plugins.pump.omnipod.driver.comm.AapsOmnipodManager import info.nightscout.androidaps.plugins.pump.omnipod.driver.comm.AapsPodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUITask +import info.nightscout.androidaps.utils.resources.ResourceHelper +import info.nightscout.androidaps.utils.sharedPreferences.SP +import javax.inject.Singleton @Module @Suppress("unused") @@ -31,13 +40,20 @@ abstract class OmnipodModule { // Service @ContributesAndroidInjector abstract fun omnipodCommunicationManagerProvider(): OmnipodCommunicationManager + @ContributesAndroidInjector abstract fun aapsOmnipodManagerProvider(): AapsOmnipodManager // Data @ContributesAndroidInjector abstract fun omnipodUITaskProvider(): OmnipodUITask @ContributesAndroidInjector abstract fun initPodRefreshAction(): InitPodRefreshAction @ContributesAndroidInjector abstract fun podStateManager(): PodStateManager @ContributesAndroidInjector abstract fun initPodTask(): InitPodTask + @ContributesAndroidInjector abstract fun omnipodPumpPlugin(): OmnipodPumpPlugin - @ContributesAndroidInjector abstract fun initAapsPodStateManager(): AapsPodStateManager - + companion object { + @Provides + @Singleton + fun podStateManagerProvider(aapsLogger: AAPSLogger, sp: SP, omnipodPumpStatus: OmnipodPumpStatus, + rxBus: RxBusWrapper, resourceHelper: ResourceHelper): PodStateManager = + AapsPodStateManager(aapsLogger, sp, omnipodPumpStatus, rxBus, resourceHelper) + } } 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 2c82dab36d..ff44fd1d4d 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 @@ -23,6 +23,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodStatusRequest import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodDeviceState +import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.PodManagementActivity import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus @@ -60,6 +61,7 @@ class OmnipodFragment : DaggerFragment() { @Inject lateinit var omnipodPumpPlugin: OmnipodPumpPlugin @Inject lateinit var warnColors: WarnColors @Inject lateinit var omnipodPumpStatus: OmnipodPumpStatus + @Inject lateinit var podStateManager: PodStateManager @Inject lateinit var sp: SP @Inject lateinit var omnipodUtil: OmnipodUtil @Inject lateinit var rileyLinkServiceData: RileyLinkServiceData @@ -264,27 +266,27 @@ class OmnipodFragment : DaggerFragment() { omnipodPumpStatus.podAvailable = false omnipodPumpStatus.podNumber == null } else if (driverState == OmnipodDriverState.Initalized_PodInitializing) { - omnipod_pod_address.text = omnipodPumpStatus.podStateManager.address.toString() + omnipod_pod_address.text = podStateManager.address.toString() omnipod_pod_lot.text = "-" omnipod_pod_tid.text = "-" omnipod_pod_fw_version.text = "-" omnipod_pod_expiry.text = "-" - omnipod_pod_status.text = resourceHelper.gs(R.string.omnipod_pod_status_initalizing) + " (" + omnipodPumpStatus.podStateManager.getSetupProgress().name + ")" + omnipod_pod_status.text = resourceHelper.gs(R.string.omnipod_pod_status_initalizing) + " (" + podStateManager.getSetupProgress().name + ")" omnipodPumpStatus.podAvailable = false - omnipodPumpStatus.podNumber == omnipodPumpStatus.podStateManager.address.toString() + omnipodPumpStatus.podNumber == podStateManager.address.toString() } else { - omnipodPumpStatus.podLotNumber = "" + omnipodPumpStatus.podStateManager.lot + omnipodPumpStatus.podLotNumber = "" + podStateManager.lot omnipodPumpStatus.podAvailable = true - omnipod_pod_address.text = omnipodPumpStatus.podStateManager.address.toString() - omnipod_pod_lot.text = if (omnipodPumpStatus.podStateManager.lot == null) "" else omnipodPumpStatus.podStateManager.lot.toString() - omnipod_pod_tid.text = if (omnipodPumpStatus.podStateManager.tid == null) "" else omnipodPumpStatus.podStateManager.tid.toString() - if (omnipodPumpStatus.podStateManager.pmVersion == null || omnipodPumpStatus.podStateManager.piVersion == null) { + omnipod_pod_address.text = podStateManager.address.toString() + omnipod_pod_lot.text = if (podStateManager.lot == null) "" else podStateManager.lot.toString() + omnipod_pod_tid.text = if (podStateManager.tid == null) "" else podStateManager.tid.toString() + if (podStateManager.pmVersion == null || podStateManager.piVersion == null) { omnipod_pod_fw_version.text = "" } else { - omnipod_pod_fw_version.text = omnipodPumpStatus.podStateManager.pmVersion.toString() + " / " + omnipodPumpStatus.podStateManager.piVersion.toString() + omnipod_pod_fw_version.text = podStateManager.pmVersion.toString() + " / " + podStateManager.piVersion.toString() } - omnipod_pod_expiry.text = omnipodPumpStatus.podStateManager.expiryDateAsString - omnipodPumpStatus.podNumber = omnipodPumpStatus.podStateManager.address.toString() + omnipod_pod_expiry.text = podStateManager.expiryDateAsString + omnipodPumpStatus.podNumber = podStateManager.address.toString() var podDeviceState = omnipodPumpStatus.podDeviceState @@ -327,13 +329,13 @@ class OmnipodFragment : DaggerFragment() { } } - if (omnipodPumpStatus.podStateManager.isSetupCompleted) { - if (omnipodPumpStatus.podStateManager.lastDeliveryStatus != null) { - stateText += " (last delivery status: " + omnipodPumpStatus.podStateManager.lastDeliveryStatus.name + ")" + if (podStateManager.isSetupCompleted) { + if (podStateManager.lastDeliveryStatus != null) { + stateText += " (last delivery status: " + podStateManager.lastDeliveryStatus.name + ")" } } else { - if (omnipodPumpStatus.podStateManager.isPaired) { - stateText += " (setup progress: " + omnipodPumpStatus.podStateManager.setupProgress.name + ")" + if (podStateManager.isPaired) { + stateText += " (setup progress: " + podStateManager.setupProgress.name + ")" } } 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 1b8db8f50f..49b7faa7fe 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 @@ -90,6 +90,7 @@ import io.reactivex.schedulers.Schedulers; public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPumpPluginInterface, RileyLinkPumpDevice { // TODO Dagger (maybe done) + @Inject protected PodStateManager podStateManager; private static OmnipodPumpPlugin plugin = null; private RileyLinkServiceData rileyLinkServiceData; private ServiceTaskExecutor serviceTaskExecutor; @@ -149,6 +150,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump PumpType.Insulet_Omnipod, injector, resourceHelper, aapsLogger, commandQueue, rxBus, activePlugin, sp, context, fabricPrivacy ); + injector.androidInjector().inject(this); this.rileyLinkServiceData = rileyLinkServiceData; this.serviceTaskExecutor = serviceTaskExecutor; @@ -197,6 +199,10 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump if (isOmnipodEros) { + // We can't do this in PodStateManager itself, because JodaTimeAndroid.init() hasn't been called yet + // When PodStateManager is created, which causes an IllegalArgumentException for DateTimeZones not being recognized + podStateManager.loadPodState(); + serviceConnection = new ServiceConnection() { @Override @@ -486,8 +492,8 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump @Override public boolean isSuspended() { - return (omnipodUtil.getDriverState() == OmnipodDriverState.Initalized_NoPod) || - (omnipodUtil.getPodStateManager().hasState() && omnipodUtil.getPodStateManager().isSuspended()); + return omnipodUtil.getDriverState() == OmnipodDriverState.Initalized_NoPod || + !podStateManager.isSetupCompleted() || podStateManager.isSuspended(); // return (pumpStatusLocal != null && !pumpStatusLocal.podAvailable) || // (omnipodUtil.getPodStateManager().hasState() && OmnipodUtil.getPodStateManager().isSuspended()); @@ -613,8 +619,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump private void initializePump(boolean realInit) { - - aapsLogger.info(LTag.PUMP, getLogPrefix() + "initializePump - start"); // TODO ccc @@ -622,7 +626,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump setRefreshButtonEnabled(false); - PodStateManager podStateManager = omnipodUtil.getPodStateManager(); if (podStateManager.isPaired()) { aapsLogger.debug(LTag.PUMP, "PodStateManager (saved): " + podStateManager); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/state/PodStateManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/state/PodStateManager.java index 1956c696ac..4cbb965244 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/state/PodStateManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/state/PodStateManager.java @@ -6,6 +6,8 @@ import com.google.gson.JsonDeserializer; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializer; +import net.danlew.android.joda.JodaTimeAndroid; + import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodManagementActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodManagementActivity.kt index c80fa1462b..b03332828a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodManagementActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodManagementActivity.kt @@ -15,6 +15,7 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction import info.nightscout.androidaps.plugins.pump.omnipod.defs.SetupProgress +import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.defs.PodActionType import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.model.FullInitPodWizardModel import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.model.RemovePodWizardModel @@ -42,6 +43,7 @@ class PodManagementActivity : NoSplashAppCompatActivity() { @Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var omnipodUtil: OmnipodUtil + @Inject lateinit var podStateManager: PodStateManager @Inject lateinit var injector: HasAndroidInjector private var initPodChanged = false @@ -98,7 +100,6 @@ class PodManagementActivity : NoSplashAppCompatActivity() { wizardPagerContext.clearContext() wizardPagerContext.pagerSettings = pagerSettings - val podStateManager = omnipodUtil.getPodStateManager() val isFullInit = !podStateManager.isPaired || podStateManager.setupProgress.isBefore(SetupProgress.PRIMING_FINISHED) if (isFullInit) { wizardPagerContext.wizardModel = FullInitPodWizardModel(applicationContext) @@ -150,11 +151,11 @@ class PodManagementActivity : NoSplashAppCompatActivity() { } fun refreshButtons() { - initpod_init_pod.isEnabled = !omnipodUtil.podStateManager.isPaired() || - omnipodUtil.getPodStateManager().getSetupProgress().isBefore(SetupProgress.COMPLETED) + initpod_init_pod.isEnabled = !podStateManager.isPaired() || + podStateManager.getSetupProgress().isBefore(SetupProgress.COMPLETED) - initpod_remove_pod.isEnabled = omnipodUtil.podStateManager.hasState() && omnipodUtil.podStateManager.isPaired - initpod_reset_pod.isEnabled = omnipodUtil.podStateManager.hasState() + initpod_remove_pod.isEnabled = podStateManager.hasState() && podStateManager.isPaired + initpod_reset_pod.isEnabled = podStateManager.hasState() if (omnipodUtil.getDriverState() == OmnipodDriverState.NotInitalized) { // if rileylink is not running we disable all operations diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/InitPodRefreshAction.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/InitPodRefreshAction.java index d6b9734233..3d3d5d02d5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/InitPodRefreshAction.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/InitPodRefreshAction.java @@ -16,6 +16,7 @@ import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; import info.nightscout.androidaps.plugins.pump.omnipod.defs.SetupProgress; +import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.PodManagementActivity; import info.nightscout.androidaps.plugins.pump.omnipod.dialogs.wizard.defs.PodActionType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState; @@ -33,6 +34,7 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish private PodActionType actionType; @Inject OmnipodUtil omnipodUtil; + @Inject PodStateManager podStateManager; @Inject AAPSLogger aapsLogger; @Inject SP sp; @@ -58,7 +60,7 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish @Override public void execute() { if (actionType == PodActionType.InitPod) { - if (omnipodUtil.getPodStateManager().getSetupProgress().isBefore(SetupProgress.COMPLETED)) { + if (podStateManager.getSetupProgress().isBefore(SetupProgress.COMPLETED)) { omnipodUtil.setDriverState(OmnipodDriverState.Initalized_PodInitializing); } else { omnipodUtil.setDriverState(OmnipodDriverState.Initalized_PodAttached); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/PodInfoFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/PodInfoFragment.java index 9f8df4a783..a0369832bd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/PodInfoFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/wizard/pages/PodInfoFragment.java @@ -30,6 +30,7 @@ public class PodInfoFragment extends DaggerFragment { private static final String ARG_KEY = "key"; @Inject OmnipodUtil omnipodUtil; + @Inject PodStateManager podStateManager; private PageFragmentCallbacks mCallbacks; private String mKey; @@ -84,9 +85,6 @@ public class PodInfoFragment extends DaggerFragment { } private boolean createDataOfPod() { - - PodStateManager podStateManager = omnipodUtil.getPodStateManager(); - if (podStateManager == null) return false; @@ -96,7 +94,7 @@ public class PodInfoFragment extends DaggerFragment { if (podStateManager.getLot() != null) { mCurrentReviewItems.add(new ReviewItem("LOT", "" + podStateManager.getLot(), "35")); } - if(podStateManager.getTid() != null) { + if (podStateManager.getTid() != null) { mCurrentReviewItems.add(new ReviewItem("TID", "" + podStateManager.getLot(), "36")); } if (podStateManager.getPiVersion() != null) { 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 e01acd7d9c..232fde6da1 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 @@ -16,7 +16,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodDeviceState; -import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodDeviceStatusChange; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; import info.nightscout.androidaps.utils.resources.ResourceHelper; @@ -46,7 +45,6 @@ public class OmnipodPumpStatus extends PumpStatus { public Double tempBasalAmount = 0.0d; public Integer tempBasalLength; public long tempBasalPumpId; - public PodStateManager podStateManager; public PumpType pumpType; public String regexMac = "([\\da-fA-F]{1,2}(?:\\:|$)){6}"; @@ -141,7 +139,6 @@ public class OmnipodPumpStatus extends PumpStatus { ", tempBasalEnd=" + tempBasalEnd + ", tempBasalAmount=" + tempBasalAmount + ", tempBasalLength=" + tempBasalLength + - ", podStateManager=" + podStateManager + ", regexMac='" + regexMac + '\'' + ", podNumber='" + podNumber + '\'' + ", podDeviceState=" + podDeviceState + diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsPodStateManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsPodStateManager.java index 1d365c6dba..d5f8c95d72 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsPodStateManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsPodStateManager.java @@ -9,6 +9,9 @@ import java.util.Date; import java.util.List; import java.util.Objects; +import javax.inject.Inject; +import javax.inject.Singleton; + import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.Event; import info.nightscout.androidaps.events.EventRefreshOverview; @@ -21,24 +24,23 @@ import info.nightscout.androidaps.plugins.pump.omnipod.defs.AlertType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus; import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodAcknowledgeAlertsChanged; +import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodDeviceStatusChange; import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodPumpValuesChanged; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; -import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; import info.nightscout.androidaps.utils.sharedPreferences.SP; +@Singleton public class AapsPodStateManager extends PodStateManager { - private final AAPSLogger aapsLogger; private final SP sp; - private final OmnipodUtil omnipodUtil; private final OmnipodPumpStatus omnipodPumpStatus; private final RxBusWrapper rxBus; private final ResourceHelper resourceHelper; - public AapsPodStateManager(AAPSLogger aapsLogger, SP sp, OmnipodUtil omnipodUtil, - OmnipodPumpStatus omnipodPumpStatus, RxBusWrapper rxBus, - ResourceHelper resourceHelper) { + @Inject + public AapsPodStateManager(AAPSLogger aapsLogger, SP sp, OmnipodPumpStatus omnipodPumpStatus, + RxBusWrapper rxBus, ResourceHelper resourceHelper) { super(aapsLogger); if (aapsLogger == null) { @@ -47,9 +49,6 @@ public class AapsPodStateManager extends PodStateManager { if (sp == null) { throw new IllegalArgumentException("sp can not be null"); } - if (omnipodUtil == null) { - throw new IllegalArgumentException("omnipodUtil can not be null"); - } if (omnipodPumpStatus == null) { throw new IllegalArgumentException("omnipodPumpStatus can not be null"); } @@ -62,7 +61,6 @@ public class AapsPodStateManager extends PodStateManager { this.aapsLogger = aapsLogger; this.sp = sp; - this.omnipodUtil = omnipodUtil; this.omnipodPumpStatus = omnipodPumpStatus; this.rxBus = rxBus; this.resourceHelper = resourceHelper; @@ -80,58 +78,56 @@ public class AapsPodStateManager extends PodStateManager { @Override protected void notifyPodStateChanged() { - if (omnipodPumpStatus != null) { - if (!hasState()) { - omnipodPumpStatus.ackAlertsText = null; - omnipodPumpStatus.ackAlertsAvailable = false; - omnipodPumpStatus.lastBolusTime = null; - omnipodPumpStatus.lastBolusAmount = null; - omnipodPumpStatus.reservoirRemainingUnits = 0.0; - omnipodPumpStatus.pumpStatusType = PumpStatusType.Suspended; - sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); - sendEvent(new EventOmnipodPumpValuesChanged()); - sendEvent(new EventRefreshOverview("Omnipod Pump", false)); - } else { - // Update active alerts - if (hasActiveAlerts()) { - List alerts = getTranslatedActiveAlerts(); - String alertsText = TextUtils.join("\n", alerts); + if (!hasState()) { + omnipodPumpStatus.ackAlertsText = null; + omnipodPumpStatus.ackAlertsAvailable = false; + omnipodPumpStatus.lastBolusTime = null; + omnipodPumpStatus.lastBolusAmount = null; + omnipodPumpStatus.reservoirRemainingUnits = 0.0; + omnipodPumpStatus.pumpStatusType = PumpStatusType.Suspended; + sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); + sendEvent(new EventOmnipodPumpValuesChanged()); + sendEvent(new EventRefreshOverview("Omnipod Pump", false)); + } else { + // Update active alerts + if (hasActiveAlerts()) { + List alerts = getTranslatedActiveAlerts(); + String alertsText = TextUtils.join("\n", alerts); - if (!omnipodPumpStatus.ackAlertsAvailable || !alertsText.equals(omnipodPumpStatus.ackAlertsText)) { - omnipodPumpStatus.ackAlertsAvailable = true; - omnipodPumpStatus.ackAlertsText = TextUtils.join("\n", alerts); + if (!omnipodPumpStatus.ackAlertsAvailable || !alertsText.equals(omnipodPumpStatus.ackAlertsText)) { + omnipodPumpStatus.ackAlertsAvailable = true; + omnipodPumpStatus.ackAlertsText = TextUtils.join("\n", alerts); - sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); - } - } else { - if (omnipodPumpStatus.ackAlertsAvailable || StringUtils.isNotEmpty(omnipodPumpStatus.ackAlertsText)) { - omnipodPumpStatus.ackAlertsText = null; - omnipodPumpStatus.ackAlertsAvailable = false; - sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); - } + sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); } + } else { + if (omnipodPumpStatus.ackAlertsAvailable || StringUtils.isNotEmpty(omnipodPumpStatus.ackAlertsText)) { + omnipodPumpStatus.ackAlertsText = null; + omnipodPumpStatus.ackAlertsAvailable = false; + sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); + } + } - Date lastBolusStartTime = getLastBolusStartTime() == null ? null : getLastBolusStartTime().toDate(); - Double lastBolusAmount = getLastBolusAmount(); + Date lastBolusStartTime = getLastBolusStartTime() == null ? null : getLastBolusStartTime().toDate(); + Double lastBolusAmount = getLastBolusAmount(); - // Update other info: last bolus, units remaining, suspended - if (Objects.equals(lastBolusStartTime, omnipodPumpStatus.lastBolusTime) // - || !Objects.equals(lastBolusAmount, omnipodPumpStatus.lastBolusAmount) // - || !isReservoirStatusUpToDate(omnipodPumpStatus, getReservoirLevel()) - || isSuspended() != PumpStatusType.Suspended.equals(omnipodPumpStatus.pumpStatusType)) { - omnipodPumpStatus.lastBolusTime = lastBolusStartTime; - omnipodPumpStatus.lastBolusAmount = lastBolusAmount; - omnipodPumpStatus.reservoirRemainingUnits = getReservoirLevel() == null ? 75.0 : getReservoirLevel(); - omnipodPumpStatus.pumpStatusType = isSuspended() ? PumpStatusType.Suspended : PumpStatusType.Running; - sendEvent(new EventOmnipodPumpValuesChanged()); + // Update other info: last bolus, units remaining, suspended + if (Objects.equals(lastBolusStartTime, omnipodPumpStatus.lastBolusTime) // + || !Objects.equals(lastBolusAmount, omnipodPumpStatus.lastBolusAmount) // + || !isReservoirStatusUpToDate(omnipodPumpStatus, getReservoirLevel()) + || isSuspended() != PumpStatusType.Suspended.equals(omnipodPumpStatus.pumpStatusType)) { + omnipodPumpStatus.lastBolusTime = lastBolusStartTime; + omnipodPumpStatus.lastBolusAmount = lastBolusAmount; + omnipodPumpStatus.reservoirRemainingUnits = getReservoirLevel() == null ? 75.0 : getReservoirLevel(); + omnipodPumpStatus.pumpStatusType = isSuspended() ? PumpStatusType.Suspended : PumpStatusType.Running; + sendEvent(new EventOmnipodPumpValuesChanged()); - if (isSuspended() != PumpStatusType.Suspended.equals(omnipodPumpStatus.pumpStatusType)) { - sendEvent(new EventRefreshOverview("Omnipod Pump", false)); - } + if (isSuspended() != PumpStatusType.Suspended.equals(omnipodPumpStatus.pumpStatusType)) { + sendEvent(new EventRefreshOverview("Omnipod Pump", false)); } } } - omnipodUtil.notifyDeviceStatusChanged(); + rxBus.send(new EventOmnipodDeviceStatusChange(this)); } private List getTranslatedActiveAlerts() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/RileyLinkOmnipodService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/RileyLinkOmnipodService.java index b2e4d0fc34..2503beb2b3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/RileyLinkOmnipodService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/service/RileyLinkOmnipodService.java @@ -7,6 +7,8 @@ import android.os.IBinder; import org.apache.commons.lang3.StringUtils; +import java.time.LocalDateTime; + import javax.inject.Inject; import info.nightscout.androidaps.R; @@ -26,9 +28,9 @@ import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunication import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus; import info.nightscout.androidaps.plugins.pump.omnipod.driver.comm.AapsOmnipodManager; -import info.nightscout.androidaps.plugins.pump.omnipod.driver.comm.AapsPodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUIComm; import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUIPostprocessor; +import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodDeviceStatusChange; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; @@ -43,6 +45,7 @@ public class RileyLinkOmnipodService extends RileyLinkService { @Inject OmnipodPumpStatus omnipodPumpStatus; @Inject OmnipodUtil omnipodUtil; @Inject OmnipodUIPostprocessor omnipodUIPostprocessor; + @Inject PodStateManager podStateManager; private static RileyLinkOmnipodService instance; @@ -60,12 +63,10 @@ public class RileyLinkOmnipodService extends RileyLinkService { instance = this; } - public static RileyLinkOmnipodService getInstance() { return instance; } - @Override public void onConfigurationChanged(Configuration newConfig) { aapsLogger.warn(LTag.PUMPCOMM, "onConfigurationChanged"); @@ -109,12 +110,7 @@ public class RileyLinkOmnipodService extends RileyLinkService { private void initializeErosOmnipodManager() { AapsOmnipodManager instance = AapsOmnipodManager.getInstance(); if (instance == null) { - PodStateManager podStateManager = new AapsPodStateManager(aapsLogger, sp, omnipodUtil, omnipodPumpStatus, rxBus, resourceHelper); - podStateManager.loadPodState(); - omnipodUtil.setPodStateManager(podStateManager); - OmnipodCommunicationManager omnipodCommunicationService = new OmnipodCommunicationManager(injector, rfspy); - //omnipodCommunicationService.setPumpStatus(omnipodPumpStatus); this.omnipodCommunicationManager = omnipodCommunicationService; aapsOmnipodManager = new AapsOmnipodManager(omnipodCommunicationService, podStateManager, omnipodPumpStatus, @@ -123,10 +119,9 @@ public class RileyLinkOmnipodService extends RileyLinkService { omnipodUIComm = new OmnipodUIComm(injector, aapsLogger, omnipodUtil, omnipodUIPostprocessor, aapsOmnipodManager); } else { - omnipodUtil.setPodStateManager(instance.getPodStateManager()); aapsOmnipodManager = instance; } - omnipodUtil.notifyDeviceStatusChanged(); + rxBus.send(new EventOmnipodDeviceStatusChange(podStateManager)); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodUtil.java index c88dd5dcdd..7fde7c640f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodUtil.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/util/OmnipodUtil.java @@ -52,13 +52,13 @@ public class OmnipodUtil { private OmnipodPodType omnipodPodType; private OmnipodDriverState driverState = OmnipodDriverState.NotInitalized; - @Inject public OmnipodUtil( AAPSLogger aapsLogger, RxBusWrapper rxBus, RileyLinkUtil rileyLinkUtil, OmnipodPumpStatus omnipodPumpStatus, + PodStateManager podStateManager, SP sp, ActivePluginProvider activePlugins ) { @@ -70,22 +70,18 @@ public class OmnipodUtil { this.activePlugins = activePlugins; } - public boolean isLowLevelDebug() { return lowLevelDebug; } - public void setLowLevelDebug(boolean lowLevelDebug) { this.lowLevelDebug = lowLevelDebug; } - public OmnipodCommandType getCurrentCommand() { return currentCommand; } - public void setCurrentCommand(OmnipodCommandType currentCommand) { this.currentCommand = currentCommand; @@ -100,12 +96,10 @@ public class OmnipodUtil { MainApp.gs(R.string.omnipod_error_operation_not_possible_no_configuration), (Runnable) null); } - public OmnipodDriverState getDriverState() { return driverState; } - public void setDriverState(OmnipodDriverState state) { if (driverState == state) return; @@ -123,7 +117,6 @@ public class OmnipodUtil { // } } - private Gson createGson() { GsonBuilder gsonBuilder = new GsonBuilder() .registerTypeAdapter(DateTime.class, (JsonSerializer) (dateTime, typeOfSrc, context) -> @@ -138,16 +131,8 @@ public class OmnipodUtil { return gsonBuilder.create(); } - public void setPodStateManager(PodStateManager podStateManager) { - if (podStateManager == null) { - throw new IllegalArgumentException("Pod state manager can not be null"); - } - omnipodPumpStatus.podStateManager = podStateManager; - notifyDeviceStatusChanged(); - } - public void notifyDeviceStatusChanged() { - rxBus.send(new EventOmnipodDeviceStatusChange(omnipodPumpStatus.podStateManager)); + } @@ -155,41 +140,26 @@ public class OmnipodUtil { omnipodPumpStatus.podDeviceState = podDeviceState; } - public void setOmnipodPodType(OmnipodPodType omnipodPodType) { this.omnipodPodType = omnipodPodType; } - public OmnipodPodType getOmnipodPodType() { return this.omnipodPodType; } - public PodDeviceState getPodDeviceState() { return omnipodPumpStatus.podDeviceState; } - - public PodStateManager getPodStateManager() { - if (omnipodPumpStatus.podStateManager == null) { - aapsLogger.error("OmnipodUtil.getPodStateManager was called, but podStateManager is null"); - throw new IllegalStateException("Pod state manager is null"); - } - return omnipodPumpStatus.podStateManager; - } - - public boolean isOmnipodEros() { return this.activePlugins.getActivePump().model() == PumpType.Insulet_Omnipod; } - public boolean isOmnipodDash() { return this.activePlugins.getActivePump().model() == PumpType.Insulet_Omnipod_Dash; } - public void setPumpType(PumpType pumpType_) { omnipodPumpStatus.pumpType = pumpType_; } @@ -198,7 +168,6 @@ public class OmnipodUtil { return omnipodPumpStatus.pumpType; } - public Gson getGsonInstance() { return this.gsonInstance; }