From c77cc018f00fc90f9377d80b640209081d83675e Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Sun, 10 Nov 2019 17:23:40 +0000 Subject: [PATCH] - changes for running, so that everything is correctly initalized, moved ui classes to .driver - moved manager to .comm package - started adding dialog for Pod History --- .../plugins/pump/omnipod/OmnipodFragment.kt | 2 +- .../pump/omnipod/OmnipodPumpPlugin.java | 44 +-- .../{ => comm}/AapsOmnipodManager.java | 12 +- .../omnipod/{ => comm}/OmnipodManager.java | 2 +- .../pump/omnipod/defs/OmnipodCommandType.java | 8 +- .../OmnipodCommunicationManagerInterface.java | 2 + .../omnipod/defs/OmnipodStatusRequest.java | 14 +- .../omnipod/dialogs/PodHistoryActivity.java | 253 ++++++++++++++++++ .../omnipod/dialogs/PodManagementActivity.kt | 19 +- .../{comm => driver}/ui/OmnipodUIComm.java | 2 +- .../ui/OmnipodUIPostprocessor.java | 3 +- .../{comm => driver}/ui/OmnipodUITask.java | 7 +- .../service/RileyLinkOmnipodService.java | 2 +- .../omnipod_dash/OmnipodDashPumpPlugin.java | 24 +- .../comm/OmnipodDashCommunicationManager.java | 10 +- .../layout/omnipod_pod_history_activity.xml | 58 ++++ .../res/layout/omnipod_pod_history_item.xml | 33 +++ app/src/main/res/layout/omnipod_pod_mgmt.xml | 53 +++- app/src/main/res/values/strings.xml | 6 + 19 files changed, 490 insertions(+), 64 deletions(-) rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => comm}/AapsOmnipodManager.java (92%) rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{ => comm}/OmnipodManager.java (99%) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodHistoryActivity.java rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{comm => driver}/ui/OmnipodUIComm.java (97%) rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{comm => driver}/ui/OmnipodUIPostprocessor.java (94%) rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/{comm => driver}/ui/OmnipodUITask.java (97%) create mode 100644 app/src/main/res/layout/omnipod_pod_history_activity.xml create mode 100644 app/src/main/res/layout/omnipod_pod_history_item.xml 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 c56958ec93..c67217cbe9 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 @@ -89,7 +89,7 @@ class OmnipodFragment : Fragment() { OmnipodUtil.displayNotConfiguredDialog(context) } else { omnipod_refresh.isEnabled = false - OmnipodUtil.getPlugin().addPodStatusRequest(OmnipodStatusRequest.ResetState); + OmnipodUtil.getPlugin().addPodStatusRequest(OmnipodStatusRequest.GetPodState); ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("Clicked Refresh", object : Callback() { override fun run() { activity?.runOnUiThread { omnipod_refresh.isEnabled = true } 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 94d9038bc0..3e19f45658 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 @@ -43,9 +43,9 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor; -import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpValuesChanged; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.ui.OmnipodUIComm; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.ui.OmnipodUITask; +import info.nightscout.androidaps.plugins.pump.omnipod.comm.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUIComm; +import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUITask; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunicationManagerInterface; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCustomActionType; @@ -90,8 +90,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump public static boolean isBusy = false; protected List busyTimestamps = new ArrayList<>(); protected boolean sentIdToFirebase = false; - - private boolean hasTimeDateOrTimeZoneChanged = false; + protected boolean hasTimeDateOrTimeZoneChanged = false; private Profile currentProfile; @@ -111,13 +110,6 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump displayConnectionMessages = false; OmnipodUtil.setOmnipodPodType(OmnipodPodType.Eros); - - if (omnipodCommunicationManager == null) { - //omnipodCommunicationManager = AapsOmnipodManager.getInstance(); - } - - omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, this, this.pumpStatusLocal); - OmnipodUtil.setPlugin(this); serviceConnection = new ServiceConnection() { @@ -139,15 +131,22 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump new Thread(() -> { for (int i = 0; i < 20; i++) { - SystemClock.sleep(5000); if (OmnipodUtil.getPumpStatus() != null) { if (isLoggingEnabled()) LOG.debug("Starting OmniPod-RileyLink service"); if (OmnipodUtil.getPumpStatus().setNotInPreInit()) { + if (omnipodCommunicationManager == null) { + omnipodCommunicationManager = AapsOmnipodManager.getInstance(); + omnipodCommunicationManager.setPumpStatus(pumpStatusLocal); + } + + omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, plugin, pumpStatusLocal); break; } } + + SystemClock.sleep(5000); } }).start(); } @@ -330,10 +329,11 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump for (OmnipodStatusRequest omnipodStatusRequest : omnipodStatusRequestList) { // TODO when we get more commands this needs to be extended - omnipodUIComm.executeCommand(OmnipodCommandType.AcknowledgeAlerts); + omnipodUIComm.executeCommand(omnipodStatusRequest.getCommandType()); removeList.add(omnipodStatusRequest); } + omnipodStatusRequestList.removeAll(removeList); //getPodPumpStatus(); } @@ -341,8 +341,8 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump } - public void setIsBusy(boolean isBusy) { - this.isBusy = isBusy; + public void setIsBusy(boolean isBusy_) { + isBusy = isBusy_; } @@ -798,14 +798,16 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump if (customActions == null) { this.customActions = Arrays.asList( - customActionResetRLConfig, // - customActionPairAndPrime, // - customActionFillCanullaSetBasalProfile, // - customActionDeactivatePod, // - customActionResetPod); + customActionResetRLConfig //, + //customActionPairAndPrime, // + //customActionFillCanullaSetBasalProfile, // + //customActionDeactivatePod, // + //customActionResetPod + ); } return this.customActions; + } 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/comm/AapsOmnipodManager.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/AapsOmnipodManager.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/AapsOmnipodManager.java index 725f871a9a..671e858cee 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/comm/AapsOmnipodManager.java @@ -1,21 +1,22 @@ -package info.nightscout.androidaps.plugins.pump.omnipod; +package info.nightscout.androidaps.plugins.pump.omnipod.comm; import org.joda.time.DateTime; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunicationService; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunicationManagerInterface; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInfoType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitActionType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitReceiver; import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodSessionState; +import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface { private final OmnipodManager delegate; private static AapsOmnipodManager instance; + private OmnipodPumpStatus pumpStatus; // FIXME this is dirty public static AapsOmnipodManager getInstance() { @@ -27,6 +28,7 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface instance = this; } + @Override public PumpEnactResult initPod(PodInitActionType podInitActionType, PodInitReceiver podInitReceiver, Profile profile) { if (PodInitActionType.PairAndPrimeWizardStep.equals(podInitActionType)) { @@ -59,6 +61,7 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface @Override public PumpEnactResult resetPodStatus() { + pumpStatus.podDeviceState = null; return delegate.resetPodState(); } @@ -87,6 +90,11 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface return delegate.acknowledgeAlerts(); } + @Override + public void setPumpStatus(OmnipodPumpStatus pumpStatus) { + this.pumpStatus = pumpStatus; + } + // TODO should we add this to the OmnipodCommunicationManager interface? public PumpEnactResult getPodInfo(PodInfoType podInfoType) { return delegate.getPodInfo(podInfoType); 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/comm/OmnipodManager.java similarity index 99% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodManager.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodManager.java index 335c3a6224..f7f19f5848 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/comm/OmnipodManager.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod; +package info.nightscout.androidaps.plugins.pump.omnipod.comm; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; 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 ec7c34bad1..4b0fd1367f 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 @@ -12,9 +12,11 @@ public enum OmnipodCommandType { SetBasalProfile, // SetBolus, // CancelBolus, // - SetTemporaryBasal, - CancelTemporaryBasal, - ResetPodStatus, AcknowledgeAlerts; + SetTemporaryBasal, // + CancelTemporaryBasal, // + ResetPodStatus, // + GetPodStatus, // + AcknowledgeAlerts; } 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 4c5aa050ce..8a89fb2eab 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 @@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.defs; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair; +import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; public interface OmnipodCommunicationManagerInterface { @@ -64,4 +65,5 @@ public interface OmnipodCommunicationManagerInterface { PumpEnactResult acknowledgeAlerts(); + void setPumpStatus(OmnipodPumpStatus pumpStatusLocal); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodStatusRequest.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodStatusRequest.java index 92d94f3041..9d53397536 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodStatusRequest.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/defs/OmnipodStatusRequest.java @@ -1,9 +1,19 @@ package info.nightscout.androidaps.plugins.pump.omnipod.defs; public enum OmnipodStatusRequest { - ResetState, // - AcknowledgeAlerts, // + ResetState(OmnipodCommandType.ResetPodStatus), // + AcknowledgeAlerts(OmnipodCommandType.AcknowledgeAlerts), // + GetPodState(OmnipodCommandType.GetPodStatus) // ; + private OmnipodCommandType commandType; + OmnipodStatusRequest(OmnipodCommandType commandType) { + this.commandType = commandType; + } + + + public OmnipodCommandType getCommandType() { + return commandType; + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodHistoryActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodHistoryActivity.java new file mode 100644 index 0000000000..274791ddfb --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dialogs/PodHistoryActivity.java @@ -0,0 +1,253 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.dialogs; + +import android.os.Bundle; +import android.os.SystemClock; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.activities.NoSplashActivity; +import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin; +import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry; +import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntryGroup; + +public class PodHistoryActivity extends NoSplashActivity { + + private static Logger LOG = LoggerFactory.getLogger(L.PUMP); + + Spinner historyTypeSpinner; + TextView statusView; + RecyclerView recyclerView; + LinearLayoutManager llm; + + static TypeList showingType = null; + static PumpHistoryEntryGroup selectedGroup = PumpHistoryEntryGroup.All; + List filteredHistoryList = new ArrayList<>(); + + RecyclerViewAdapter recyclerViewAdapter; + boolean manualChange = false; + + List typeListFull; + + + public PodHistoryActivity() { + super(); + } + + + private void filterHistory(PumpHistoryEntryGroup group) { + + this.filteredHistoryList.clear(); + + List list = new ArrayList<>(); + list.addAll(MedtronicPumpPlugin.getPlugin().getMedtronicHistoryData().getAllHistory()); + + //LOG.debug("Items on full list: {}", list.size()); + + if (group == PumpHistoryEntryGroup.All) { + this.filteredHistoryList.addAll(list); + } else { + for (PumpHistoryEntry pumpHistoryEntry : list) { + if (pumpHistoryEntry.getEntryType().getGroup() == group) { + this.filteredHistoryList.add(pumpHistoryEntry); + } + } + } + + if (this.recyclerViewAdapter != null) { + this.recyclerViewAdapter.setHistoryList(this.filteredHistoryList); + this.recyclerViewAdapter.notifyDataSetChanged(); + } + + //LOG.debug("Items on filtered list: {}", filteredHistoryList.size()); + } + + + @Override + protected void onResume() { + super.onResume(); + filterHistory(selectedGroup); + setHistoryTypeSpinner(); + } + + + private void setHistoryTypeSpinner() { + this.manualChange = true; + + for (int i = 0; i < typeListFull.size(); i++) { + if (typeListFull.get(i).entryGroup == selectedGroup) { + historyTypeSpinner.setSelection(i); + break; + } + } + + SystemClock.sleep(200); + this.manualChange = false; + } + + + @Override + protected void onPause() { + super.onPause(); + } + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.omnipod_pod_history_activity); + + historyTypeSpinner = (Spinner) findViewById(R.id.omnipod_historytype); + statusView = (TextView) findViewById(R.id.omnipod_historystatus); + recyclerView = (RecyclerView) findViewById(R.id.omnipod_history_recyclerview); + + recyclerView.setHasFixedSize(true); + llm = new LinearLayoutManager(this); + recyclerView.setLayoutManager(llm); + + recyclerViewAdapter = new RecyclerViewAdapter(filteredHistoryList); + recyclerView.setAdapter(recyclerViewAdapter); + + statusView.setVisibility(View.GONE); + + typeListFull = getTypeList(PumpHistoryEntryGroup.getList()); + + ArrayAdapter spinnerAdapter = new ArrayAdapter<>(this, R.layout.spinner_centered, typeListFull); + historyTypeSpinner.setAdapter(spinnerAdapter); + + historyTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if (manualChange) + return; + TypeList selected = (TypeList) historyTypeSpinner.getSelectedItem(); + showingType = selected; + selectedGroup = selected.entryGroup; + filterHistory(selectedGroup); + } + + + @Override + public void onNothingSelected(AdapterView parent) { + if (manualChange) + return; + filterHistory(PumpHistoryEntryGroup.All); + } + }); + + } + + + private List getTypeList(List list) { + + ArrayList typeList = new ArrayList<>(); + + for (PumpHistoryEntryGroup pumpHistoryEntryGroup : list) { + typeList.add(new TypeList(pumpHistoryEntryGroup)); + } + + return typeList; + } + + public static class TypeList { + + PumpHistoryEntryGroup entryGroup; + String name; + + + TypeList(PumpHistoryEntryGroup entryGroup) { + this.entryGroup = entryGroup; + this.name = entryGroup.getTranslated(); + } + + + @Override + public String toString() { + return name; + } + } + + public static class RecyclerViewAdapter extends RecyclerView.Adapter { + + List historyList; + + + RecyclerViewAdapter(List historyList) { + this.historyList = historyList; + } + + + public void setHistoryList(List historyList) { + // this.historyList.clear(); + // this.historyList.addAll(historyList); + + this.historyList = historyList; + + // this.notifyDataSetChanged(); + } + + + @Override + public HistoryViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { + View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.omnipod_pod_history_item, // + viewGroup, false); + return new HistoryViewHolder(v); + } + + + @Override + public void onBindViewHolder(HistoryViewHolder holder, int position) { + PumpHistoryEntry record = historyList.get(position); + + if (record != null) { + holder.timeView.setText(record.getDateTimeString()); + holder.typeView.setText(record.getEntryType().getDescription()); + holder.valueView.setText(record.getDisplayableValue()); + } + } + + + @Override + public int getItemCount() { + return historyList.size(); + } + + + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + } + + static class HistoryViewHolder extends RecyclerView.ViewHolder { + + TextView timeView; + TextView typeView; + TextView valueView; + + + HistoryViewHolder(View itemView) { + super(itemView); + timeView = (TextView) itemView.findViewById(R.id.omnipod_history_time); + typeView = (TextView) itemView.findViewById(R.id.omnipod_history_source); + valueView = (TextView) itemView.findViewById(R.id.omnipod_history_description); + } + } + } + +} 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 be2101147b..a29d90d5a7 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 @@ -1,8 +1,10 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dialogs import android.os.Bundle +import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.R import info.nightscout.androidaps.activities.NoSplashActivity +import info.nightscout.androidaps.utils.OKDialog import kotlinx.android.synthetic.main.omnipod_pod_mgmt.* class PodManagementActivity : NoSplashActivity() { @@ -23,19 +25,34 @@ class PodManagementActivity : NoSplashActivity() { resetPodAction() } + + initpod_pod_history.setOnClickListener { + showPodHistory() + } + } fun initPodAction() { - + OKDialog.showConfirmation(this, + MainApp.gs(R.string.omnipod_cmd_init_pod_na), null) } fun removePodAction() { + OKDialog.showConfirmation(this, + MainApp.gs(R.string.omnipod_cmd_deactivate_pod_na), null) } fun resetPodAction() { + OKDialog.showConfirmation(this, + MainApp.gs(R.string.omnipod_cmd_reset_pod_na), null) } + fun showPodHistory() { + OKDialog.showConfirmation(this, + MainApp.gs(R.string.omnipod_cmd_pod_history_na), null) + } + } \ No newline at end of file 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/driver/ui/OmnipodUIComm.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIComm.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUIComm.java index be45c9f7e7..2e3e764528 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/driver/ui/OmnipodUIComm.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.comm.ui; +package info.nightscout.androidaps.plugins.pump.omnipod.driver.ui; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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/driver/ui/OmnipodUIPostprocessor.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUIPostprocessor.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUIPostprocessor.java index ebcf7c17da..f6ed9c5244 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/driver/ui/OmnipodUIPostprocessor.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.comm.ui; +package info.nightscout.androidaps.plugins.pump.omnipod.driver.ui; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,7 +7,6 @@ import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCustomActionType; import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; -import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; /** * Created by andy on 4.8.2019 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/driver/ui/OmnipodUITask.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/ui/OmnipodUITask.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/ui/OmnipodUITask.java index d8fe0a685f..c1b3706b3d 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/driver/ui/OmnipodUITask.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.comm.ui; +package info.nightscout.androidaps.plugins.pump.omnipod.driver.ui; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,7 +63,6 @@ public class OmnipodUITask { case FillCanulaAndSetBasalProfile: returnData = communicationManager.initPod((PodInitActionType) parameters[0], (PodInitReceiver) parameters[1], (Profile) parameters[2]); -// TODO returnData = communicationManager.pairAndPrime(); break; case DeactivatePod: @@ -88,6 +87,10 @@ public class OmnipodUITask { } break; + case GetPodStatus: + returnData = communicationManager.getPodStatus(); + break; + case CancelBolus: returnData = communicationManager.cancelBolus(); break; 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 cd70a9c7cd..f6a96cbb63 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 @@ -23,7 +23,7 @@ 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.common.hw.rileylink.service.RileyLinkService; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData; -import info.nightscout.androidaps.plugins.pump.omnipod.AapsOmnipodManager; +import info.nightscout.androidaps.plugins.pump.omnipod.comm.AapsOmnipodManager; import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunicationService; import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunicationManagerInterface; 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 5522459e94..0ec828ee97 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 @@ -5,7 +5,6 @@ import android.os.Bundle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -22,12 +21,11 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodFragment; import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.ui.OmnipodUIComm; +import info.nightscout.androidaps.plugins.pump.omnipod.driver.ui.OmnipodUIComm; 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.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.OmnipodUtil; import info.nightscout.androidaps.plugins.pump.omnipod_dash.comm.OmnipodDashCommunicationManager; @@ -42,8 +40,8 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP private static final Logger LOG = LoggerFactory.getLogger(L.PUMP); protected static OmnipodDashPumpPlugin plugin = null; - private RileyLinkOmnipodService omnipodService; - private OmnipodPumpStatus pumpStatusLocal = null; + //private RileyLinkOmnipodService omnipodService; + //private OmnipodPumpStatus pumpStatusLocal = null; // variables for handling statuses and history private boolean firstRun = true; @@ -53,9 +51,9 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP private boolean isInitialized = false; public static boolean isBusy = false; - private List busyTimestamps = new ArrayList<>(); - private boolean sentIdToFirebase = false; - private boolean hasTimeDateOrTimeZoneChanged = false; + //private List busyTimestamps = new ArrayList<>(); + //private boolean sentIdToFirebase = false; + //private boolean hasTimeDateOrTimeZoneChanged = false; private Profile currentProfile; @@ -144,7 +142,11 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP // Pump Plugin private boolean isServiceSet() { - return omnipodService != null; + return true; //omnipodService != null; + } + + private boolean isServiceInitialized() { + return true; } @@ -160,7 +162,7 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP public boolean isConnected() { if (isLoggingEnabled() && displayConnectionMessages) LOG.debug(getLogPrefix() + "isConnected"); - return isServiceSet() && omnipodService.isInitialized(); + return isServiceSet() && isServiceInitialized(); } @@ -168,7 +170,7 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP public boolean isConnecting() { if (isLoggingEnabled() && displayConnectionMessages) LOG.debug(getLogPrefix() + "isConnecting"); - return !isServiceSet() || !omnipodService.isInitialized(); + return !isServiceSet() || !isServiceInitialized(); } 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 d6b4be1d8a..a67bf944d7 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 @@ -15,6 +15,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommunication import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitActionType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInitReceiver; import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodSessionState; +import info.nightscout.androidaps.plugins.pump.omnipod.service.OmnipodPumpStatus; import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodUtil; import info.nightscout.androidaps.utils.SP; @@ -26,7 +27,7 @@ public class OmnipodDashCommunicationManager implements OmnipodCommunicationMana private static final Logger LOG = LoggerFactory.getLogger(L.PUMPCOMM); private static OmnipodDashCommunicationManager omnipodCommunicationManager; - String errorMessage; + private String errorMessage; public OmnipodDashCommunicationManager(Context context, RFSpy rfspy) { @@ -37,8 +38,6 @@ public class OmnipodDashCommunicationManager implements OmnipodCommunicationMana private PodSessionState getPodSessionState() { - - return null; } @@ -107,4 +106,9 @@ public class OmnipodDashCommunicationManager implements OmnipodCommunicationMana return null; } + @Override + public void setPumpStatus(OmnipodPumpStatus pumpStatusLocal) { + + } + } diff --git a/app/src/main/res/layout/omnipod_pod_history_activity.xml b/app/src/main/res/layout/omnipod_pod_history_activity.xml new file mode 100644 index 0000000000..6ffb8eba8b --- /dev/null +++ b/app/src/main/res/layout/omnipod_pod_history_activity.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/omnipod_pod_history_item.xml b/app/src/main/res/layout/omnipod_pod_history_item.xml new file mode 100644 index 0000000000..bbbc8ddc08 --- /dev/null +++ b/app/src/main/res/layout/omnipod_pod_history_item.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/omnipod_pod_mgmt.xml b/app/src/main/res/layout/omnipod_pod_mgmt.xml index 07b7f49402..e203e72540 100644 --- a/app/src/main/res/layout/omnipod_pod_mgmt.xml +++ b/app/src/main/res/layout/omnipod_pod_mgmt.xml @@ -18,8 +18,16 @@ android:id="@+id/initpod_space0" android:layout_width="match_parent" android:layout_height="120dp" + android:layout_marginLeft="10dp" + android:layout_marginTop="3dp" + android:layout_marginRight="10dp" + android:layout_marginBottom="3dp" android:layout_weight="0.5" - android:text="Pod Management" /> + android:text="@string/omnipod_pod_mgmt_title" + android:textAlignment="center" + android:textSize="12pt" + android:gravity="center" + android:textStyle="bold" /> + android:text="@string/omnipod_cmd_init_pod" /> @@ -47,17 +56,18 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="3dp" - android:layout_marginLeft="10dp" - android:layout_marginRight="10dp" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" android:layout_marginTop="3dp" + android:textAllCaps="false" android:layout_weight="0.5" android:drawableTop="@drawable/icon_actions_temptarget" - android:text="@string/careportal_temporarytarget" /> + android:text="@string/omnipod_cmd_deactivate_pod" /> @@ -66,21 +76,38 @@ style="?android:attr/buttonStyle" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="10dp" + android:layout_marginLeft="40dp" android:layout_marginTop="3dp" - android:layout_marginRight="10dp" + android:layout_marginRight="40dp" android:layout_marginBottom="3dp" + android:textAllCaps="false" android:layout_weight="0.5" android:drawableTop="@drawable/icon_cp_pump_canula" - android:text="@string/primefill" /> + android:text="@string/omnipod_cmd_reset_pod" /> + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 195b2e900c..706b9b29d5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1645,10 +1645,16 @@ Operation is not possible.\n\n You need to wait few minutes, until AAPS tries to set profile for first time. + Pod Management Init Pod Deactivate Pod Reset Pod + Pod History + Init Pod not available at the moment. + Deactivate Pod not available at the moment. + Reset Pod not available at the moment. + Pod History not available at the moment. Omnipod Omnipod