ソースを参照

Fix: Override alarms

Jon Fawcett 5 年 前
コミット
8682638d89

+ 25 - 24
LoopFollow/Controllers/Alarms.swift

@@ -285,39 +285,40 @@ extension MainViewController {
        
        
     func checkOverrideAlarms()
     func checkOverrideAlarms()
     {
     {
-        
         if UserDefaultsRepository.alertSnoozeAllIsSnoozed.value { return }
         if UserDefaultsRepository.alertSnoozeAllIsSnoozed.value { return }
         
         
-        // Make sure we have 2 values to compare
-        if overrideData.count < 2 { return }
-        
-        let latest = overrideData[overrideData.count - 1]
-        let prior = overrideData[overrideData.count - 2]
-        
-        // Make sure latest value is current within 10 minutes
-        if latest.date < dateTimeUtils.getNowTimeIntervalUTC() - 600 { return }
+        let recentOverride = overrideGraphData.last
+        let recentStart: TimeInterval = recentOverride?.date ?? 0
+        let recentEnd: TimeInterval = recentOverride?.endDate ?? 0
+        let now = dateTimeUtils.getNowTimeIntervalUTC()
         
         
-        // make sure values are with 10 minutes of each other
-        if ( latest.date - prior.date ) > 600 { return }
+        var triggerStart = false
+        var triggerEnd = false
         
         
-        // make sure values are not the same
-        if latest.value == prior.value { return }
+        // Trigger newly started override
+        if now - recentStart > 0 && now - recentStart <= (15 * 60) && recentStart > lastOverrideAlarm {
+            triggerStart = true
+        } else if now - recentEnd > 0 && now - recentEnd <= (15 * 60) && recentEnd > lastOverrideAlarm {
+            triggerEnd = true
+        } else {
+            return
+        }
         
         
+        let overrideName = recentOverride?.reason as! String
+       
         var numLoops = 0
         var numLoops = 0
-        if UserDefaultsRepository.alertOverrideStart.value && !UserDefaultsRepository.alertOverrideStartIsSnoozed.value {
-            if latest.value != 1.0 && lastOverrideStartTime != latest.date {
-                AlarmSound.whichAlarm = String(format: "%.0f%%", (latest.value * 100)) + " Override Started"
+        if UserDefaultsRepository.alertOverrideStart.value && !UserDefaultsRepository.alertOverrideStartIsSnoozed.value && triggerStart {
+            AlarmSound.whichAlarm = overrideName + " Override Started"
                 if UserDefaultsRepository.alertOverrideStartRepeat.value { numLoops = -1 }
                 if UserDefaultsRepository.alertOverrideStartRepeat.value { numLoops = -1 }
-                triggerOneTimeAlarm(sound: UserDefaultsRepository.alertOverrideEndSound.value, overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value, numLoops: numLoops)
-                lastOverrideStartTime = latest.date
-            }
-        } else if UserDefaultsRepository.alertOverrideEnd.value && !UserDefaultsRepository.alertOverrideEndIsSnoozed.value {
-            if latest.value == 1.0 && lastOverrideEndTime != latest.date {
-                AlarmSound.whichAlarm = "Override Ended"
+                triggerOneTimeAlarm(sound: UserDefaultsRepository.alertOverrideStartSound.value, overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value, numLoops: numLoops)
+                lastOverrideStartTime = recentStart
+                lastOverrideAlarm = now
+        } else if UserDefaultsRepository.alertOverrideEnd.value && !UserDefaultsRepository.alertOverrideEndIsSnoozed.value && triggerEnd {
+                AlarmSound.whichAlarm = overrideName + " Override Ended"
                 if UserDefaultsRepository.alertOverrideEndRepeat.value { numLoops = -1 }
                 if UserDefaultsRepository.alertOverrideEndRepeat.value { numLoops = -1 }
                 triggerOneTimeAlarm(sound: UserDefaultsRepository.alertOverrideEndSound.value, overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value, numLoops: numLoops)
                 triggerOneTimeAlarm(sound: UserDefaultsRepository.alertOverrideEndSound.value, overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value, numLoops: numLoops)
-                lastOverrideEndTime = latest.date
-            }
+                lastOverrideEndTime = recentEnd
+                lastOverrideAlarm = now
         }
         }
     }
     }
     
     

+ 0 - 1
LoopFollow/Controllers/Graphs.swift

@@ -318,7 +318,6 @@ extension MainViewController {
         BGChart.leftAxis.drawGridLinesEnabled = false
         BGChart.leftAxis.drawGridLinesEnabled = false
         BGChart.leftAxis.granularityEnabled = true
         BGChart.leftAxis.granularityEnabled = true
         BGChart.leftAxis.granularity = 0.5
         BGChart.leftAxis.granularity = 0.5
-        //BGChart.leftAxis.inverted = true
         
         
         BGChart.rightAxis.labelTextColor = NSUIColor.label
         BGChart.rightAxis.labelTextColor = NSUIColor.label
         BGChart.rightAxis.labelPosition = YAxis.LabelPosition.insideChart
         BGChart.rightAxis.labelPosition = YAxis.LabelPosition.insideChart

+ 0 - 2
LoopFollow/Controllers/NightScout.swift

@@ -605,8 +605,6 @@ extension MainViewController {
             }
             }
         }
         }
         overrideData.reverse()
         overrideData.reverse()
-        //updateOverrideGraph()
-        checkOverrideAlarms()
         
         
         // Start the timer based on the timestamp
         // Start the timer based on the timestamp
         let now = dateTimeUtils.getNowTimeIntervalUTC()
         let now = dateTimeUtils.getNowTimeIntervalUTC()

+ 3 - 0
LoopFollow/Controllers/Timers.swift

@@ -283,6 +283,9 @@ extension MainViewController {
         if bgData.count > 0 {
         if bgData.count > 0 {
             self.checkAlarms(bgs: bgData)
             self.checkAlarms(bgs: bgData)
         }
         }
+        if overrideGraphData.count > 0 {
+            self.checkOverrideAlarms()
+        }
     }
     }
     
     
     // Calendar Timer
     // Calendar Timer

+ 1 - 0
LoopFollow/ViewControllers/MainViewController.swift

@@ -127,6 +127,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     var lastOverrideStartTime: TimeInterval = 0
     var lastOverrideStartTime: TimeInterval = 0
     var lastOverrideEndTime: TimeInterval = 0
     var lastOverrideEndTime: TimeInterval = 0
     var topBG: Float = UserDefaultsRepository.minBGScale.value
     var topBG: Float = UserDefaultsRepository.minBGScale.value
+    var lastOverrideAlarm: TimeInterval = 0
     
     
     // share
     // share
     var bgDataShare: [ShareGlucoseData] = []
     var bgDataShare: [ShareGlucoseData] = []