diff --git a/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.java b/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.java deleted file mode 100644 index f76e6a0471..0000000000 --- a/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.java +++ /dev/null @@ -1,36 +0,0 @@ -package info.nightscout.androidaps.plugins.pump.omnipod.common.definition; - -import info.nightscout.androidaps.plugins.pump.omnipod.common.R; - -/** - * Created by andy on 4.8.2019 - */ -public enum OmnipodCommandType { - INITIALIZE_POD(R.string.omnipod_common_cmd_initialize_pod), // First step of Pod activation - INSERT_CANNULA(R.string.omnipod_common_cmd_insert_cannula), // Second step of Pod activation - DEACTIVATE_POD(R.string.omnipod_common_cmd_deactivate_pod), // - SET_BASAL_PROFILE(R.string.omnipod_common_cmd_set_basal_schedule), // - SET_BOLUS(R.string.omnipod_common_cmd_set_bolus), // - CANCEL_BOLUS(R.string.omnipod_common_cmd_cancel_bolus), // - SET_TEMPORARY_BASAL(R.string.omnipod_common_cmd_set_tbr), // - CANCEL_TEMPORARY_BASAL(R.string.omnipod_common_cmd_cancel_tbr_by_driver), // - DISCARD_POD(R.string.omnipod_common_cmd_discard_pod), // - GET_POD_STATUS(R.string.omnipod_common_cmd_get_pod_status), // - SET_TIME(R.string.omnipod_common_cmd_set_time), // - CONFIGURE_ALERTS(R.string.omnipod_common_cmd_configure_alerts), // - ACKNOWLEDGE_ALERTS(R.string.omnipod_common_cmd_silence_alerts), // - READ_POD_PULSE_LOG(R.string.omnipod_common_cmd_read_pulse_log), // - SUSPEND_DELIVERY(R.string.omnipod_common_cmd_suspend_delivery), - RESUME_DELIVERY(R.string.omnipod_common_cmd_resume_delivery), - PLAY_TEST_BEEP(R.string.omnipod_common_cmd_play_test_beep); - - private final int resourceId; - - OmnipodCommandType(int resourceId) { - this.resourceId = resourceId; - } - - public int getResourceId() { - return resourceId; - } -} diff --git a/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.kt b/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.kt new file mode 100644 index 0000000000..333faef1e9 --- /dev/null +++ b/omnipod-common/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/common/definition/OmnipodCommandType.kt @@ -0,0 +1,26 @@ +package info.nightscout.androidaps.plugins.pump.omnipod.common.definition + +import info.nightscout.androidaps.plugins.pump.omnipod.common.R + +/** + * Created by andy on 4.8.2019 + */ +enum class OmnipodCommandType(val resourceId: Int) { + + INITIALIZE_POD(R.string.omnipod_common_cmd_initialize_pod), // First step of Pod activation + INSERT_CANNULA(R.string.omnipod_common_cmd_insert_cannula), // Second step of Pod activation + DEACTIVATE_POD(R.string.omnipod_common_cmd_deactivate_pod), // + SET_BASAL_PROFILE(R.string.omnipod_common_cmd_set_basal_schedule), // + SET_BOLUS(R.string.omnipod_common_cmd_set_bolus), // + CANCEL_BOLUS(R.string.omnipod_common_cmd_cancel_bolus), // + SET_TEMPORARY_BASAL(R.string.omnipod_common_cmd_set_tbr), // + CANCEL_TEMPORARY_BASAL(R.string.omnipod_common_cmd_cancel_tbr_by_driver), // + DISCARD_POD(R.string.omnipod_common_cmd_discard_pod), // + GET_POD_STATUS(R.string.omnipod_common_cmd_get_pod_status), // + SET_TIME(R.string.omnipod_common_cmd_set_time), // + CONFIGURE_ALERTS(R.string.omnipod_common_cmd_configure_alerts), // + ACKNOWLEDGE_ALERTS(R.string.omnipod_common_cmd_silence_alerts), // + READ_POD_PULSE_LOG(R.string.omnipod_common_cmd_read_pulse_log), // + SUSPEND_DELIVERY(R.string.omnipod_common_cmd_suspend_delivery), RESUME_DELIVERY(R.string.omnipod_common_cmd_resume_delivery), PLAY_TEST_BEEP(R.string.omnipod_common_cmd_play_test_beep); + +} \ No newline at end of file diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/history/database/HistoryRecordEntity.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/history/database/HistoryRecordEntity.kt index d4a613a75b..dddef6ae46 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/history/database/HistoryRecordEntity.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/history/database/HistoryRecordEntity.kt @@ -31,4 +31,5 @@ data class HistoryRecordEntity( fun isSuccess(): Boolean { return initialResult == InitialResult.SENT && resolvedResult == ResolvedResult.SUCCESS } + } diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodHistoryActivity.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodHistoryActivity.kt index 72622ae4a7..b47c7045f6 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodHistoryActivity.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodHistoryActivity.kt @@ -17,8 +17,11 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil +import info.nightscout.androidaps.plugins.pump.omnipod.common.definition.OmnipodCommandType import info.nightscout.androidaps.plugins.pump.omnipod.dash.R import info.nightscout.androidaps.plugins.pump.omnipod.dash.history.DashHistory +import info.nightscout.androidaps.plugins.pump.omnipod.dash.history.data.InitialResult +import info.nightscout.androidaps.plugins.pump.omnipod.dash.history.data.ResolvedResult import info.nightscout.androidaps.plugins.pump.omnipod.dash.history.database.HistoryRecordEntity import info.nightscout.androidaps.utils.rx.AapsSchedulers import java.util.* @@ -27,10 +30,6 @@ import javax.inject.Inject class DashPodHistoryActivity : NoSplashAppCompatActivity() { @Inject lateinit var aapsLogger: AAPSLogger - - // @Inject AapsOmnipodUtil aapsOmnipodUtil; - // @Inject lateinit var resourceHelper: ResourceHelper - @Inject lateinit var dashHistory: DashHistory @Inject lateinit var aapsSchedulers: AapsSchedulers @@ -56,20 +55,57 @@ class DashPodHistoryActivity : NoSplashAppCompatActivity() { fullHistoryList.addAll(records) } + private fun groupForCommandType(type: OmnipodCommandType): PumpHistoryEntryGroup { + return when(type) { + OmnipodCommandType.INITIALIZE_POD -> + PumpHistoryEntryGroup.Prime + OmnipodCommandType.INSERT_CANNULA -> + PumpHistoryEntryGroup.Prime + OmnipodCommandType.DEACTIVATE_POD -> + PumpHistoryEntryGroup.Prime + OmnipodCommandType.DISCARD_POD -> + PumpHistoryEntryGroup.Prime + + OmnipodCommandType.CANCEL_TEMPORARY_BASAL -> + PumpHistoryEntryGroup.Basal + OmnipodCommandType.SET_BASAL_PROFILE -> + PumpHistoryEntryGroup.Basal + OmnipodCommandType.SET_TEMPORARY_BASAL -> + PumpHistoryEntryGroup.Basal + OmnipodCommandType.RESUME_DELIVERY -> + PumpHistoryEntryGroup.Basal + OmnipodCommandType.SUSPEND_DELIVERY -> + PumpHistoryEntryGroup.Basal + + OmnipodCommandType.SET_BOLUS -> + PumpHistoryEntryGroup.Bolus + OmnipodCommandType.CANCEL_BOLUS -> + PumpHistoryEntryGroup.Bolus + + OmnipodCommandType.ACKNOWLEDGE_ALERTS -> + PumpHistoryEntryGroup.Alarm + OmnipodCommandType.CONFIGURE_ALERTS -> + PumpHistoryEntryGroup.Alarm + OmnipodCommandType.PLAY_TEST_BEEP -> + PumpHistoryEntryGroup.Alarm + + OmnipodCommandType.GET_POD_STATUS -> + PumpHistoryEntryGroup.Configuration + OmnipodCommandType.SET_TIME -> + PumpHistoryEntryGroup.Configuration + + OmnipodCommandType.READ_POD_PULSE_LOG -> + PumpHistoryEntryGroup.Unknown + } + } private fun filterHistory(group: PumpHistoryEntryGroup) { filteredHistoryList.clear() aapsLogger.debug(LTag.PUMP, "Items on full list: {}", fullHistoryList.size) if (group === PumpHistoryEntryGroup.All) { filteredHistoryList.addAll(fullHistoryList) - } /* Here you can add dedicated dao according to type of event selection in history Block - disabled because PodHistoryEntryType doesn't exist in Dash module - else { - for (HistoryRecordEntity pumpHistoryEntry : fullHistoryList) { - if (PodHistoryEntryType.getByCode(pumpHistoryEntry.getPodEntryTypeCode()).getGroup() == group) { - this.filteredHistoryList.add(pumpHistoryEntry); - } - } - }*/ + } else { + filteredHistoryList.addAll(fullHistoryList.filter { groupForCommandType(it.commandType) == group }) + } recyclerViewAdapter?.let { it.historyList = filteredHistoryList it.notifyDataSetChanged() @@ -85,10 +121,13 @@ class DashPodHistoryActivity : NoSplashAppCompatActivity() { private fun setHistoryTypeSpinner() { manualChange = true - for (i in typeListFull!!.indices) { - if (typeListFull!![i].entryGroup === selectedGroup) { - historyTypeSpinner!!.setSelection(i) - break + val typeList = typeListFull + typeList?.let { + for (i in it.indices) { + if (it[i].entryGroup === selectedGroup) { + historyTypeSpinner!!.setSelection(i) + break + } } } SystemClock.sleep(200) @@ -184,66 +223,27 @@ class DashPodHistoryActivity : NoSplashAppCompatActivity() { private fun setValue(historyEntry: HistoryRecordEntity, valueView: TextView) { valueView.text = historyEntry.toString() // val entryType = historyEntry.commandType - - /* Here you define which information to show in history according to historyEntry Type - if (historyEntry.isSuccess()) { - PodHistoryEntryType entryType = PodHistoryEntryType.getByCode(historyEntry.getPodEntryTypeCode()); - switch (entryType) { - - case SET_TEMPORARY_BASAL: - case SPLIT_TEMPORARY_BASAL: { - TempBasalPair tempBasalPair = aapsOmnipodUtil.getGsonInstance().fromJson(historyEntry.getData(), TempBasalPair.class); - valueView.setText(resourceHelper.gs(R.string.omnipod_eros_history_tbr_value, tempBasalPair.getInsulinRate(), tempBasalPair.getDurationMinutes())); - } - break; - - case INSERT_CANNULA: - case SET_BASAL_SCHEDULE: { - if (historyEntry.getData() != null) { - setProfileValue(historyEntry.getData(), valueView); - } - } - break; - - case SET_BOLUS: { - if (historyEntry.getData().contains(";")) { - String[] splitVal = historyEntry.getData().split(";"); - valueView.setText(resourceHelper.gs(R.string.omnipod_eros_history_bolus_value_with_carbs, Double.valueOf(splitVal[0]), Double.valueOf(splitVal[1]))); - } else { - valueView.setText(resourceHelper.gs(R.string.omnipod_eros_history_bolus_value, Double.valueOf(historyEntry.getData()))); - } - } - break; - - case PLAY_TEST_BEEP: { - if (historyEntry.getData() != null) { - valueView.setText(historyEntry.getData()); - } - } - break; - case GET_POD_STATUS: - case GET_POD_INFO: - case SET_TIME: - case INITIALIZE_POD: - case CANCEL_TEMPORARY_BASAL_BY_DRIVER: - case CANCEL_TEMPORARY_BASAL: - case CONFIGURE_ALERTS: - case CANCEL_BOLUS: - case DEACTIVATE_POD: - case DISCARD_POD: - case ACKNOWLEDGE_ALERTS: - case SUSPEND_DELIVERY: - case RESUME_DELIVERY: - case UNKNOWN_ENTRY_TYPE: - default: - valueView.setText(""); - break; - - } - } else { - valueView.setText(historyEntry.toString()); + if (!historyEntry.isSuccess()) { + valueView.text = resourceHelper.gs(translatedFailure(historyEntry)) + return + } + valueView.text = when (historyEntry.commandType) { + OmnipodCommandType.SET_TEMPORARY_BASAL -> { + val tbr = historyEntry.tempBasalRecord + tbr?.let { + resourceHelper.gs(R.string.omnipod_common_history_tbr_value, it.rate, it.duration) + } ?: "n/a" + } + OmnipodCommandType.SET_BOLUS -> { + val bolus = historyEntry.bolusRecord + bolus?.let { + resourceHelper.gs(R.string.omnipod_common_history_bolus_value, it.amout) + } ?: "n/a" + } + else -> + "" + } - */ } private fun setProfileValue(data: String, valueView: TextView) { @@ -275,6 +275,20 @@ class DashPodHistoryActivity : NoSplashAppCompatActivity() { } } + private fun translatedFailure(historyEntry: HistoryRecordEntity): Int { + return when { + historyEntry.initialResult == InitialResult.FAILURE_SENDING -> + R.string.omnipod_dash_failed_to_send + historyEntry.initialResult == InitialResult.NOT_SENT -> + R.string.omnipod_dash_command_not_sent + historyEntry.initialResult == InitialResult.SENT && + historyEntry.resolvedResult == ResolvedResult.FAILURE -> + R.string.omnipod_dash_command_not_received_by_the_pod + else -> + R.string.omnipod_dash_unknown + } + } + companion object { private var selectedGroup: PumpHistoryEntryGroup = PumpHistoryEntryGroup.All diff --git a/omnipod-dash/src/main/res/values/strings.xml b/omnipod-dash/src/main/res/values/strings.xml index 5a7bddb482..1b6f4dbb45 100644 --- a/omnipod-dash/src/main/res/values/strings.xml +++ b/omnipod-dash/src/main/res/values/strings.xml @@ -40,4 +40,10 @@ Found too many pods for activation Could not find an available pod for activation Generic error: %1$s + Failed to send the command + Command not sent + Command not received by the pod + Unknown state for the command + Rate: %1$.2f U, duration: %2$d minutes + %1$.2f U