diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPlugin.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPlugin.kt index ad5e49cbc8..07446b938c 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPlugin.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPlugin.kt @@ -7,6 +7,7 @@ import android.content.ServiceConnection import android.os.IBinder import android.text.format.DateFormat import androidx.preference.EditTextPreference +import androidx.preference.ListPreference import androidx.preference.PreferenceFragmentCompat import dagger.android.HasAndroidInjector import info.nightscout.core.ui.toast.ToastUtils @@ -122,8 +123,29 @@ import kotlin.math.abs override fun preprocessPreferences(preferenceFragment: PreferenceFragmentCompat) { super.preprocessPreferences(preferenceFragment) - val serialSetting = preferenceFragment.findPreference(rh.gs(R.string.key_sn_input)) as EditTextPreference? - serialSetting?.isEnabled = !isInitialized() + preferenceFragment.findPreference(rh.gs(R.string.key_sn_input))?.isEnabled = !isInitialized() + + val alarmSetting = preferenceFragment.findPreference(rh.gs(R.string.key_alarm_setting)) + val allAlarmEntries = preferenceFragment.resources.getStringArray(R.array.alarmSettings) + val allAlarmValues = preferenceFragment.resources.getStringArray(R.array.alarmSettingsValues) + + if (allAlarmEntries.size < 8 || allAlarmValues.size < 8) { + aapsLogger.error(LTag.PUMP, "Alarm settings array is not complete") + return + } + + when (medtrumPump.pumpType()) { + PumpType.MEDTRUM_NANO -> { + alarmSetting?.entries = arrayOf(allAlarmEntries[6], allAlarmEntries[7]) // "Beep", "Silent" + alarmSetting?.entryValues = arrayOf(allAlarmValues[6], allAlarmValues[7]) // "6", "7" + } + + else -> { + // Use Nano settings for unknown pumps + alarmSetting?.entries = arrayOf(allAlarmEntries[6], allAlarmEntries[7]) // "Beep", "Silent" + alarmSetting?.entryValues = arrayOf(allAlarmValues[6], allAlarmValues[7]) // "6", "7" + } + } } override fun isInitialized(): Boolean { diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/services/MedtrumService.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/services/MedtrumService.kt index c8d793c36c..9fc02a1625 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/services/MedtrumService.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/services/MedtrumService.kt @@ -459,11 +459,9 @@ class MedtrumService : DaggerService(), BLECommCallback { private fun syncRecords(): Boolean { aapsLogger.debug(LTag.PUMP, "syncRecords: called!, syncedSequenceNumber: ${medtrumPump.syncedSequenceNumber}, currentSequenceNumber: ${medtrumPump.currentSequenceNumber}") var result = true - // Note: medtrum app fetches all records when they sync? if (medtrumPump.syncedSequenceNumber < medtrumPump.currentSequenceNumber) { for (sequence in (medtrumPump.syncedSequenceNumber + 1)..medtrumPump.currentSequenceNumber) { result = sendPacketAndGetResponse(GetRecordPacket(injector, sequence), COMMAND_SYNC_TIMEOUT_SEC) - SystemClock.sleep(100) if (result == false) break } } @@ -644,6 +642,7 @@ class MedtrumService : DaggerService(), BLECommCallback { mPacket = packet mPacket?.getRequest()?.let { bleComm.sendMessage(it) } result = currentState.waitForResponse(timeout) + SystemClock.sleep(100) } else { aapsLogger.error(LTag.PUMPCOMM, "Send packet attempt when in non Ready state") } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt index 07f96164d8..a7fd32336f 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt @@ -43,14 +43,22 @@ class MedtrumActivity : MedtrumBaseActivity() { PatchStep.ATTACH_PATCH -> setupViewFragment(MedtrumAttachPatchFragment.newInstance()) PatchStep.ACTIVATE -> setupViewFragment(MedtrumActivateFragment.newInstance()) PatchStep.ACTIVATE_COMPLETE -> setupViewFragment(MedtrumActivateCompleteFragment.newInstance()) - PatchStep.CANCEL, - PatchStep.COMPLETE -> this@MedtrumActivity.finish() PatchStep.ERROR -> Unit // Do nothing, let activity handle this PatchStep.RETRY_ACTIVATION -> setupViewFragment(MedtrumRetryActivationFragment.newInstance()) PatchStep.RETRY_ACTIVATION_CONNECT -> setupViewFragment(MedtrumRetryActivationConnectFragment.newInstance()) PatchStep.START_DEACTIVATION -> setupViewFragment(MedtrumStartDeactivationFragment.newInstance()) PatchStep.DEACTIVATE -> setupViewFragment(MedtrumDeactivatePatchFragment.newInstance()) + PatchStep.CANCEL -> { + handleCancel() + this@MedtrumActivity.finish() + } + + PatchStep.COMPLETE -> { + handleComplete() + this@MedtrumActivity.finish() + } + PatchStep.FORCE_DEACTIVATION -> { medtrumPump.pumpState = MedtrumPumpState.STOPPED moveStep(PatchStep.DEACTIVATION_COMPLETE) diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt index f1e3c5614a..466be92e7b 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt @@ -34,15 +34,17 @@ class MedtrumRetryActivationConnectFragment : MedtrumBaseFragment Unit // Nothing to do here - MedtrumViewModel.SetupStep.FILLED -> forceMoveStep(PatchStep.PRIME) - MedtrumViewModel.SetupStep.PRIMING -> forceMoveStep(PatchStep.PRIMING) - MedtrumViewModel.SetupStep.PRIMED -> forceMoveStep(PatchStep.PRIME_COMPLETE) - MedtrumViewModel.SetupStep.ACTIVATED -> forceMoveStep(PatchStep.ACTIVATE_COMPLETE) + if (patchStep.value != PatchStep.CANCEL) { + when (it) { + MedtrumViewModel.SetupStep.INITIAL -> Unit // Nothing to do here + MedtrumViewModel.SetupStep.FILLED -> forceMoveStep(PatchStep.PRIME) + MedtrumViewModel.SetupStep.PRIMING -> forceMoveStep(PatchStep.PRIMING) + MedtrumViewModel.SetupStep.PRIMED -> forceMoveStep(PatchStep.PRIME_COMPLETE) + MedtrumViewModel.SetupStep.ACTIVATED -> forceMoveStep(PatchStep.ACTIVATE_COMPLETE) - else -> { - aapsLogger.error(LTag.PUMP, "Unexpected state: $it") + else -> { + aapsLogger.error(LTag.PUMP, "Unexpected state: $it") + } } } } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt index da2245ce21..688770f884 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt @@ -47,6 +47,7 @@ class MedtrumViewModel @Inject constructor( val eventHandler: LiveData> get() = _eventHandler + private var oldPatchStep: PatchStep? = null private var mInitPatchStep: PatchStep? = null private var connectRetryCounter = 0 @@ -135,52 +136,41 @@ class MedtrumViewModel @Inject constructor( } fun moveStep(newPatchStep: PatchStep) { - val oldPatchStep = patchStep.value + oldPatchStep = patchStep.value if (oldPatchStep != newPatchStep) { when (newPatchStep) { - PatchStep.CANCEL -> { - if (oldPatchStep !in listOf( - PatchStep.PREPARE_PATCH, - PatchStep.START_DEACTIVATION, - PatchStep.DEACTIVATE, - PatchStep.FORCE_DEACTIVATION, - PatchStep.DEACTIVATION_COMPLETE - ) - ) { - medtrumService?.disconnect("Cancel") - } - } - - PatchStep.COMPLETE -> { - medtrumService?.disconnect("Complete") - } - + PatchStep.CANCEL, + PatchStep.COMPLETE, + PatchStep.ACTIVATE_COMPLETE, + PatchStep.ERROR, PatchStep.START_DEACTIVATION, PatchStep.DEACTIVATE, PatchStep.FORCE_DEACTIVATION, PatchStep.DEACTIVATION_COMPLETE, PatchStep.PREPARE_PATCH, - PatchStep.RETRY_ACTIVATION, - PatchStep.RETRY_ACTIVATION_CONNECT -> { - // Do nothing, deactivation uses commandQueue to control connection + PatchStep.RETRY_ACTIVATION -> { + // Do nothing, these steps don't require a connection } - PatchStep.PREPARE_PATCH_CONNECT -> { + PatchStep.RETRY_ACTIVATION_CONNECT, + PatchStep.PREPARE_PATCH_CONNECT -> { // Make sure we are disconnected, else dont move step if (medtrumService?.isConnected == true) { aapsLogger.info(LTag.PUMP, "moveStep: connected, not moving step") return - } else { } } - else -> { + PatchStep.PRIME, + PatchStep.PRIMING, + PatchStep.PRIME_COMPLETE, + PatchStep.ATTACH_PATCH, + PatchStep.ACTIVATE -> { // Make sure we are connected, else dont move step if (medtrumService?.isConnected == false) { aapsLogger.info(LTag.PUMP, "moveStep: not connected, not moving step") return - } else { } } } @@ -198,6 +188,30 @@ class MedtrumViewModel @Inject constructor( aapsLogger.info(LTag.PUMP, "forceMoveStep: $oldPatchStep -> $newPatchStep") } + fun handleCancel() { + if (oldPatchStep !in listOf( + PatchStep.PREPARE_PATCH, + PatchStep.START_DEACTIVATION, + PatchStep.DEACTIVATE, + PatchStep.FORCE_DEACTIVATION, + PatchStep.DEACTIVATION_COMPLETE + ) + ) { + medtrumService?.disconnect("Cancel") + } + if (oldPatchStep == PatchStep.RETRY_ACTIVATION_CONNECT) { + while (medtrumService?.isConnecting == true || medtrumService?.isConnected == true) { + SystemClock.sleep(100) + } + // Set pump state to FILLED, so user will be able to retry activation again + medtrumPump.pumpState = MedtrumPumpState.FILLED + } + } + + fun handleComplete() { + medtrumService?.disconnect("Complete") + } + fun initializePatchStep(step: PatchStep) { mInitPatchStep = prepareStep(step) } diff --git a/pump/medtrum/src/main/res/values/arrays.xml b/pump/medtrum/src/main/res/values/arrays.xml index f2184b0875..a0ca8e62fc 100644 --- a/pump/medtrum/src/main/res/values/arrays.xml +++ b/pump/medtrum/src/main/res/values/arrays.xml @@ -1,20 +1,19 @@ - - - - - + Light, vibrate and beep + Light and vibrate + Light and beep + Light Vibrate and beep - Vibrate only - Beep only - None + Vibrate + Beep + Silent - - - - + 0 + 1 + 2 + 3 4 5 6 diff --git a/pump/medtrum/src/main/res/xml/pref_medtrum_pump.xml b/pump/medtrum/src/main/res/xml/pref_medtrum_pump.xml index 9195ccdf9f..7d58491568 100644 --- a/pump/medtrum/src/main/res/xml/pref_medtrum_pump.xml +++ b/pump/medtrum/src/main/res/xml/pref_medtrum_pump.xml @@ -20,7 +20,7 @@ android:summary="@string/patch_expiration_summary" />