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
31 changes: 30 additions & 1 deletion Loop/Managers/DeviceDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ extension DeviceDataManager: CGMManagerDelegate {
/// TODO: Isolate to queue
switch result {
case .newData(let values):
log.default("CGMManager:\(type(of: manager)) did update with new data")

loopManager.addGlucose(values) { result in
if manager.shouldSyncToRemoteService {
switch result {
Expand All @@ -145,8 +147,12 @@ extension DeviceDataManager: CGMManagerDelegate {
self.pumpManager?.assertCurrentPumpData()
}
case .noData:
log.default("CGMManager:\(type(of: manager)) did update with no data")

pumpManager?.assertCurrentPumpData()
case .error(let error):
log.default("CGMManager:\(type(of: manager)) did update with error: \(error)")

self.setLastError(error: error)
pumpManager?.assertCurrentPumpData()
}
Expand All @@ -162,10 +168,14 @@ extension DeviceDataManager: CGMManagerDelegate {

extension DeviceDataManager: PumpManagerDelegate {
func pumpManager(_ pumpManager: PumpManager, didAdjustPumpClockBy adjustment: TimeInterval) {
log.default("PumpManager:\(type(of: pumpManager)) did adjust pump block by \(adjustment)s")

AnalyticsManager.shared.pumpTimeDidDrift(adjustment)
}

func pumpManagerDidUpdatePumpBatteryChargeRemaining(_ pumpManager: PumpManager, oldValue: Double?) {
log.default("PumpManager:\(type(of: pumpManager)) did update pump battery from \(String(describing: oldValue))")

if let newValue = pumpManager.pumpBatteryChargeRemaining {
if newValue == 0 {
NotificationManager.sendPumpBatteryLowNotification()
Expand All @@ -180,10 +190,14 @@ extension DeviceDataManager: PumpManagerDelegate {
}

func pumpManagerDidUpdateState(_ pumpManager: PumpManager) {
log.default("PumpManager:\(type(of: pumpManager)) did update state")

UserDefaults.appGroup.pumpManager = pumpManager
}

func pumpManagerBLEHeartbeatDidFire(_ pumpManager: PumpManager) {
log.default("PumpManager:\(type(of: pumpManager)) did fire BLE heartbeat")

cgmManager?.fetchNewDataIfNeeded { (result) in
if case .newData = result {
AnalyticsManager.shared.didFetchNewCGMData()
Expand All @@ -201,27 +215,37 @@ extension DeviceDataManager: PumpManagerDelegate {
}

func pumpManager(_ pumpManager: PumpManager, didUpdateStatus status: PumpManagerStatus) {
log.default("PumpManager:\(type(of: pumpManager)) did update status")

loopManager.doseStore.device = status.device
// Update the pump-schedule based settings
loopManager.setScheduleTimeZone(status.timeZone)
nightscoutDataManager.upload(pumpStatus: status)
}

func pumpManagerWillDeactivate(_ pumpManager: PumpManager) {
log.default("PumpManager:\(type(of: pumpManager)) will deactivate")

loopManager.doseStore.resetPumpData()
self.pumpManager = nil
}

func pumpManager(_ pumpManager: PumpManager, didUpdatePumpRecordsBasalProfileStartEvents pumpRecordsBasalProfileStartEvents: Bool) {
log.default("PumpManager:\(type(of: pumpManager)) did update pumpRecordsBasalProfileStartEvents to \(pumpRecordsBasalProfileStartEvents)")

loopManager.doseStore.pumpRecordsBasalProfileStartEvents = pumpRecordsBasalProfileStartEvents
}

func pumpManager(_ pumpManager: PumpManager, didError error: PumpManagerError) {
log.error("PumpManager:\(type(of: pumpManager)) did error: \(error)")

setLastError(error: error)
nightscoutDataManager.uploadLoopStatus(loopError: error)
}

func pumpManager(_ pumpManager: PumpManager, didReadPumpEvents events: [NewPumpEvent], completion: @escaping (_ error: Error?) -> Void) {
log.default("PumpManager:\(type(of: pumpManager)) did read pump events")

loopManager.addPumpEvents(events) { (error) in
if let error = error {
self.log.error("Failed to addPumpEvents to DoseStore: \(error)")
Expand All @@ -232,10 +256,12 @@ extension DeviceDataManager: PumpManagerDelegate {
}

func pumpManager(_ pumpManager: PumpManager, didReadReservoirValue units: Double, at date: Date, completion: @escaping (_ result: PumpManagerResult<(newValue: ReservoirValue, lastValue: ReservoirValue?, areStoredValuesContinuous: Bool)>) -> Void) {
log.default("PumpManager:\(type(of: pumpManager)) did read reservoir value")

loopManager.addReservoirValue(units, at: date) { (result) in
switch result {
case .failure(let error):
self.logger.addError(error, fromSource: "Bolus")
self.log.error("Failed to addReservoirValue: \(error)")
completion(.failure(error))
case .success(let (newValue, lastValue, areStoredValuesContinuous)):
completion(.success((newValue: newValue, lastValue: lastValue, areStoredValuesContinuous: areStoredValuesContinuous)))
Expand Down Expand Up @@ -267,6 +293,7 @@ extension DeviceDataManager: PumpManagerDelegate {
}

func pumpManagerRecommendsLoop(_ pumpManager: PumpManager) {
log.default("PumpManager:\(type(of: pumpManager)) recommends loop")
loopManager.loop()
}

Expand Down Expand Up @@ -338,6 +365,8 @@ extension DeviceDataManager: LoopDataManagerDelegate {
return
}

log.default("LoopManager did recommend basal change")

pumpManager.enactTempBasal(
unitsPerHour: basal.recommendation.unitsPerHour,
for: basal.recommendation.duration,
Expand Down
2 changes: 2 additions & 0 deletions Loop/Managers/LoopDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,7 @@ extension LoopDataManager {
/// temporary basal rate.
func loop() {
self.dataAccessQueue.async {
self.logger.default("Loop running")
NotificationCenter.default.post(name: .LoopRunning, object: self)

self.lastLoopError = nil
Expand Down Expand Up @@ -582,6 +583,7 @@ extension LoopDataManager {
self.lastLoopError = error
}

self.logger.default("Loop ended")
self.notify(forChange: .tempBasal)
}
}
Expand Down