Просмотр исходного кода

Correction for glucoseTrend cast

avouspierre 3 лет назад
Родитель
Сommit
863d712ec2

+ 4 - 0
FreeAPS.xcodeproj/project.pbxproj

@@ -288,6 +288,7 @@
 		CA370FC152BC98B3D1832968 /* BasalProfileEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8BCB0C37DEB5EC377B9612 /* BasalProfileEditorRootView.swift */; };
 		CD78BB94E43B249D60CC1A1B /* NotificationsConfigRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22963BD06A9C83959D4914E4 /* NotificationsConfigRootView.swift */; };
 		CE2FAD38297D69E1001A872C /* ShareClient.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE398D1A297D69A900DF218F /* ShareClient.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		CE2FAD3A297D93F0001A872C /* BloodGlucoseExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2FAD39297D93F0001A872C /* BloodGlucoseExtensions.swift */; };
 		CE398D16297C9D1D00DF218F /* dexcomSourceG7.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE398D15297C9D1D00DF218F /* dexcomSourceG7.swift */; };
 		CE398D18297C9EE800DF218F /* G7SensorKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE398D17297C9EE800DF218F /* G7SensorKit.framework */; };
 		CE398D19297C9EFD00DF218F /* G7SensorKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE398D17297C9EE800DF218F /* G7SensorKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -732,6 +733,7 @@
 		C19984D62EFC0035A9E9644D /* BolusProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BolusProvider.swift; sourceTree = "<group>"; };
 		C377490C77661D75E8C50649 /* ManualTempBasalRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ManualTempBasalRootView.swift; sourceTree = "<group>"; };
 		C8D1A7CA8C10C4403D4BBFA7 /* BolusDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BolusDataFlow.swift; sourceTree = "<group>"; };
+		CE2FAD39297D93F0001A872C /* BloodGlucoseExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloodGlucoseExtensions.swift; sourceTree = "<group>"; };
 		CE398D012977349800DF218F /* CryptoKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CryptoKit.framework; path = System/Library/Frameworks/CryptoKit.framework; sourceTree = SDKROOT; };
 		CE398D15297C9D1D00DF218F /* dexcomSourceG7.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = dexcomSourceG7.swift; sourceTree = "<group>"; };
 		CE398D17297C9EE800DF218F /* G7SensorKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = G7SensorKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1419,6 +1421,7 @@
 				CEB434E628B9053300B70274 /* LoopUIColorPalette+Default.swift */,
 				CE48C86328CA69D5007C0598 /* OmniBLEPumpManagerExtensions.swift */,
 				CE48C86528CA6B48007C0598 /* OmniPodManagerExtensions.swift */,
+				CE2FAD39297D93F0001A872C /* BloodGlucoseExtensions.swift */,
 			);
 			path = Extensions;
 			sourceTree = "<group>";
@@ -2327,6 +2330,7 @@
 				38DF179027733EAD00B3528F /* SnowScene.swift in Sources */,
 				38AAF8712600C1B0004AF583 /* MainChartView.swift in Sources */,
 				1935364028496F7D001E0B16 /* TDD_averages.swift in Sources */,
+				CE2FAD3A297D93F0001A872C /* BloodGlucoseExtensions.swift in Sources */,
 				38E4453A274E411700EC9A94 /* Disk+[UIImage].swift in Sources */,
 				72F1BD388F42FCA6C52E4500 /* ConfigEditorProvider.swift in Sources */,
 				E39E418C56A5A46B61D960EE /* ConfigEditorStateModel.swift in Sources */,

+ 5 - 0
FreeAPS/Sources/APS/CGM/CGMType.swift

@@ -100,3 +100,8 @@ enum CGMType: String, JSON, CaseIterable, Identifiable {
         }
     }
 }
+
+enum GlucoseDataError: Error {
+    case noData
+    case unreliableData
+}

+ 1 - 35
FreeAPS/Sources/APS/CGM/DexcomSource.swift

@@ -5,11 +5,6 @@ import LoopKit
 import LoopKitUI
 import ShareClient
 
-enum GlucoseDataError: Error {
-    case noData
-    case unreliableData
-}
-
 final class DexcomSource: GlucoseSource {
     private let processQueue = DispatchQueue(label: "DexcomSource.processQueue")
     private var timer: DispatchTimer?
@@ -117,10 +112,7 @@ extension DexcomSource: CGMManagerDelegate {
                 return BloodGlucose(
                     _id: newGlucoseSample.syncIdentifier,
                     sgv: value,
-                    direction: .init(trend: Int(Double(rawValue: (
-                        newGlucoseSample.trendRate?
-                            .doubleValue(for: .milligramsPerDeciliter)
-                    )!) ?? 0)),
+                    direction: .init(trendType: newGlucoseSample.trend),
                     date: Decimal(Int(newGlucoseSample.date.timeIntervalSince1970 * 1000)),
                     dateString: newGlucoseSample.date,
                     unfiltered: nil,
@@ -152,29 +144,3 @@ extension DexcomSource {
         [GlucoseSourceKey.description.rawValue: "Dexcom tramsmitter ID: \(transmitterID)"]
     }
 }
-
-extension BloodGlucose.Direction {
-    init(trend: Int) {
-        guard trend < Int(Int8.max) else {
-            self = .none
-            return
-        }
-
-        switch trend {
-        case let x where x <= -30:
-            self = .doubleDown
-        case let x where x <= -20:
-            self = .singleDown
-        case let x where x <= -10:
-            self = .fortyFiveDown
-        case let x where x < 10:
-            self = .flat
-        case let x where x < 20:
-            self = .fortyFiveUp
-        case let x where x < 30:
-            self = .singleUp
-        default:
-            self = .doubleUp
-        }
-    }
-}

+ 0 - 21
FreeAPS/Sources/APS/CGM/LibreTransmitterSource.swift

@@ -92,24 +92,3 @@ extension BaseLibreTransmitterSource: LibreTransmitterManagerDelegate {
         calibrationService.calibrate
     }
 }
-
-extension BloodGlucose.Direction {
-    init(trendType: GlucoseTrend) {
-        switch trendType {
-        case .upUpUp:
-            self = .doubleUp
-        case .upUp:
-            self = .singleUp
-        case .up:
-            self = .fortyFiveUp
-        case .flat:
-            self = .flat
-        case .down:
-            self = .fortyFiveDown
-        case .downDown:
-            self = .singleDown
-        case .downDownDown:
-            self = .doubleDown
-        }
-    }
-}

+ 3 - 30
FreeAPS/Sources/APS/CGM/dexcomSourceG7.swift

@@ -108,10 +108,7 @@ extension DexcomSourceG7: CGMManagerDelegate {
                 return BloodGlucose(
                     _id: newGlucoseSample.syncIdentifier,
                     sgv: value,
-                    direction: .init(trend: Int(Double(rawValue: (
-                        newGlucoseSample.trendRate?
-                            .doubleValue(for: .milligramsPerDeciliter)
-                    )!) ?? 0)),
+                    direction: .init(trendType: newGlucoseSample.trend),
                     date: Decimal(Int(newGlucoseSample.date.timeIntervalSince1970 * 1000)),
                     dateString: newGlucoseSample.date,
                     unfiltered: nil,
@@ -125,8 +122,10 @@ extension DexcomSourceG7: CGMManagerDelegate {
             completion()
         case .unreliableData:
             // loopManager.receivedUnreliableCGMReading()
+            promise?(.failure(GlucoseDataError.unreliableData))
             completion()
         case .noData:
+            promise?(.failure(GlucoseDataError.noData))
             completion()
         case let .error(error):
             promise?(.failure(error))
@@ -140,29 +139,3 @@ extension DexcomSourceG7: CGMManagerDelegate {
 //        [GlucoseSourceKey.description.rawValue: "Dexcom tramsmitter ID: \(transmitterID)"]
 //    }
 // }
-
-// extension BloodGlucose.Direction {
-//    init(trend: Int) {
-//        guard trend < Int(Int8.max) else {
-//            self = .none
-//            return
-//        }
-//
-//        switch trend {
-//        case let x where x <= -30:
-//            self = .doubleDown
-//        case let x where x <= -20:
-//            self = .singleDown
-//        case let x where x <= -10:
-//            self = .fortyFiveDown
-//        case let x where x < 10:
-//            self = .flat
-//        case let x where x < 20:
-//            self = .fortyFiveUp
-//        case let x where x < 30:
-//            self = .singleUp
-//        default:
-//            self = .doubleUp
-//        }
-//    }
-// }

+ 69 - 0
FreeAPS/Sources/APS/Extensions/BloodGlucoseExtensions.swift

@@ -0,0 +1,69 @@
+import Foundation
+import LibreTransmitter
+import LoopKit
+
+extension BloodGlucose.Direction {
+    init(trend: Int) {
+        guard trend < Int(Int8.max) else {
+            self = .none
+            return
+        }
+
+        switch trend {
+        case let x where x <= -30:
+            self = .doubleDown
+        case let x where x <= -20:
+            self = .singleDown
+        case let x where x <= -10:
+            self = .fortyFiveDown
+        case let x where x < 10:
+            self = .flat
+        case let x where x < 20:
+            self = .fortyFiveUp
+        case let x where x < 30:
+            self = .singleUp
+        default:
+            self = .doubleUp
+        }
+    }
+
+    init(trendType: LoopKit.GlucoseTrend?) {
+        switch trendType {
+        case .upUpUp:
+            self = .doubleUp
+        case .upUp:
+            self = .singleUp
+        case .up:
+            self = .fortyFiveUp
+        case .flat:
+            self = .flat
+        case .down:
+            self = .fortyFiveDown
+        case .downDown:
+            self = .singleDown
+        case .downDownDown:
+            self = .doubleDown
+        default:
+            self = .none
+        }
+    }
+
+    init(trendType: LibreTransmitter.GlucoseTrend) {
+        switch trendType {
+        case .upUpUp:
+            self = .doubleUp
+        case .upUp:
+            self = .singleUp
+        case .up:
+            self = .fortyFiveUp
+        case .flat:
+            self = .flat
+        case .down:
+            self = .fortyFiveDown
+        case .downDown:
+            self = .singleDown
+        case .downDownDown:
+            self = .doubleDown
+        }
+    }
+}