Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions Loop/Managers/CGM/DexCGMManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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? {
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -294,6 +302,7 @@ final class G4CGMManager: DexCGMManager, ReceiverDelegate {
"## G4CGMManager",
"latestReading: \(String(describing: latestReading))",
"receiver: \(receiver)",
"providesBLEHeartbeat: \(providesBLEHeartbeat)",
super.debugDescription,
""
].joined(separator: "\n")
Expand Down Expand Up @@ -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)")
}
}

Expand Down
10 changes: 8 additions & 2 deletions Loop/Managers/DeviceDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -613,7 +619,7 @@ final class DeviceDataManager {
}

var sensorInfo: SensorDisplayable? {
return cgmManager?.sensorState ?? latestPumpStatusFromMySentry
return cgmManager?.sensorState
}

// MARK: - Configuration
Expand Down