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 bf15b3a240..76abaee1f7 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 @@ -53,6 +53,7 @@ import app.aaps.core.ui.toast.ToastUtils import app.aaps.core.validators.ValidatingEditTextPreference import dagger.android.HasAndroidInjector import info.nightscout.pump.medtrum.comm.enums.MedtrumPumpState +import info.nightscout.pump.medtrum.comm.enums.ModelType import info.nightscout.pump.medtrum.services.MedtrumService import info.nightscout.pump.medtrum.ui.MedtrumOverviewFragment import info.nightscout.pump.medtrum.util.MedtrumSnUtil @@ -153,7 +154,7 @@ import kotlin.math.abs override fun afterTextChanged(newValue: Editable?) { val newSN = newValue?.toString()?.toLongOrNull(radix = 16) ?: 0 val newDeviceType = MedtrumSnUtil().getDeviceTypeFromSerial(newSN) - editText.error = if (newDeviceType == MedtrumSnUtil.INVALID) { + editText.error = if (newDeviceType == ModelType.INVALID) { rh.gs(R.string.sn_input_invalid) } else { null @@ -174,7 +175,7 @@ import kotlin.math.abs val newDeviceType = MedtrumSnUtil().getDeviceTypeFromSerial(newSN) when { - newDeviceType == MedtrumSnUtil.INVALID -> { + newDeviceType == ModelType.INVALID -> { preferenceFragment.activity?.let { activity -> OKDialog.show(activity, rh.gs(R.string.sn_input_title), rh.gs(R.string.sn_input_invalid)) } @@ -183,7 +184,7 @@ import kotlin.math.abs medtrumPump.pumpType(newDeviceType) == PumpType.MEDTRUM_UNTESTED -> { preferenceFragment.activity?.let { activity -> - OKDialog.show(activity, rh.gs(R.string.sn_input_title), rh.gs(R.string.pump_unsupported, newDeviceType)) + OKDialog.show(activity, rh.gs(R.string.sn_input_title), rh.gs(R.string.pump_unsupported, newDeviceType.toString())) } false } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPump.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPump.kt index 54dadef505..dbea336d27 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPump.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/MedtrumPump.kt @@ -18,6 +18,7 @@ import info.nightscout.pump.medtrum.comm.enums.AlarmSetting import info.nightscout.pump.medtrum.comm.enums.AlarmState import info.nightscout.pump.medtrum.comm.enums.BasalType import info.nightscout.pump.medtrum.comm.enums.MedtrumPumpState +import info.nightscout.pump.medtrum.comm.enums.ModelType import info.nightscout.pump.medtrum.extension.toByteArray import info.nightscout.pump.medtrum.extension.toInt import info.nightscout.pump.medtrum.util.MedtrumSnUtil @@ -291,13 +292,13 @@ class MedtrumPump @Inject constructor( var desiredPumpWarning = true var desiredPumpWarningExpiryThresholdHours = 72L - fun pumpType(): PumpType = pumpType(deviceType) + fun pumpType(): PumpType = pumpType(ModelType.fromValue(deviceType)) - fun pumpType(type: Int): PumpType = + fun pumpType(type: ModelType): PumpType = when (type) { - MedtrumSnUtil.MD_0201, MedtrumSnUtil.MD_8201 -> PumpType.MEDTRUM_NANO - MedtrumSnUtil.MD_8301 -> PumpType.MEDTRUM_300U - else -> PumpType.MEDTRUM_UNTESTED + ModelType.MD0201, ModelType.MD8201 -> PumpType.MEDTRUM_NANO + ModelType.MD8301 -> PumpType.MEDTRUM_300U + else -> PumpType.MEDTRUM_UNTESTED } fun loadVarsFromSP() { @@ -569,7 +570,7 @@ class MedtrumPump @Inject constructor( AlarmState.EXPIRED -> R.string.alarm_expired AlarmState.RESERVOIR_EMPTY -> R.string.alarm_reservoir_empty AlarmState.PATCH_FAULT -> R.string.alarm_patch_fault - AlarmState.PATCH_FAULT2 -> R.string.alarm_patch_fault2 + AlarmState.PATCH_FAULT2 -> R.string.alarm_patch_fault // To avoid confusion, medtrum app also doesn't show patch fault 2 AlarmState.BASE_FAULT -> R.string.alarm_base_fault AlarmState.BATTERY_OUT -> R.string.alarm_battery_out AlarmState.NO_CALIBRATION -> R.string.alarm_no_calibration diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/code/PatchStep.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/code/PatchStep.kt index ea0cdf3d28..401dfa9a97 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/code/PatchStep.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/code/PatchStep.kt @@ -15,7 +15,6 @@ enum class PatchStep { ACTIVATE_COMPLETE, RETRY_ACTIVATION, RETRY_ACTIVATION_CONNECT, - ERROR, CANCEL, COMPLETE; } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/comm/enums/ModelType.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/comm/enums/ModelType.kt new file mode 100644 index 0000000000..da1afde177 --- /dev/null +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/comm/enums/ModelType.kt @@ -0,0 +1,17 @@ +package info.nightscout.pump.medtrum.comm.enums + +enum class ModelType(val value: Int) { + INVALID(-1), + MD0201(80), + MD5201(81), + MD0202(82), + MD5202(83), + MD8201(88), + MD8301(98); + + companion object { + fun fromValue(value: Int): ModelType { + return values().find { it.value == value } ?: INVALID + } + } +} 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 4d9d52dd38..8a0153ae54 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 @@ -132,7 +132,7 @@ class MedtrumService : DaggerService(), BLECommCallback { if (event.isChanged(rh.gs(R.string.key_sn_input))) { aapsLogger.debug(LTag.PUMPCOMM, "Serial number changed, reporting new pump!") medtrumPump.loadUserSettingsFromSP() - medtrumPump.deviceType = MedtrumSnUtil().getDeviceTypeFromSerial(medtrumPump.pumpSN) + medtrumPump.deviceType = MedtrumSnUtil().getDeviceTypeFromSerial(medtrumPump.pumpSN).value medtrumPump.resetPatchParameters() pumpSync.connectNewPump() medtrumPump.setFakeTBRIfNotSet() diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivateFragment.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivateFragment.kt index 44df41ee78..e56b0b800d 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivateFragment.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivateFragment.kt @@ -38,7 +38,6 @@ class MedtrumActivateFragment : MedtrumBaseFragment moveStep(PatchStep.ACTIVATE_COMPLETE) MedtrumViewModel.SetupStep.ERROR -> { - moveStep(PatchStep.ERROR) updateSetupStep(MedtrumViewModel.SetupStep.PRIMED) // Reset setup step binding.textActivatingPump.text = rh.gs(R.string.activating_error) binding.btnPositive.visibility = View.VISIBLE 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 65bec84601..94136e78fd 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,7 +43,6 @@ class MedtrumActivity : MedtrumBaseActivity() { PatchStep.ATTACH_PATCH -> setupViewFragment(MedtrumAttachPatchFragment.newInstance()) PatchStep.ACTIVATE -> setupViewFragment(MedtrumActivateFragment.newInstance()) PatchStep.ACTIVATE_COMPLETE -> setupViewFragment(MedtrumActivateCompleteFragment.newInstance()) - 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()) diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumDeactivatePatchFragment.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumDeactivatePatchFragment.kt index 9201a158da..cdf039bb5d 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumDeactivatePatchFragment.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumDeactivatePatchFragment.kt @@ -38,7 +38,6 @@ class MedtrumDeactivatePatchFragment : MedtrumBaseFragment { - moveStep(PatchStep.ERROR) updateSetupStep(MedtrumViewModel.SetupStep.START_DEACTIVATION) // Reset setup step binding.textDeactivatingPump.text = rh.gs(R.string.deactivating_error) binding.btnNegative.visibility = View.VISIBLE diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumPrimingFragment.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumPrimingFragment.kt index 245e4a9526..13012c3eb4 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumPrimingFragment.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumPrimingFragment.kt @@ -39,7 +39,6 @@ class MedtrumPrimingFragment : MedtrumBaseFragment moveStep(PatchStep.PRIME_COMPLETE) MedtrumViewModel.SetupStep.ERROR -> { - moveStep(PatchStep.ERROR) updateSetupStep(MedtrumViewModel.SetupStep.FILLED) // Reset setup step binding.textWaitForPriming.text = rh.gs(R.string.priming_error) binding.btnNegative.visibility = View.VISIBLE diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumOverviewViewModel.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumOverviewViewModel.kt index decdcf3745..c01f23fbce 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumOverviewViewModel.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumOverviewViewModel.kt @@ -14,6 +14,7 @@ import info.nightscout.pump.medtrum.R import info.nightscout.pump.medtrum.code.ConnectionState import info.nightscout.pump.medtrum.code.EventType import info.nightscout.pump.medtrum.comm.enums.MedtrumPumpState +import info.nightscout.pump.medtrum.comm.enums.ModelType import info.nightscout.pump.medtrum.ui.MedtrumBaseNavigator import info.nightscout.pump.medtrum.ui.event.SingleLiveEvent import info.nightscout.pump.medtrum.ui.event.UIEvent @@ -199,7 +200,7 @@ class MedtrumOverviewViewModel @Inject constructor( val activeAlarmStrings = medtrumPump.activeAlarms.map { medtrumPump.alarmStateToString(it) } _activeAlarms.postValue(activeAlarmStrings.joinToString("\n")) - _pumpType.postValue(medtrumPump.deviceType.toString()) + _pumpType.postValue(ModelType.fromValue(medtrumPump.deviceType).toString()) _fwVersion.postValue(medtrumPump.swVersion) _patchNo.postValue(medtrumPump.patchId.toString()) 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 a5e38c7c22..3745ab05e9 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 @@ -137,7 +137,6 @@ class MedtrumViewModel @Inject constructor( PatchStep.CANCEL, PatchStep.COMPLETE, PatchStep.ACTIVATE_COMPLETE, - PatchStep.ERROR, PatchStep.START_DEACTIVATION, PatchStep.DEACTIVATE, PatchStep.FORCE_DEACTIVATION, @@ -307,7 +306,6 @@ class MedtrumViewModel @Inject constructor( PatchStep.COMPLETE, PatchStep.FORCE_DEACTIVATION, - PatchStep.ERROR, PatchStep.CANCEL -> _title.value } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/util/MedtrumSnUtil.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/util/MedtrumSnUtil.kt index ad16adc630..8f21aeef52 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/util/MedtrumSnUtil.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/util/MedtrumSnUtil.kt @@ -1,33 +1,23 @@ package info.nightscout.pump.medtrum.util +import info.nightscout.pump.medtrum.comm.enums.ModelType import info.nightscout.pump.medtrum.encryption.Crypt class MedtrumSnUtil { - companion object { - - const val INVALID = -1 - const val MD_0201 = 80 - const val MD_5201 = 81 - const val MD_0202 = 82 - const val MD_5202 = 83 - const val MD_8201 = 88 - const val MD_8301 = 98 - } - - fun getDeviceTypeFromSerial(serial: Long): Int { + fun getDeviceTypeFromSerial(serial: Long): ModelType { if (serial in 106000000..106999999) { - return INVALID + return ModelType.INVALID } return when (Crypt().simpleDecrypt(serial)) { - in 126000000..126999999 -> MD_0201 - in 127000000..127999999 -> MD_5201 - in 128000000..128999999 -> MD_8201 - in 130000000..130999999 -> MD_0202 - in 131000000..131999999 -> MD_5202 - in 148000000..148999999 -> MD_8301 - else -> INVALID + in 126000000..126999999 -> ModelType.MD0201 + in 127000000..127999999 -> ModelType.MD5201 + in 128000000..128999999 -> ModelType.MD8201 + in 130000000..130999999 -> ModelType.MD0202 + in 131000000..131999999 -> ModelType.MD5202 + in 148000000..148999999 -> ModelType.MD8301 + else -> ModelType.INVALID } } } diff --git a/pump/medtrum/src/main/res/values/strings.xml b/pump/medtrum/src/main/res/values/strings.xml index 10e4496dc8..608c18b437 100644 --- a/pump/medtrum/src/main/res/values/strings.xml +++ b/pump/medtrum/src/main/res/values/strings.xml @@ -77,7 +77,6 @@ Expired Reservoir empty Patch fault - Patch fault 2 Base fault Battery out No calibration @@ -142,7 +141,7 @@ Serial Number Enter the serial number of your pump base. Invalid serial number! - Pump untested: %1$d! Please contact us at discord or github for support + Pump untested: %1$s! Please contact us at discord or github for support Alarm Settings Select your preferred pump alarm settings. Notification on pump warning diff --git a/pump/medtrum/src/test/java/info/nightscout/pump/medtrum/MedtrumPumpTest.kt b/pump/medtrum/src/test/java/info/nightscout/pump/medtrum/MedtrumPumpTest.kt index 5ba7ff5227..78ca63cfe6 100644 --- a/pump/medtrum/src/test/java/info/nightscout/pump/medtrum/MedtrumPumpTest.kt +++ b/pump/medtrum/src/test/java/info/nightscout/pump/medtrum/MedtrumPumpTest.kt @@ -9,6 +9,7 @@ import app.aaps.core.interfaces.rx.events.EventOverviewBolusProgress import app.aaps.core.interfaces.utils.T import com.google.common.truth.Truth.assertThat import info.nightscout.pump.medtrum.comm.enums.BasalType +import info.nightscout.pump.medtrum.comm.enums.ModelType import info.nightscout.pump.medtrum.util.MedtrumSnUtil import org.json.JSONObject import org.junit.jupiter.api.Test @@ -139,7 +140,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val receivedTime = 1500L val duration = T.mins(5).msecs() - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -191,7 +192,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -240,7 +241,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -293,7 +294,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val duration = T.mins(5).msecs() medtrumPump.actualBasalProfile = medtrumPump.buildMedtrumProfileArray(validProfile)!! - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -346,7 +347,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -441,7 +442,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -492,7 +493,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks Mockito.`when`(pumpSync.expectedPumpState()).thenReturn( @@ -537,7 +538,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -581,7 +582,7 @@ class MedtrumPumpTest : MedtrumTestBase() { val basalStartTime = 1000L val receivedTime = 1500L - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks Mockito.`when`(pumpSync.expectedPumpState()).thenReturn( @@ -650,7 +651,7 @@ class MedtrumPumpTest : MedtrumTestBase() { @Test fun setFakeTBRIfNotSetWhenNoFakeTBRAlreadyRunningExpectPumpSync() { // Inputs - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java) @@ -684,7 +685,7 @@ class MedtrumPumpTest : MedtrumTestBase() { @Test fun setFakeTBRIfNotSetWhenFakeTBRAlreadyRunningExpectNoPumpSync() { // Inputs - medtrumPump.deviceType = MedtrumSnUtil.MD_8301 + medtrumPump.deviceType = ModelType.MD8301.value // Mocks val expectedTemporaryBasal: PumpSync.PumpState.TemporaryBasal = mock(PumpSync.PumpState.TemporaryBasal::class.java)