فهرست منبع

Fix pump updating logic

Ivan Valkou 5 سال پیش
والد
کامیت
62da91d1e1
3فایلهای تغییر یافته به همراه18 افزوده شده و 7 حذف شده
  1. 1 1
      FreeAPS/Resources/Info.plist
  2. 1 1
      FreeAPS/Sources/APS/APSManager.swift
  3. 16 5
      FreeAPS/Sources/APS/DeviceDataManager.swift

+ 1 - 1
FreeAPS/Resources/Info.plist

@@ -17,7 +17,7 @@
 	<key>CFBundleShortVersionString</key>
 	<string>$(MARKETING_VERSION)</string>
 	<key>CFBundleVersion</key>
-	<string>239</string>
+	<string>240</string>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
 		<string>dexcomg6</string>

+ 1 - 1
FreeAPS/Sources/APS/APSManager.swift

@@ -83,7 +83,7 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     private func fetchAndLoop() {
-        if settings.allowAnnouncements ?? false {
+        if settings.allowAnnouncements {
             nightscout.fetchAnnouncements()
                 .sink { [weak self] in
                     guard let self = self else { return }

+ 16 - 5
FreeAPS/Sources/APS/DeviceDataManager.swift

@@ -92,10 +92,14 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
         case let interval where interval < -5.minutes.timeInterval:
             updateInterval = 1.minutes.timeInterval
         default:
-            return
+            break
         }
 
-        guard now.timeIntervalSince(lastHeartBeatTime) >= updateInterval else { return }
+        let interval = now.timeIntervalSince(lastHeartBeatTime)
+        guard interval >= updateInterval else {
+            debug(.deviceManager, "Last hearbeat \(interval / 60) min ago, skip updating the pump data")
+            return
+        }
 
         heartbeat()
     }
@@ -103,9 +107,15 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
     @SyncAccess(lock: accessLock) private var pumpUpdateInProgress = false
 
     func heartbeat() {
-        guard let pumpManager = pumpManager else { return }
-        guard !pumpUpdateInProgress else { return }
-
+        guard let pumpManager = pumpManager else {
+            debug(.deviceManager, "Pump is not set, skip updating")
+            return
+        }
+        guard !pumpUpdateInProgress else {
+            debug(.deviceManager, "Pump update in progress, skip updating")
+            return
+        }
+        debug(.deviceManager, "Start updating the pump data")
         pumpUpdateInProgress = true
         lastHeartBeatTime = Date()
         pumpManager.ensureCurrentPumpData {
@@ -227,6 +237,7 @@ extension BaseDeviceDataManager: PumpManagerDelegate {
 
     func pumpManagerRecommendsLoop(_: PumpManager) {
         dispatchPrecondition(condition: .onQueue(processQueue))
+        pumpUpdateInProgress = false
         debug(.deviceManager, "Recomends loop")
         recommendsLoop.send()
     }