@@ -33,7 +33,7 @@ final class DeviceDataManager {
33
33
/// Should be accessed only on the main queue
34
34
private( set) var lastError : ( date: Date , error: Error ) ?
35
35
36
- /// The last time a BLE heartbeat was received by the pump manager
36
+ /// The last time a BLE heartbeat was received and acted upon.
37
37
private var lastBLEDrivenUpdate = Date . distantPast
38
38
39
39
// MARK: - CGM
@@ -155,6 +155,40 @@ final class DeviceDataManager {
155
155
156
156
return Manager . init ( rawState: rawState) as? PumpManagerUI
157
157
}
158
+
159
+ private func processCGMResult( _ manager: CGMManager , result: CGMResult ) {
160
+ switch result {
161
+ case . newData( let values) :
162
+ log. default ( " CGMManager: \( type ( of: manager) ) did update with \( values. count) values " )
163
+
164
+ loopManager. addGlucose ( values) { result in
165
+ if manager. shouldSyncToRemoteService {
166
+ switch result {
167
+ case . success( let values) :
168
+ self . nightscoutDataManager. uploadGlucose ( values, sensorState: manager. sensorState)
169
+ case . failure:
170
+ break
171
+ }
172
+ }
173
+
174
+ self . log. default ( " Asserting current pump data " )
175
+ self . pumpManager? . assertCurrentPumpData ( )
176
+ }
177
+ case . noData:
178
+ log. default ( " CGMManager: \( type ( of: manager) ) did update with no data " )
179
+
180
+ pumpManager? . assertCurrentPumpData ( )
181
+ case . error( let error) :
182
+ log. default ( " CGMManager: \( type ( of: manager) ) did update with error: \( error) " )
183
+
184
+ self . setLastError ( error: error)
185
+ log. default ( " Asserting current pump data " )
186
+ pumpManager? . assertCurrentPumpData ( )
187
+ }
188
+
189
+ updatePumpManagerBLEHeartbeatPreference ( )
190
+ }
191
+
158
192
159
193
}
160
194
@@ -269,36 +303,8 @@ extension DeviceDataManager: CGMManagerDelegate {
269
303
270
304
func cgmManager( _ manager: CGMManager , didUpdateWith result: CGMResult ) {
271
305
dispatchPrecondition ( condition: . onQueue( queue) )
272
- switch result {
273
- case . newData( let values) :
274
- log. default ( " CGMManager: \( type ( of: manager) ) did update with \( values. count) values " )
275
-
276
- loopManager. addGlucose ( values) { result in
277
- if manager. shouldSyncToRemoteService {
278
- switch result {
279
- case . success( let values) :
280
- self . nightscoutDataManager. uploadGlucose ( values, sensorState: manager. sensorState)
281
- case . failure:
282
- break
283
- }
284
- }
285
-
286
- self . log. default ( " Asserting current pump data " )
287
- self . pumpManager? . assertCurrentPumpData ( )
288
- }
289
- case . noData:
290
- log. default ( " CGMManager: \( type ( of: manager) ) did update with no data " )
291
-
292
- pumpManager? . assertCurrentPumpData ( )
293
- case . error( let error) :
294
- log. default ( " CGMManager: \( type ( of: manager) ) did update with error: \( error) " )
295
-
296
- self . setLastError ( error: error)
297
- log. default ( " Asserting current pump data " )
298
- pumpManager? . assertCurrentPumpData ( )
299
- }
300
-
301
- updatePumpManagerBLEHeartbeatPreference ( )
306
+ lastBLEDrivenUpdate = Date ( )
307
+ processCGMResult ( manager, result: result) ;
302
308
}
303
309
304
310
func startDateToFilterNewData( for manager: CGMManager ) -> Date ? {
@@ -346,12 +352,12 @@ extension DeviceDataManager: PumpManagerDelegate {
346
352
bleHeartbeatUpdateInterval = . minutes( 1 )
347
353
case let interval? :
348
354
// If we looped successfully less than 5 minutes ago, ignore the heartbeat.
349
- log. default ( " PumpManager: \( type ( of: pumpManager) ) ignoring heartbeat. Last loop completed \( interval. minutes) minutes ago " )
355
+ log. default ( " PumpManager: \( type ( of: pumpManager) ) ignoring pumpManager heartbeat. Last loop completed \( - interval. minutes) minutes ago " )
350
356
return
351
357
}
352
358
353
359
guard lastBLEDrivenUpdate. timeIntervalSinceNow <= - bleHeartbeatUpdateInterval else {
354
- log. default ( " PumpManager: \( type ( of: pumpManager) ) ignoring heartbeat. Last update \( lastBLEDrivenUpdate) " )
360
+ log. default ( " PumpManager: \( type ( of: pumpManager) ) ignoring pumpManager heartbeat. Last ble update \( lastBLEDrivenUpdate) " )
355
361
return
356
362
}
357
363
lastBLEDrivenUpdate = Date ( )
@@ -363,7 +369,7 @@ extension DeviceDataManager: PumpManagerDelegate {
363
369
364
370
if let manager = self . cgmManager {
365
371
self . queue. async {
366
- self . cgmManager ( manager, didUpdateWith : result)
372
+ self . processCGMResult ( manager, result : result)
367
373
}
368
374
}
369
375
}
0 commit comments