diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodManager.java index 4112a0cdfe..c8691273c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodManager.java @@ -48,8 +48,8 @@ import info.nightscout.androidaps.utils.SP; import io.reactivex.Completable; import io.reactivex.Flowable; import io.reactivex.Single; -import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.schedulers.Schedulers; import io.reactivex.subjects.SingleSubject; public class OmnipodManager { @@ -97,7 +97,7 @@ public class OmnipodManager { return Single.timer(delayInSeconds, TimeUnit.SECONDS) // .map(o -> verifySetupAction(statusResponse -> PrimeAction.updatePrimingStatus(podState, statusResponse), SetupProgress.PRIMING_FINISHED)) // - .observeOn(AndroidSchedulers.mainThread()); + .observeOn(Schedulers.io()); } public synchronized Single insertCannula(BasalSchedule basalSchedule) { @@ -113,7 +113,7 @@ public class OmnipodManager { return Single.timer(delayInSeconds, TimeUnit.SECONDS) // .map(o -> verifySetupAction(statusResponse -> InsertCannulaAction.updateCannulaInsertionStatus(podState, statusResponse), SetupProgress.COMPLETED)) // - .observeOn(AndroidSchedulers.mainThread()); + .observeOn(Schedulers.io()); } public synchronized StatusResponse getPodStatus() { @@ -190,7 +190,7 @@ public class OmnipodManager { long progressReportInterval = estimatedRemainingBolusDuration.getMillis() / numberOfProgressReports; disposables.add(Flowable.intervalRange(0, numberOfProgressReports + 1, 0, progressReportInterval, TimeUnit.MILLISECONDS) // - .observeOn(AndroidSchedulers.mainThread()) // + .observeOn(Schedulers.io()) // .subscribe(count -> { int percentage = (int) ((double) count / numberOfProgressReports * 100); double estimatedUnitsDelivered = activeBolusData == null ? 0 : activeBolusData.estimateUnitsDelivered(); @@ -206,7 +206,7 @@ public class OmnipodManager { disposables.add(Completable.complete() // .delay(estimatedRemainingBolusDuration.getMillis() + 250, TimeUnit.MILLISECONDS) // - .observeOn(AndroidSchedulers.mainThread()) // + .observeOn(Schedulers.io()) // .doOnComplete(() -> { synchronized (bolusDataLock) { for (int i = 0; i < ACTION_VERIFICATION_TRIES; i++) { @@ -220,7 +220,7 @@ public class OmnipodManager { } } catch (Exception ex) { if (isLoggingEnabled()) { - LOG.debug("Ignoring exception in bolus completion verfication", ex); + LOG.debug("Ignoring exception in bolus completion verification", ex); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java index fe2c8d68cf..d9965dcf8a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java @@ -77,10 +77,24 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface public AapsOmnipodManager(OmnipodCommunicationService communicationService, PodSessionState podState, OmnipodPumpStatus _pumpStatus) { delegate = new OmnipodManager(communicationService, podState, podSessionState -> { // Handle pod state changes - OmnipodUtil.setPodSessionState(podSessionState); + updatePumpStatus(podSessionState); + }); + this.pumpStatus = _pumpStatus; + instance = this; + } - if (pumpStatus != null) { + private void updatePumpStatus(PodSessionState podSessionState) { + if (pumpStatus != null) { + if (podSessionState == null) { + pumpStatus.ackAlertsText = null; + pumpStatus.ackAlertsAvailable = false; + pumpStatus.lastBolusTime = null; + pumpStatus.lastBolusAmount = null; + pumpStatus.reservoirRemainingUnits = 0.0; + sendEvent(new EventOmnipodAcknowledgeAlertsChanged()); + sendEvent(new EventOmnipodPumpValuesChanged()); + } else { // Update active alerts if (podSessionState.hasActiveAlerts()) { List alerts = translateActiveAlerts(podSessionState); @@ -110,9 +124,7 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface sendEvent(new EventOmnipodPumpValuesChanged()); } } - }); - this.pumpStatus = _pumpStatus; - instance = this; + } } private static boolean isReservoirStatusUpToDate(OmnipodPumpStatus pumpStatus, Double unitsRemaining) { @@ -300,6 +312,7 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface public void setPumpStatus(OmnipodPumpStatus pumpStatus) { this.pumpStatus = pumpStatus; this.getCommunicationService().setPumpStatus(pumpStatus); + updatePumpStatus(delegate.getPodState()); } // TODO should we add this to the OmnipodCommunicationManager interface?