diff --git a/app/src/androidTest/kotlin/app/aaps/ReplayApsResultsTest.kt b/app/src/androidTest/kotlin/app/aaps/ReplayApsResultsTest.kt index faee3edf27a..10c9e251146 100644 --- a/app/src/androidTest/kotlin/app/aaps/ReplayApsResultsTest.kt +++ b/app/src/androidTest/kotlin/app/aaps/ReplayApsResultsTest.kt @@ -10,6 +10,7 @@ import app.aaps.core.interfaces.aps.CurrentTemp import app.aaps.core.interfaces.aps.GlucoseStatus import app.aaps.core.interfaces.aps.MealData import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.logging.AAPSLogger import app.aaps.core.interfaces.logging.LTag import app.aaps.core.interfaces.maintenance.FileListProvider @@ -667,7 +668,7 @@ class ReplayApsResultsTest @Inject constructor() { for (i in 0 until determineBasalResult.iobData!!.length()) iobData.add(determineBasalResult.iobData!!.getJSONObject(i).toIob()) val currentTime = determineBasalResult.currentTime - val profile = OapsProfile( + val profile = OapsProfileAutoIsf( dia = 0.0, min_5m_carbimpact = 0.0, max_iob = determineBasalResult.profile.getDouble("max_iob"), @@ -709,8 +710,6 @@ class ReplayApsResultsTest @Inject constructor() { autosens_max = determineBasalResult.profile.getDouble("autosens_max"), out_units = determineBasalResult.profile.optString("out_units"), variable_sens = varSens, // TODO only available in result.variableSens? , not in determineBasalResult.profile.getDouble("variable_sens"), - insulinDivisor = 0, - TDD = 0.0, autoISF_version = determineBasalResult.profile.optString("autoISF_version"), enable_autoISF = determineBasalResult.profile.getBoolean("enable_autoISF"), autoISF_max = determineBasalResult.profile.getDouble("autoISF_max"), @@ -770,19 +769,19 @@ class ReplayApsResultsTest @Inject constructor() { // aapsLogger.debug(LTag.APS, resultKt.reason.toString()) aapsLogger.debug(LTag.APS, "File: $filename") // // assertThat(resultKt.reason.toString()).isEqualTo(result?.json?.getString("reason")) - assertThat(resultKt.tick ?: "").isEqualTo(result?.json()?.optString("tick")) - assertThat(resultKt.eventualBG ?: Double.NaN).isEqualTo(result?.json()?.optDouble("eventualBG")) - assertThat(resultKt.targetBG ?: Double.NaN).isEqualTo(result?.json()?.optDouble("targetBG")) - assertThat(resultKt.insulinReq ?: Double.NaN).isEqualTo(result?.json()?.optDouble("insulinReq")) - assertThat(resultKt.carbsReq ?: 0).isEqualTo(result?.json()?.optInt("carbsReq")) - assertThat(resultKt.carbsReqWithin ?: 0).isEqualTo(result?.json()?.optInt("carbsReqWithin")) - assertThat(resultKt.units ?: Double.NaN).isEqualTo(result?.json()?.optDouble("units")) - assertThat(resultKt.sensitivityRatio ?: Double.NaN).isEqualTo(result?.json()?.optDouble("sensitivityRatio")) - assertThat(resultKt.duration ?: 0).isEqualTo(result?.json()?.optInt("duration")) - assertThat(resultKt.rate ?: Double.NaN).isEqualTo(result?.json()?.optDouble("rate")) - assertThat(resultKt.COB ?: Double.NaN).isEqualTo(result?.json()?.optDouble("COB")) - assertThat(resultKt.IOB ?: Double.NaN).isEqualTo(result?.json()?.optDouble("IOB")) - assertThat(resultKt.variable_sens ?: Double.NaN).isEqualTo(result?.json()?.optDouble("variable_sens")) + assertThat(resultKt.tick ?: "").isEqualTo(result.json()?.optString("tick")) + assertThat(resultKt.eventualBG ?: 0.0).isWithin(1.0).of(result.json()?.optDouble("eventualBG") ?: 0.0) + assertThat(resultKt.targetBG ?: Double.NaN).isEqualTo(result.json()?.optDouble("targetBG")) + assertThat(resultKt.insulinReq ?: Double.NaN).isEqualTo(result.json()?.optDouble("insulinReq")) + assertThat(resultKt.carbsReq ?: 0).isEqualTo(result.json()?.optInt("carbsReq")) + assertThat(resultKt.carbsReqWithin ?: 0).isEqualTo(result.json()?.optInt("carbsReqWithin")) + assertThat(resultKt.units ?: Double.NaN).isEqualTo(result.json()?.optDouble("units")) + assertThat(resultKt.sensitivityRatio ?: Double.NaN).isEqualTo(result.json()?.optDouble("sensitivityRatio")) + assertThat(resultKt.duration ?: 0).isEqualTo(result.json()?.optInt("duration")) + assertThat(resultKt.rate ?: Double.NaN).isEqualTo(result.json()?.optDouble("rate")) + assertThat(resultKt.COB ?: Double.NaN).isEqualTo(result.json()?.optDouble("COB")) + assertThat(resultKt.IOB ?: Double.NaN).isEqualTo(result.json()?.optDouble("IOB")) + assertThat(resultKt.variable_sens ?: Double.NaN).isEqualTo(result.json()?.optDouble("variable_sens")) } enum class TestSource { ASSET, FILE } diff --git a/app/src/androidTest/kotlin/app/aaps/plugins/aps/openAPS/APSResultObject.kt b/app/src/androidTest/kotlin/app/aaps/plugins/aps/openAPS/APSResultObject.kt index 8b6bd7412ff..7ace3dea5a2 100644 --- a/app/src/androidTest/kotlin/app/aaps/plugins/aps/openAPS/APSResultObject.kt +++ b/app/src/androidTest/kotlin/app/aaps/plugins/aps/openAPS/APSResultObject.kt @@ -12,6 +12,7 @@ import app.aaps.core.interfaces.aps.GlucoseStatus import app.aaps.core.interfaces.aps.IobTotal import app.aaps.core.interfaces.aps.MealData import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.aps.Predictions import app.aaps.core.interfaces.constraints.Constraint import app.aaps.core.interfaces.constraints.ConstraintsChecker @@ -82,6 +83,7 @@ open class APSResultObject(protected val injector: HasAndroidInjector) : APSResu override var glucoseStatus: GlucoseStatus? = null override var currentTemp: CurrentTemp? = null override var oapsProfile: OapsProfile? = null + override var oapsProfileAutoIsf: OapsProfileAutoIsf? = null override var mealData: MealData? = null override var autosensResult: AutosensResult? = null diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/APSResult.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/APSResult.kt index bd46d233de3..74eefda97ec 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/APSResult.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/APSResult.kt @@ -43,6 +43,7 @@ interface APSResult { var glucoseStatus: GlucoseStatus? var currentTemp: CurrentTemp? var oapsProfile: OapsProfile? + var oapsProfileAutoIsf: OapsProfileAutoIsf? var mealData: MealData? val iob: IobTotal? get() = iobData?.get(0) diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfile.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfile.kt index b9991cd6d77..5dbbe01c4eb 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfile.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfile.kt @@ -47,29 +47,5 @@ data class OapsProfile( //DynISF only var variable_sens: Double, var insulinDivisor: Int, - var TDD: Double, - //AutoISF only - var autoISF_version: String = "", - var enable_autoISF: Boolean = true, - var autoISF_max: Double = 1.0, - var autoISF_min: Double = 1.0, - var bgAccel_ISF_weight: Double = 0.0, - var bgBrake_ISF_weight: Double = 0.0, - var enable_pp_ISF_always: Boolean = false, - var pp_ISF_hours: Int = 3, - var pp_ISF_weight: Double = 0.0, - var delta_ISFrange_weight: Double = 0.0, - var lower_ISFrange_weight: Double = 0.0, - var higher_ISFrange_weight: Double = 0.0, - var enable_dura_ISF_with_COB: Boolean = false, - var dura_ISF_weight: Double = 0.0, - var smb_delivery_ratio: Double = 0.5, - var smb_delivery_ratio_min: Double = 0.5, - var smb_delivery_ratio_max: Double = 0.5, - var smb_delivery_ratio_bg_range: Double = 0.0, - var smb_max_range_extension: Double = 1.0, - var enableSMB_EvenOn_OddOff: Boolean = false, - var enableSMB_EvenOn_OddOff_always: Boolean = false, - var iob_threshold_percent: Int = 100, - var profile_percentage: Int = 100 + var TDD: Double ) \ No newline at end of file diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfileAutoIsf.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfileAutoIsf.kt new file mode 100644 index 00000000000..69f5e97b61c --- /dev/null +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/aps/OapsProfileAutoIsf.kt @@ -0,0 +1,72 @@ +package app.aaps.core.interfaces.aps + +import kotlinx.serialization.Serializable + +@Serializable +data class OapsProfileAutoIsf( + var dia: Double, // AMA only + var min_5m_carbimpact: Double, // AMA only + var max_iob: Double, + var max_daily_basal: Double, + var max_basal: Double, + var min_bg: Double, + var max_bg: Double, + var target_bg: Double, + var carb_ratio: Double, + var sens: Double, + var autosens_adjust_targets: Boolean, // AMA only + var max_daily_safety_multiplier: Double, + var current_basal_safety_multiplier: Double, + var high_temptarget_raises_sensitivity: Boolean, + var low_temptarget_lowers_sensitivity: Boolean, + var sensitivity_raises_target: Boolean, + var resistance_lowers_target: Boolean, + var adv_target_adjustments: Boolean, + var exercise_mode: Boolean, + var half_basal_exercise_target: Int, + var maxCOB: Int, + var skip_neutral_temps: Boolean, + var remainingCarbsCap: Int, + var enableUAM: Boolean, + var A52_risk_enable: Boolean, + var SMBInterval: Int, + var enableSMB_with_COB: Boolean, + var enableSMB_with_temptarget: Boolean, + var allowSMB_with_high_temptarget: Boolean, + var enableSMB_always: Boolean, + var enableSMB_after_carbs: Boolean, + var maxSMBBasalMinutes: Int, + var maxUAMSMBBasalMinutes: Int, + var bolus_increment: Double, + var carbsReqThreshold: Int, + var current_basal: Double, + var temptargetSet: Boolean, + var autosens_max: Double, + var out_units: String, + var lgsThreshold: Int?, + //AutoISF only + var variable_sens: Double, + var autoISF_version: String, + var enable_autoISF: Boolean, + var autoISF_max: Double, + var autoISF_min: Double, + var bgAccel_ISF_weight: Double, + var bgBrake_ISF_weight: Double, + var enable_pp_ISF_always: Boolean, + var pp_ISF_hours: Int, + var pp_ISF_weight: Double, + var delta_ISFrange_weight: Double, + var lower_ISFrange_weight: Double, + var higher_ISFrange_weight: Double, + var enable_dura_ISF_with_COB: Boolean, + var dura_ISF_weight: Double, + var smb_delivery_ratio: Double, + var smb_delivery_ratio_min: Double, + var smb_delivery_ratio_max: Double, + var smb_delivery_ratio_bg_range: Double, + var smb_max_range_extension: Double, + var enableSMB_EvenOn_OddOff: Boolean, + var enableSMB_EvenOn_OddOff_always: Boolean, + var iob_threshold_percent: Int, + var profile_percentage: Int +) \ No newline at end of file diff --git a/core/objects/src/main/kotlin/app/aaps/core/objects/aps/DetermineBasalResult.kt b/core/objects/src/main/kotlin/app/aaps/core/objects/aps/DetermineBasalResult.kt index 58ac79fd5af..880306bd8fe 100644 --- a/core/objects/src/main/kotlin/app/aaps/core/objects/aps/DetermineBasalResult.kt +++ b/core/objects/src/main/kotlin/app/aaps/core/objects/aps/DetermineBasalResult.kt @@ -12,6 +12,7 @@ import app.aaps.core.interfaces.aps.GlucoseStatus import app.aaps.core.interfaces.aps.IobTotal import app.aaps.core.interfaces.aps.MealData import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.aps.Predictions import app.aaps.core.interfaces.aps.RT import app.aaps.core.interfaces.constraints.Constraint @@ -79,6 +80,7 @@ class DetermineBasalResult @Inject constructor(val injector: HasAndroidInjector) override var glucoseStatus: GlucoseStatus? = null override var currentTemp: CurrentTemp? = null override var oapsProfile: OapsProfile? = null + override var oapsProfileAutoIsf: OapsProfileAutoIsf? = null override var mealData: MealData? = null lateinit var result: RT diff --git a/database/persistence/src/main/kotlin/app/aaps/database/persistence/converters/APSResultExtension.kt b/database/persistence/src/main/kotlin/app/aaps/database/persistence/converters/APSResultExtension.kt index fa808549e38..875c799e79c 100644 --- a/database/persistence/src/main/kotlin/app/aaps/database/persistence/converters/APSResultExtension.kt +++ b/database/persistence/src/main/kotlin/app/aaps/database/persistence/converters/APSResultExtension.kt @@ -7,6 +7,7 @@ import app.aaps.core.interfaces.aps.GlucoseStatus import app.aaps.core.interfaces.aps.IobTotal import app.aaps.core.interfaces.aps.MealData import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.aps.RT import app.aaps.core.objects.aps.DetermineBasalResult import dagger.android.HasAndroidInjector @@ -17,8 +18,7 @@ import kotlinx.serialization.json.Json fun app.aaps.database.entities.APSResult.fromDb(injector: HasAndroidInjector): APSResult = when (algorithm) { app.aaps.database.entities.APSResult.Algorithm.AMA, - app.aaps.database.entities.APSResult.Algorithm.SMB, - app.aaps.database.entities.APSResult.Algorithm.AUTO_ISF -> + app.aaps.database.entities.APSResult.Algorithm.SMB -> DetermineBasalResult(injector, Json.decodeFromString(this.resultJson)).also { result -> result.date = this.timestamp result.glucoseStatus = this.glucoseStatusJson?.let { Json.decodeFromString(it) } @@ -29,15 +29,25 @@ fun app.aaps.database.entities.APSResult.fromDb(injector: HasAndroidInjector): A result.autosensResult = this.autosensDataJson?.let { Json.decodeFromString(it) } } - else -> error("Unsupported") + app.aaps.database.entities.APSResult.Algorithm.AUTO_ISF -> + DetermineBasalResult(injector, Json.decodeFromString(this.resultJson)).also { result -> + result.date = this.timestamp + result.glucoseStatus = this.glucoseStatusJson?.let { Json.decodeFromString(it) } + result.currentTemp = this.currentTempJson?.let { Json.decodeFromString(it) } + result.iobData = this.iobDataJson?.let { Json.decodeFromString(it) } + result.oapsProfileAutoIsf = this.profileJson?.let { Json.decodeFromString(it) } + result.mealData = this.mealDataJson?.let { Json.decodeFromString(it) } + result.autosensResult = this.autosensDataJson?.let { Json.decodeFromString(it) } + } + + else -> error("Unsupported") } @OptIn(ExperimentalSerializationApi::class) fun APSResult.toDb(): app.aaps.database.entities.APSResult = when (algorithm) { APSResult.Algorithm.AMA, - APSResult.Algorithm.SMB, - APSResult.Algorithm.AUTO_ISF -> + APSResult.Algorithm.SMB -> app.aaps.database.entities.APSResult( timestamp = this.date, algorithm = this.algorithm.toDb(), @@ -50,7 +60,20 @@ fun APSResult.toDb(): app.aaps.database.entities.APSResult = resultJson = Json.encodeToString(RT.serializer(), this.rawData() as RT) ) - else -> error("Unsupported") + APSResult.Algorithm.AUTO_ISF -> + app.aaps.database.entities.APSResult( + timestamp = this.date, + algorithm = this.algorithm.toDb(), + glucoseStatusJson = this.glucoseStatus?.let { Json.encodeToString(GlucoseStatus.serializer(), it) }, + currentTempJson = this.currentTemp?.let { Json.encodeToString(CurrentTemp.serializer(), it) }, + iobDataJson = this.iobData?.let { Json.encodeToString(ArraySerializer(IobTotal.serializer()), it) }, + profileJson = this.oapsProfileAutoIsf?.let { Json.encodeToString(OapsProfileAutoIsf.serializer(), it) }, + mealDataJson = this.mealData?.let { Json.encodeToString(MealData.serializer(), it) }, + autosensDataJson = this.autosensResult?.let { Json.encodeToString(AutosensResult.serializer(), it) }, + resultJson = Json.encodeToString(RT.serializer(), this.rawData() as RT) + ) + + else -> error("Unsupported") } fun app.aaps.database.entities.APSResult.Algorithm.fromDb(): APSResult.Algorithm = diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/OpenAPSFragment.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/OpenAPSFragment.kt index f7fe7035844..14ef9565b29 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/OpenAPSFragment.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/OpenAPSFragment.kt @@ -134,7 +134,7 @@ class OpenAPSFragment : DaggerFragment(), MenuProvider { binding.glucosestatus.text = lastAPSResult.glucoseStatus?.dataClassToHtml(listOf("glucose", "delta", "shortAvgDelta", "longAvgDelta")) binding.currenttemp.text = lastAPSResult.currentTemp?.dataClassToHtml() binding.iobdata.text = rh.gs(R.string.array_of_elements, lastAPSResult.iobData?.size) + "\n" + lastAPSResult.iob?.dataClassToHtml() - binding.profile.text = lastAPSResult.oapsProfile?.dataClassToHtml() + binding.profile.text = lastAPSResult.oapsProfile?.dataClassToHtml() ?: lastAPSResult.oapsProfileAutoIsf?.dataClassToHtml() binding.mealdata.text = lastAPSResult.mealData?.dataClassToHtml() binding.scriptdebugdata.text = lastAPSResult.scriptDebug?.joinToString("\n") binding.constraints.text = lastAPSResult.inputConstraints?.getReasons() diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/DetermineBasalAutoISF.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/DetermineBasalAutoISF.kt index 7884b85752d..75dd2ed7b0e 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/DetermineBasalAutoISF.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/DetermineBasalAutoISF.kt @@ -6,11 +6,10 @@ import app.aaps.core.interfaces.aps.CurrentTemp import app.aaps.core.interfaces.aps.GlucoseStatus import app.aaps.core.interfaces.aps.IobTotal import app.aaps.core.interfaces.aps.MealData -import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.aps.Predictions import app.aaps.core.interfaces.aps.RT import app.aaps.core.interfaces.profile.ProfileUtil -import app.aaps.plugins.aps.openAPSAutoISF.OpenAPSAutoISFPlugin import java.text.DecimalFormat import java.time.Instant import java.time.ZoneId @@ -60,7 +59,7 @@ class DetermineBasalAutoISF @Inject constructor( //if (profile.out_units === "mmol/L") round(value / 18, 1).toFixed(1); //else Math.round(value); - fun enable_smb(profile: OapsProfile, microBolusAllowed: Boolean, meal_data: MealData, target_bg: Double): Boolean { + fun enable_smb(profile: OapsProfileAutoIsf, microBolusAllowed: Boolean, meal_data: MealData, target_bg: Double): Boolean { // disable SMB when a high temptarget is set if (!microBolusAllowed) { consoleError.add("SMB disabled (!microBolusAllowed)") @@ -105,10 +104,10 @@ class DetermineBasalAutoISF @Inject constructor( consoleError.add(msg) } - private fun getMaxSafeBasal(profile: OapsProfile): Double = + private fun getMaxSafeBasal(profile: OapsProfileAutoIsf): Double = min(profile.max_basal, min(profile.max_daily_safety_multiplier * profile.max_daily_basal, profile.current_basal_safety_multiplier * profile.current_basal)) - fun setTempBasal(_rate: Double, duration: Int, profile: OapsProfile, rT: RT, currenttemp: CurrentTemp): RT { + fun setTempBasal(_rate: Double, duration: Int, profile: OapsProfileAutoIsf, rT: RT, currenttemp: CurrentTemp): RT { //var maxSafeBasal = Math.min(profile.max_basal, 3 * profile.max_daily_basal, 4 * profile.current_basal); val maxSafeBasal = getMaxSafeBasal(profile) @@ -148,7 +147,7 @@ class DetermineBasalAutoISF @Inject constructor( fun determine_basal( - glucose_status: GlucoseStatus, currenttemp: CurrentTemp, iob_data_array: Array, profile: OapsProfile, autosens_data: AutosensResult, meal_data: MealData, + glucose_status: GlucoseStatus, currenttemp: CurrentTemp, iob_data_array: Array, profile: OapsProfileAutoIsf, autosens_data: AutosensResult, meal_data: MealData, microBolusAllowed: Boolean, currentTime: Long, flatBGsDetected: Boolean, autoIsfMode: Boolean, loop_wanted_smb: String, profile_percentage: Int, smb_ratio: Double, smb_max_range_extension: Double, iob_threshold_percent: Int, auto_isf_console: MutableList ): RT { diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPlugin.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPlugin.kt index 46742d4744e..82d2820cb9d 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPlugin.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPlugin.kt @@ -18,7 +18,7 @@ import app.aaps.core.interfaces.aps.APS import app.aaps.core.interfaces.aps.APSResult import app.aaps.core.interfaces.aps.AutosensResult import app.aaps.core.interfaces.aps.CurrentTemp -import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.interfaces.bgQualityCheck.BgQualityCheck import app.aaps.core.interfaces.configuration.Config import app.aaps.core.interfaces.constraints.Constraint @@ -40,7 +40,6 @@ import app.aaps.core.interfaces.profiling.Profiler import app.aaps.core.interfaces.resources.ResourceHelper import app.aaps.core.interfaces.rx.bus.RxBus import app.aaps.core.interfaces.rx.events.EventAPSCalculationFinished -import app.aaps.core.interfaces.ui.UiInteraction import app.aaps.core.interfaces.utils.DateUtil import app.aaps.core.interfaces.utils.HardLimits import app.aaps.core.interfaces.utils.Round @@ -97,7 +96,6 @@ open class OpenAPSAutoISFPlugin @Inject constructor( private val persistenceLayer: PersistenceLayer, private val glucoseStatusProvider: GlucoseStatusProvider, private val bgQualityCheck: BgQualityCheck, - private val uiInteraction: UiInteraction, private val determineBasalAutoISF: DetermineBasalAutoISF, private val profiler: Profiler ) : PluginBase( @@ -294,7 +292,7 @@ open class OpenAPSAutoISFPlugin @Inject constructor( consoleError = mutableListOf() variableSensitivity = autoISF(now, profile) } - val oapsProfile = OapsProfile( + val oapsProfile = OapsProfileAutoIsf( dia = 0.0, // not used min_5m_carbimpact = 0.0, // not used max_iob = constraintsChecker.getMaxIOBAllowed().also { inputConstraints.copyReasons(it) }.value(), @@ -336,8 +334,6 @@ open class OpenAPSAutoISFPlugin @Inject constructor( autosens_max = preferences.get(DoubleKey.AutosensMax), out_units = if (profileFunction.getUnits() == GlucoseUnit.MMOL) "mmol/L" else "mg/dl", variable_sens = variableSensitivity, - insulinDivisor = 0, - TDD = 0.0, autoISF_version = autoIsfVersion, enable_autoISF = autoIsfWeights, autoISF_max = autoISF_max, @@ -430,7 +426,7 @@ open class OpenAPSAutoISFPlugin @Inject constructor( determineBasalResult.iobData = iobArray determineBasalResult.glucoseStatus = glucoseStatus determineBasalResult.currentTemp = currentTemp - determineBasalResult.oapsProfile = oapsProfile + determineBasalResult.oapsProfileAutoIsf = oapsProfile determineBasalResult.mealData = mealData lastAPSResult = determineBasalResult lastAPSRun = now @@ -519,7 +515,7 @@ open class OpenAPSAutoISFPlugin @Inject constructor( fun convert_bg(value: Double): String = profileUtil.fromMgdlToStringInUnits(value).replace("-0.0", "0.0") - fun convert_bg_to_units(value: Double, profile: OapsProfile): Double = + fun convert_bg_to_units(value: Double, profile: OapsProfileAutoIsf): Double = if (profile.out_units == "mmol/L") value * Constants.MGDL_TO_MMOLL else value fun autoISF(currentTime: Long, profile: Profile): Double { @@ -848,7 +844,7 @@ open class OpenAPSAutoISFPlugin @Inject constructor( return finalISF } - fun loop_smb(microBolusAllowed: Boolean, profile: OapsProfile, iob_data_iob: Double, useIobTh: Boolean, iobThEffective: Double): String { + fun loop_smb(microBolusAllowed: Boolean, profile: OapsProfileAutoIsf, iob_data_iob: Double, useIobTh: Boolean, iobThEffective: Double): String { if (!microBolusAllowed) { return "AAPS" // see message in enable_smb } diff --git a/plugins/aps/src/test/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPluginTest.kt b/plugins/aps/src/test/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPluginTest.kt index 682a996af20..2478b9060a6 100644 --- a/plugins/aps/src/test/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPluginTest.kt +++ b/plugins/aps/src/test/kotlin/app/aaps/plugins/aps/openAPSAutoISF/OpenAPSAutoISFPluginTest.kt @@ -7,8 +7,7 @@ import app.aaps.core.interfaces.constraints.ConstraintsChecker import app.aaps.core.interfaces.db.PersistenceLayer import app.aaps.core.interfaces.iob.GlucoseStatusProvider import app.aaps.core.interfaces.profiling.Profiler -import app.aaps.core.interfaces.ui.UiInteraction -import app.aaps.core.interfaces.aps.OapsProfile +import app.aaps.core.interfaces.aps.OapsProfileAutoIsf import app.aaps.core.keys.AdaptiveIntentPreference import app.aaps.core.keys.BooleanKey import app.aaps.core.keys.DoubleKey @@ -33,7 +32,6 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { @Mock lateinit var determineBasalSMB: DetermineBasalAutoISF @Mock lateinit var sharedPrefs: SharedPreferences @Mock lateinit var bgQualityCheck: BgQualityCheck - @Mock lateinit var uiInteraction: UiInteraction @Mock lateinit var profiler: Profiler private lateinit var openAPSAutoISFPlugin: OpenAPSAutoISFPlugin @@ -71,7 +69,7 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { openAPSAutoISFPlugin = OpenAPSAutoISFPlugin( injector, aapsLogger, rxBus, constraintChecker, rh, profileFunction, profileUtil, config, activePlugin, iobCobCalculator, hardLimits, preferences, dateUtil, processedTbrEbData, persistenceLayer, glucoseStatusProvider, - bgQualityCheck, uiInteraction, determineBasalSMB, profiler + bgQualityCheck, determineBasalSMB, profiler ) } @@ -143,7 +141,7 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { @Test fun loop_smbTest() { - val profile = OapsProfile( + val profile = OapsProfileAutoIsf( dia = 0.0, // not used min_5m_carbimpact = 0.0, // not used max_iob = 10.0, @@ -185,8 +183,6 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { autosens_max = preferences.get(DoubleKey.AutosensMax), out_units = "mg/dl", variable_sens = 111.1, - insulinDivisor = 0, - TDD = 0.0, autoISF_version = "3.0", enable_autoISF = true, autoISF_max = 1.5, @@ -232,7 +228,7 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { val profile = profileFunction.getProfile(now) if ( profile == null) return - val oapsProfile = OapsProfile( + val oapsProfile = OapsProfileAutoIsf( dia = 0.0, // not used min_5m_carbimpact = 0.0, // not used max_iob = 10.0, @@ -274,8 +270,6 @@ class OpenAPSAutoISFPluginTest : TestBaseWithProfile() { autosens_max = preferences.get(DoubleKey.AutosensMax), out_units = "mg/dl", variable_sens = 47.11, - insulinDivisor = 0, - TDD = 0.0, autoISF_version = "3.0", enable_autoISF = false, autoISF_max = 1.5,