DeviceDataManager.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // DeviceDataManager.swift
  3. // RileyLink
  4. //
  5. // Created by Pete Schwamb on 4/27/16.
  6. // Copyright © 2016 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. import RileyLinkKit
  10. import RileyLinkKitUI
  11. import RileyLinkBLEKit
  12. import MinimedKit
  13. import MinimedKitUI
  14. import NightscoutKit
  15. import LoopKit
  16. import LoopKitUI
  17. import UserNotifications
  18. import os.log
  19. import UserNotifications
  20. class DeviceDataManager {
  21. let rileyLinkDeviceProvider: RileyLinkDeviceProvider
  22. var pumpManager: PumpManagerUI? {
  23. didSet {
  24. pumpManager?.pumpManagerDelegate = self
  25. UserDefaults.standard.pumpManagerRawValue = pumpManager?.rawValue
  26. }
  27. }
  28. public let log = OSLog(category: "DeviceDataManager")
  29. init() {
  30. let connectionManagerState = UserDefaults.standard.rileyLinkConnectionManagerState
  31. rileyLinkDeviceProvider = RileyLinkBluetoothDeviceProvider(autoConnectIDs: connectionManagerState?.autoConnectIDs ?? [])
  32. rileyLinkDeviceProvider.delegate = self
  33. rileyLinkDeviceProvider.setScanningEnabled(true)
  34. if let pumpManagerRawValue = UserDefaults.standard.pumpManagerRawValue {
  35. pumpManager = PumpManagerFromRawValue(pumpManagerRawValue, rileyLinkDeviceProvider: rileyLinkDeviceProvider) as? PumpManagerUI
  36. pumpManager?.pumpManagerDelegate = self
  37. }
  38. }
  39. }
  40. extension DeviceDataManager: RileyLinkDeviceProviderDelegate {
  41. func rileylinkDeviceProvider(_ rileylinkDeviceProvider: RileyLinkBLEKit.RileyLinkDeviceProvider, didChange state: RileyLinkBLEKit.RileyLinkConnectionState) {
  42. UserDefaults.standard.rileyLinkConnectionManagerState = state
  43. }
  44. }
  45. extension DeviceDataManager: PumpManagerDelegate {
  46. func pumpManagerPumpWasReplaced(_ pumpManager: LoopKit.PumpManager) {
  47. }
  48. var detectedSystemTimeOffset: TimeInterval {
  49. return 0;
  50. }
  51. func pumpManager(_ pumpManager: PumpManager, didAdjustPumpClockBy adjustment: TimeInterval) {
  52. log.debug("didAdjustPumpClockBy %@", adjustment)
  53. }
  54. func pumpManagerDidUpdateState(_ pumpManager: PumpManager) {
  55. UserDefaults.standard.pumpManagerRawValue = pumpManager.rawValue
  56. }
  57. func pumpManagerBLEHeartbeatDidFire(_ pumpManager: PumpManager) {
  58. }
  59. func pumpManagerMustProvideBLEHeartbeat(_ pumpManager: PumpManager) -> Bool {
  60. return true
  61. }
  62. func pumpManager(_ pumpManager: PumpManager, didUpdate status: PumpManagerStatus, oldStatus: PumpManagerStatus) {
  63. }
  64. func pumpManagerWillDeactivate(_ pumpManager: PumpManager) {
  65. self.pumpManager = nil
  66. }
  67. func pumpManager(_ pumpManager: PumpManager, didUpdatePumpRecordsBasalProfileStartEvents pumpRecordsBasalProfileStartEvents: Bool) {
  68. }
  69. func pumpManager(_ pumpManager: PumpManager, didError error: PumpManagerError) {
  70. log.error("pumpManager didError %@", String(describing: error))
  71. }
  72. func pumpManager(_ pumpManager: PumpManager, hasNewPumpEvents events: [NewPumpEvent], lastSync lastReconciliation: Date?, completion: @escaping (_ error: Error?) -> Void) {
  73. }
  74. func pumpManager(_ pumpManager: PumpManager, didReadReservoirValue units: Double, at date: Date, completion: @escaping (Result<(newValue: ReservoirValue, lastValue: ReservoirValue?, areStoredValuesContinuous: Bool), Error>) -> Void) {
  75. }
  76. func pumpManagerRecommendsLoop(_ pumpManager: PumpManager) {
  77. }
  78. func startDateToFilterNewPumpEvents(for manager: PumpManager) -> Date {
  79. return Date().addingTimeInterval(.hours(-2))
  80. }
  81. }
  82. // MARK: - DeviceManagerDelegate
  83. extension DeviceDataManager: DeviceManagerDelegate {
  84. func doesIssuedAlertExist(identifier: LoopKit.Alert.Identifier, completion: @escaping (Result<Bool, Error>) -> Void) {
  85. }
  86. func lookupAllUnretracted(managerIdentifier: String, completion: @escaping (Result<[LoopKit.PersistedAlert], Error>) -> Void) {
  87. }
  88. func lookupAllUnacknowledgedUnretracted(managerIdentifier: String, completion: @escaping (Result<[LoopKit.PersistedAlert], Error>) -> Void) {
  89. }
  90. func recordRetractedAlert(_ alert: LoopKit.Alert, at date: Date) {
  91. }
  92. func deviceManager(_ manager: DeviceManager, logEventForDeviceIdentifier deviceIdentifier: String?, type: DeviceLogEntryType, message: String, completion: ((Error?) -> Void)?) {}
  93. }
  94. // MARK: - AlertPresenter
  95. extension DeviceDataManager: AlertIssuer {
  96. func issueAlert(_ alert: Alert) {
  97. }
  98. func retractAlert(identifier: Alert.Identifier) {
  99. }
  100. }