فهرست منبع

Refactor profileTarget and make sure sensitivityRatio uses it

Sam King 10 ماه پیش
والد
کامیت
67ba8f7e1a

+ 15 - 0
Trio/Sources/APS/OpenAPSSwift/DetermineBasal/DetermineBasal+Helpers.swift

@@ -357,3 +357,18 @@ extension DeterminationGenerator {
         }
         }
     }
     }
 }
 }
+
+extension Profile {
+    /// This function calculates the `profileTarget` variable from Javascript's determineBasal function
+    /// including the adjustments for overrides
+    func profileTarget(trioCustomOrefVariables: TrioCustomOrefVariables) -> Decimal? {
+        let overrideTarget = trioCustomOrefVariables.overrideTarget
+        if overrideTarget != 0, overrideTarget != 6, trioCustomOrefVariables
+            .useOverride, !(temptargetSet ?? false)
+        {
+            return overrideTarget
+        }
+
+        return minBg
+    }
+}

+ 1 - 1
Trio/Sources/APS/OpenAPSSwift/DetermineBasal/DetermineBasalGenerator.swift

@@ -68,7 +68,7 @@ enum DeterminationGenerator {
             sensitivityRatio = calculateSensitivityRatio(
             sensitivityRatio = calculateSensitivityRatio(
                 profile: profile,
                 profile: profile,
                 autosens: autosensData,
                 autosens: autosensData,
-                targetGlucose: profile.targetBg ?? 120,
+                targetGlucose: profile.profileTarget(trioCustomOrefVariables: trioCustomOrefVariables) ?? 120,
                 temptargetSet: profile.temptargetSet ?? false
                 temptargetSet: profile.temptargetSet ?? false
             )
             )
         }
         }

+ 3 - 8
Trio/Sources/APS/OpenAPSSwift/DynamicISF.swift

@@ -36,7 +36,9 @@ enum DynamicISF {
             tdd = trioCustomOrefVariables.currentTDD
             tdd = trioCustomOrefVariables.currentTDD
         }
         }
 
 
-        guard preferences.useNewFormula, tdd > 0, var sensitivity = profile.sens, var profileTarget = profile.minBg else {
+        guard preferences.useNewFormula, tdd > 0, var sensitivity = profile.sens,
+              let profileTarget = profile.profileTarget(trioCustomOrefVariables: trioCustomOrefVariables)
+        else {
             return nil
             return nil
         }
         }
 
 
@@ -47,13 +49,6 @@ enum DynamicISF {
             }
             }
         }
         }
 
 
-        let overrideTarget = trioCustomOrefVariables.overrideTarget
-        if overrideTarget != 0, overrideTarget != 6, trioCustomOrefVariables
-            .useOverride, !(profile.temptargetSet ?? false)
-        {
-            profileTarget = overrideTarget
-        }
-
         let minLimit = min(profile.autosensMin, profile.autosensMax)
         let minLimit = min(profile.autosensMin, profile.autosensMax)
         let maxLimit = max(profile.autosensMin, profile.autosensMax)
         let maxLimit = max(profile.autosensMin, profile.autosensMax)