Procházet zdrojové kódy

New recommended bolus % setting.
% of normal manual bolus which iAPS recommends

(cherry picked from commit fd46dcffaf2ef0b2863e5fca7674481e2f83af71)
(cherry picked from commit 23c5f76377ba68d2a450e2992f3b693d715ee920)

Jon Mårtensson před 3 roky
rodič
revize
70cf14c27e

+ 1 - 1
FreeAPS/Resources/json/defaults/freeaps/freeaps_settings.json

@@ -7,7 +7,7 @@
     "useLocalGlucoseSource": false,
     "localGlucosePort": 8080,
     "debugOptions": false,
-    "insulinReqFraction": 1.5,
+    "insulinReqPercentage": 70,
     "skipBolusScreenAfterCarbs": false,
     "displayHR": false,
     "cgm": "nightscout",

+ 3 - 3
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -9,7 +9,7 @@ struct FreeAPSSettings: JSON, Equatable {
     var useLocalGlucoseSource: Bool = false
     var localGlucosePort: Int = 8080
     var debugOptions: Bool = false
-    var insulinReqFraction: Decimal = 0.7
+    var insulinReqPercentage: Decimal = 70
     var skipBolusScreenAfterCarbs: Bool = false
     var displayHR: Bool = false
     var cgm: CGMType = .nightscout
@@ -71,8 +71,8 @@ extension FreeAPSSettings: Decodable {
             settings.debugOptions = debugOptions
         }
 
-        if let insulinReqFraction = try? container.decode(Decimal.self, forKey: .insulinReqFraction) {
-            settings.insulinReqFraction = insulinReqFraction
+        if let insulinReqPercentage = try? container.decode(Decimal.self, forKey: .insulinReqPercentage) {
+            settings.insulinReqPercentage = insulinReqPercentage
         }
 
         if let skipBolusScreenAfterCarbs = try? container.decode(Bool.self, forKey: .skipBolusScreenAfterCarbs) {

+ 4 - 1
FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift

@@ -76,7 +76,10 @@ extension Bolus {
             DispatchQueue.main.async {
                 self.insulinRequired = self.provider.suggestion?.insulinReq ?? 0
                 self.insulinRecommended = self.apsManager
-                    .roundBolus(amount: max(self.insulinRequired * self.settingsManager.settings.insulinReqFraction, 0))
+                    .roundBolus(amount: max(
+                        self.insulinRequired * (self.settingsManager.settings.insulinReqPercentage / 100) * 2,
+                        0
+                    ))
             }
         }
     }

+ 2 - 2
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift

@@ -5,7 +5,7 @@ extension PreferencesEditor {
     final class StateModel: BaseStateModel<Provider>, PreferencesSettable { private(set) var preferences = Preferences()
         @Published var unitsIndex = 1
         @Published var allowAnnouncements = false
-        @Published var insulinReqFraction: Decimal = 2.0
+        @Published var insulinReqPercentage: Decimal = 70
         @Published var skipBolusScreenAfterCarbs = false
         @Published var displayHR = false
         @Published var displayStatistics = false
@@ -14,7 +14,7 @@ extension PreferencesEditor {
         override func subscribe() {
             preferences = provider.preferences
             subscribeSetting(\.allowAnnouncements, on: $allowAnnouncements) { allowAnnouncements = $0 }
-            subscribeSetting(\.insulinReqFraction, on: $insulinReqFraction) { insulinReqFraction = $0 }
+            subscribeSetting(\.insulinReqPercentage, on: $insulinReqPercentage) { insulinReqPercentage = $0 }
             subscribeSetting(\.displayHR, on: $displayHR) { displayHR = $0 }
             subscribeSetting(\.displayStatistics, on: $displayStatistics) { displayStatistics = $0 }
             subscribeSetting(\.skipBolusScreenAfterCarbs, on: $skipBolusScreenAfterCarbs) { skipBolusScreenAfterCarbs = $0 }

+ 2 - 2
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -31,8 +31,8 @@ extension PreferencesEditor {
                     Toggle("Remote control", isOn: $state.allowAnnouncements)
 
                     HStack {
-                        Text("Recommended Insulin Fraction")
-                        DecimalTextField("", value: $state.insulinReqFraction, formatter: formatter)
+                        Text("Recommended Bolus Percentage")
+                        DecimalTextField("", value: $state.insulinReqPercentage, formatter: formatter)
                     }
 
                     Toggle("Skip Bolus screen after carbs", isOn: $state.skipBolusScreenAfterCarbs)

+ 1 - 1
FreeAPS/Sources/Services/WatchManager/WatchManager.swift

@@ -60,7 +60,7 @@ final class BaseWatchManager: NSObject, WatchManager, Injectable {
 
             let insulinRequired = self.suggestion?.insulinReq ?? 0
             self.state.bolusRecommended = self.apsManager
-                .roundBolus(amount: max(insulinRequired * self.settingsManager.settings.insulinReqFraction, 0))
+                .roundBolus(amount: max(insulinRequired * (self.settingsManager.settings.insulinReqPercentage / 100) * 2, 0))
 
             self.state.iob = self.suggestion?.iob
             self.state.cob = self.suggestion?.cob