- reworking pump suspended / initialization of driver problem

This commit is contained in:
Andy Rozman 2020-01-28 19:00:16 +00:00
parent d594786cb4
commit bc6e4be3ad
7 changed files with 76 additions and 15 deletions

View file

@ -22,11 +22,12 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL
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.dialogs.PodManagementActivity
import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState
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.events.EventOmnipodRefreshButtonState
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.util.OmnipodConst
import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
@ -214,21 +215,27 @@ class OmnipodFragment : Fragment() {
MainApp.gs(it.getResourceId(RileyLinkTargetDevice.Omnipod))
} ?: "-"
if (pumpStatus.podSessionState == null) {
val driverState = OmnipodUtil.getDriverState();
if (driverState == OmnipodDriverState.NotInitalized) {
omnipod_pod_address.text = MainApp.gs(R.string.omnipod_pod_name_no_info)
omnipod_pod_expiry.text = "-"
omnipod_pod_status.text = MainApp.gs(R.string.omnipod_pod_not_initalized)
pumpStatus.podAvailable = false
pumpStatus.podNumber == null
} else if (driverState == OmnipodDriverState.Initalized_NoPod) {
omnipod_pod_address.text = MainApp.gs(R.string.omnipod_pod_name_no_info)
omnipod_pod_expiry.text = "-"
omnipod_pod_status.text = MainApp.gs(R.string.omnipod_pod_no_pod_connected)
pumpStatus.podAvailable = false
pumpStatus.podNumber == null
} else {
//podAvailable = true
pumpStatus.podLotNumber = "" + pumpStatus.podSessionState.lot
pumpStatus.podAvailable = true
omnipod_pod_address.text = pumpStatus.podSessionState.address.toString()
omnipod_pod_expiry.text = pumpStatus.podSessionState.expiryDateAsString
pumpStatus.podNumber = pumpStatus.podSessionState.address.toString()
//pumpStatus.podSessionState = checkStatusSet(pumpStatus.podSessionState,
// OmnipodUtil.getPodSessionState()) as PodSessionState?
@ -332,7 +339,7 @@ class OmnipodFragment : Fragment() {
setDeviceStatus()
if (pumpStatus.podAvailable) {
// last connection
// last connection
if (pumpStatus.lastConnection != 0L) {
val minAgo = DateUtil.minAgo(pumpStatus.lastConnection)
val min = (System.currentTimeMillis() - pumpStatus.lastConnection) / 1000 / 60
@ -415,7 +422,7 @@ class OmnipodFragment : Fragment() {
private fun updateAcknowledgeAlerts(pumpStatus: OmnipodPumpStatus) {
if (pumpStatus!=null) {
if (pumpStatus != null) {
omnipod_pod_active_alerts_ack.isEnabled = pumpStatus.ackAlertsAvailable
omnipod_pod_active_alerts.text = pumpStatus.ackAlertsText
}

View file

@ -58,6 +58,7 @@ 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.state.PodSessionState;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState;
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.ui.OmnipodUIComm;
@ -107,6 +108,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
boolean omnipodServiceRunning = false;
private long nextPodCheck = 0L;
OmnipodDriverState driverState = OmnipodDriverState.NotInitalized;
private OmnipodPumpPlugin() {
@ -123,7 +125,10 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
displayConnectionMessages = false;
OmnipodUtil.setOmnipodPodType(OmnipodPodType.Eros);
OmnipodUtil.setPlugin(this);
if (OmnipodUtil.isOmnipodEros()) {
OmnipodUtil.setPlugin(this);
}
serviceConnection = new ServiceConnection() {
@ -371,7 +376,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
public boolean isConnected() {
if (isLoggingEnabled() && displayConnectionMessages)
LOG.debug(getLogPrefix() + "isConnected");
return isServiceSet() && omnipodService.isInitialized();
return isServiceSet() && this.omnipodService.isInitialized() && isInitialized;
}
@ -379,14 +384,17 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
public boolean isConnecting() {
if (isLoggingEnabled() && displayConnectionMessages)
LOG.debug(getLogPrefix() + "isConnecting");
return !isServiceSet() || !omnipodService.isInitialized();
return !isServiceSet() || (!omnipodService.isInitialized() || (!isInitialized));
}
@Override
public boolean isSuspended() {
return (pumpStatusLocal != null && !pumpStatusLocal.podAvailable) ||
return (driverState == OmnipodDriverState.Initalized_NoPod) ||
(OmnipodUtil.getPodSessionState() != null && OmnipodUtil.getPodSessionState().isSuspended());
//
// return (pumpStatusLocal != null && !pumpStatusLocal.podAvailable) ||
// (OmnipodUtil.getPodSessionState() != null && OmnipodUtil.getPodSessionState().isSuspended());
}
@Override
@ -464,6 +472,9 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
// TODO read pod status
LOG.error("getPodPumpStatus() NOT IMPLEMENTED");
//getPodPumpStatusObject().driverState = OmnipodDriverState.Initalized_PodAvailable;
//driverState = OmnipodDriverState.Initalized_PodAvailable;
OmnipodUtil.setDriverState(OmnipodDriverState.Initalized_PodAvailable);
// we would probably need to read Basal Profile here too
}
@ -478,6 +489,11 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
}
}
@Override
public void setDriverState(OmnipodDriverState state) {
this.driverState = state;
}
public void resetStatusState() {
firstRun = true;
@ -495,6 +511,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
if (isLoggingEnabled())
LOG.info(getLogPrefix() + "initializePump - start");
OmnipodPumpStatus podPumpStatus = getPodPumpStatusObject();
setRefreshButtonEnabled(false);
@ -511,14 +528,13 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
}
}
if (podSessionState != null) {
LOG.debug("PodSessionState (saved): " + podSessionState);
// TODO handle if session state too old
// TODO handle basal
// TODO handle time
// TODO load session
if (!isRefresh) {
pumpState = PumpDriverState.Initialized;
@ -531,6 +547,8 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
} else {
LOG.debug("No PodSessionState found. Pod probably not running.");
//podPumpStatus.driverState = OmnipodDriverState.Initalized_NoPod;
OmnipodUtil.setDriverState(OmnipodDriverState.Initalized_NoPod);
}

View file

@ -1,9 +1,12 @@
package info.nightscout.androidaps.plugins.pump.omnipod.defs;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState;
public interface OmnipodPumpPluginInterface extends PumpInterface {
void addPodStatusRequest(OmnipodStatusRequest pumpStatusRequest);
void setDriverState(OmnipodDriverState state);
}

View file

@ -0,0 +1,9 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver;
public enum OmnipodDriverState {
NotInitalized,
Initalized_NoPod,
Initalized_PodAvailable,
}

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver;
import org.jetbrains.annotations.NotNull;
import org.joda.time.LocalDateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -63,6 +62,8 @@ public class OmnipodPumpStatus extends PumpStatus {
public boolean podDebuggingOptionsEnabled = false;
public String podLotNumber = "???";
public OmnipodDriverState driverState = OmnipodDriverState.NotInitalized;
public OmnipodPumpStatus(PumpDescription pumpDescription) {
super(pumpDescription);
}

View file

@ -31,6 +31,7 @@ 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.PodDeviceState;
import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodSessionState;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodDriverState;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodDeviceStatusChange;
import info.nightscout.androidaps.plugins.pump.omnipod.service.RileyLinkOmnipodService;
@ -54,6 +55,7 @@ public class OmnipodUtil extends RileyLinkUtil {
//private static PodDeviceState podDeviceState;
private static OmnipodPumpPluginInterface omnipodPumpPlugin;
private static OmnipodPodType omnipodPodType;
private static OmnipodDriverState driverState;
public static Gson getGsonInstance() {
return gsonInstance;
@ -149,6 +151,26 @@ public class OmnipodUtil extends RileyLinkUtil {
return omnipodPumpStatus;
}
public static OmnipodDriverState getDriverState() {
return OmnipodUtil.driverState;
}
public static void setDriverState(OmnipodDriverState state) {
if (OmnipodUtil.driverState == state)
return;
OmnipodUtil.driverState = state;
// TODO maybe remove
if (OmnipodUtil.omnipodPumpStatus != null) {
OmnipodUtil.omnipodPumpStatus.driverState = state;
}
if (OmnipodUtil.omnipodPumpPlugin != null) {
OmnipodUtil.omnipodPumpPlugin.setDriverState(state);
}
}
public static void setPumpStatus(OmnipodPumpStatus omnipodPumpStatus) {
OmnipodUtil.omnipodPumpStatus = omnipodPumpStatus;
}

View file

@ -1667,6 +1667,7 @@
<string name="omnipod_pod_expiry">Pod Expires</string>
<string name="omnipod_pod_name_no_info">No info</string>
<string name="omnipod_pod_no_pod_connected">No Pod connected</string>
<string name="omnipod_pod_not_initalized">Not initialized</string>
<string name="omnipod_pod_active_alerts">Active Pod Alerts</string>
<string name="omnipod_ack_short">Ack Alerts</string>