diff --git a/pump/equil/src/main/kotlin/app/aaps/pump/equil/EquilConst.kt b/pump/equil/src/main/kotlin/app/aaps/pump/equil/EquilConst.kt index b7cef694f62..311d3ea1c35 100644 --- a/pump/equil/src/main/kotlin/app/aaps/pump/equil/EquilConst.kt +++ b/pump/equil/src/main/kotlin/app/aaps/pump/equil/EquilConst.kt @@ -4,7 +4,7 @@ object EquilConst { const val EQUIL_CMD_TIME_OUT: Long = 300000 const val EQUIL_BLE_WRITE_TIME_OUT: Long = 20 - const val EQUIL_BLE_NEXT_CMD: Long = 150 + const val EQUIL_BLE_NEXT_CMD: Long = 500 const val EQUIL_SUPPORT_LEVEL = 5.3f const val EQUIL_BOLUS_THRESHOLD_STEP = 1600 const val EQUIL_BASAL_THRESHOLD_STEP = 240 diff --git a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/EquilManager.kt b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/EquilManager.kt index f4a4b7f9a96..aa513b0cc34 100644 --- a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/EquilManager.kt +++ b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/EquilManager.kt @@ -526,6 +526,24 @@ class EquilManager @Inject constructor( fun getSerialNumber(): String = equilState?.serialNumber ?: "UNKNOWN" + fun getFirmwareVersion(): String? = equilState?.firmwareVersion + + fun getResistanceThreshold(): Int = getResistanceThreshold(getSerialNumber(), getFirmwareVersion()) + + fun getResistanceThreshold(serialNumber: String?, firmwareVersion: String?): Int { + val firstChar = serialNumber?.firstOrNull()?.uppercaseChar() ?: return LEGACY_RESISTANCE_THRESHOLD + if (firstChar !in VERSION_CHECK_SERIAL_PREFIXES) { + return LEGACY_RESISTANCE_THRESHOLD + } + + val version = firmwareVersion?.toFloatOrNull() ?: return LEGACY_RESISTANCE_THRESHOLD + return if (version >= EquilConst.EQUIL_SUPPORT_LEVEL) { + HIGH_RESISTANCE_THRESHOLD + } else { + LEGACY_RESISTANCE_THRESHOLD + } + } + fun setBolusRecord(bolusRecord: EquilBolusRecord?) { equilState?.bolusRecord = bolusRecord storePodState() @@ -651,6 +669,7 @@ class EquilManager @Inject constructor( var basalSchedule: BasalSchedule? = null } + fun setRunMode(mode: Int) { when (mode) { 0 -> setRunMode(RunMode.SUSPEND) @@ -775,6 +794,10 @@ class EquilManager @Inject constructor( companion object { + const val HIGH_RESISTANCE_THRESHOLD = 500 + const val LEGACY_RESISTANCE_THRESHOLD = 220 + val VERSION_CHECK_SERIAL_PREFIXES = setOf('0', '1', '3', 'A', 'D') + private fun createGson(): Gson { val gsonBuilder = GsonBuilder() .registerTypeAdapter(DateTime::class.java, JsonSerializer { dateTime: DateTime?, typeOfSrc: Type?, context: JsonSerializationContext? -> JsonPrimitive(ISODateTimeFormat.dateTime().print(dateTime)) }) diff --git a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdDevicesOldGet.kt b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdDevicesOldGet.kt index 174c3500b13..acc02076a79 100644 --- a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdDevicesOldGet.kt +++ b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdDevicesOldGet.kt @@ -176,9 +176,8 @@ class CmdDevicesOldGet( fun isSupport(serialNumber: String): Boolean { val firstChar = serialNumber.firstOrNull()?.uppercaseChar() - val needsVersionCheck = setOf('0', '1', '3', 'A', 'D') return when (firstChar) { - in needsVersionCheck -> firmwareVersion >= EquilConst.EQUIL_SUPPORT_LEVEL + in EquilManager.VERSION_CHECK_SERIAL_PREFIXES -> firmwareVersion >= EquilConst.EQUIL_SUPPORT_LEVEL else -> true } } diff --git a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdResistanceGet.kt b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdResistanceGet.kt index e9c5283963c..1e178cf46dc 100644 --- a/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdResistanceGet.kt +++ b/pump/equil/src/main/kotlin/app/aaps/pump/equil/manager/command/CmdResistanceGet.kt @@ -37,11 +37,12 @@ class CmdResistanceGet( override fun decodeConfirmData(data: ByteArray) { val value = Utils.bytesToInt(data[7], data[6]) + val resistanceThreshold = equilManager.getResistanceThreshold() cmdSuccess = true - enacted = value >= 500 + enacted = value >= resistanceThreshold aapsLogger.debug( LTag.PUMPCOMM, - "CmdResistanceGet: resistance=$value, threshold=500, enacted=$enacted (pin ${if (enacted) "REACHED" else "NOT reached"} piston)" + "CmdResistanceGet: resistance=$value, threshold=$resistanceThreshold, enacted=$enacted (pin ${if (enacted) "REACHED" else "NOT reached"} piston)" ) synchronized(this) { (this as Object).notify()