From cd8a4a78b3741a958802d9d101ee23c846a8b19c Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sat, 14 Apr 2018 17:17:28 -0500 Subject: [PATCH] Fix sensor state display --- Loop/Managers/CGM/DexCGMManager.swift | 15 ++++++++++++--- Loop/Managers/DeviceDataManager.swift | 10 ++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Loop/Managers/CGM/DexCGMManager.swift b/Loop/Managers/CGM/DexCGMManager.swift index 867d05c217..a6dfa6ba36 100644 --- a/Loop/Managers/CGM/DexCGMManager.swift +++ b/Loop/Managers/CGM/DexCGMManager.swift @@ -67,7 +67,7 @@ final class ShareClientManager: CGMManager { let managedDataInterval: TimeInterval? = nil - private var latestBackfill: ShareGlucose? + fileprivate var latestBackfill: ShareGlucose? func fetchNewDataIfNeeded(with deviceManager: DeviceDataManager, _ completion: @escaping (CGMResult) -> Void) { guard let shareClient = deviceManager.remoteDataManager.shareService.client else { @@ -140,7 +140,14 @@ final class G5CGMManager: DexCGMManager, TransmitterDelegate { } override var sensorState: SensorDisplayable? { - return latestReading ?? super.sensorState + let transmitterDate = latestReading?.readDate ?? .distantPast + let shareDate = shareManager?.latestBackfill?.startDate ?? .distantPast + + if transmitterDate > shareDate { + return latestReading + } else { + return super.sensorState + } } override var managedDataInterval: TimeInterval? { @@ -190,6 +197,7 @@ final class G5CGMManager: DexCGMManager, TransmitterDelegate { "## G5CGMManager", "latestReading: \(String(describing: latestReading))", "transmitter: \(String(describing: transmitter))", + "providesBLEHeartbeat: \(providesBLEHeartbeat)", super.debugDescription, "" ].joined(separator: "\n") @@ -294,6 +302,7 @@ final class G4CGMManager: DexCGMManager, ReceiverDelegate { "## G4CGMManager", "latestReading: \(String(describing: latestReading))", "receiver: \(receiver)", + "providesBLEHeartbeat: \(providesBLEHeartbeat)", super.debugDescription, "" ].joined(separator: "\n") @@ -325,7 +334,7 @@ final class G4CGMManager: DexCGMManager, ReceiverDelegate { func receiver(_ receiver: Receiver, didLogBluetoothEvent event: String) { // Uncomment to debug communication - // NSLog(["event": "\(event)", "collectedAt": NSDateFormatter.ISO8601StrictDateFormatter().stringFromDate(NSDate())]) + // NSLog("\(#function): \(event)") } } diff --git a/Loop/Managers/DeviceDataManager.swift b/Loop/Managers/DeviceDataManager.swift index 53fb7fa43a..146ecc5d08 100644 --- a/Loop/Managers/DeviceDataManager.swift +++ b/Loop/Managers/DeviceDataManager.swift @@ -241,7 +241,13 @@ final class DeviceDataManager { // MARK: Pump data /// TODO: Isolate to queue - fileprivate var latestPumpStatusFromMySentry: MySentryPumpStatusMessageBody? + fileprivate var latestPumpStatusFromMySentry: MySentryPumpStatusMessageBody? { + didSet { + if let manager = cgmManager as? EnliteCGMManager { + manager.sensorState = latestPumpStatusFromMySentry + } + } + } /** Handles receiving a MySentry status message, which are only posted by MM x23 pumps. @@ -613,7 +619,7 @@ final class DeviceDataManager { } var sensorInfo: SensorDisplayable? { - return cgmManager?.sensorState ?? latestPumpStatusFromMySentry + return cgmManager?.sensorState } // MARK: - Configuration