Jelajahi Sumber

refactor loop method

Ivan Valkou 5 tahun lalu
induk
melakukan
c46fda5b18

+ 11 - 10
FreeAPS/Sources/APS/APSManager.swift

@@ -55,17 +55,18 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     func loop() {
-        loopCancellable = nightscout
-            .fetchGlucose()
-            .flatMap { self.nightscout.fetchCarbs() }
-            .flatMap { self.nightscout.fetchTempTargets() }
-            .flatMap { self.determineBasal() }
-            .sink { _ in } receiveValue: { [weak self] ok in
-                guard let self = self else { return }
-                if ok, self.settings.closedLoop {
-                    self.enactSuggested()
-                }
+        loopCancellable = Publishers.CombineLatest3(
+            nightscout.fetchGlucose(),
+            nightscout.fetchCarbs(),
+            nightscout.fetchTempTargets()
+        )
+        .flatMap { _ in self.determineBasal() }
+        .sink { _ in } receiveValue: { [weak self] ok in
+            guard let self = self else { return }
+            if ok, self.settings.closedLoop {
+                self.enactSuggested()
             }
+        }
     }
 
     func determineBasal() -> AnyPublisher<Bool, Never> {

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

@@ -3,9 +3,9 @@ import Foundation
 struct Suggestion: JSON {
     let reason: String
     let units: Decimal?
-    let insulinReq: Decimal
-    let eventualBG: Int
-    let sensitivityRatio: Decimal
+    let insulinReq: Decimal?
+    let eventualBG: Int?
+    let sensitivityRatio: Decimal?
     let rate: Decimal?
     let duration: Int?
 }