BackgroundRefreshType.swift 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. //
  2. // BackgroundRefreshType.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2025-01-02.
  6. //
  7. import Foundation
  8. enum BackgroundRefreshType: String, Codable, CaseIterable {
  9. case none = "None"
  10. case silentTune = "Silent Tune"
  11. case rileyLink = "RileyLink"
  12. case dexcom = "Dexcom"
  13. /// Indicates if the device type uses Bluetooth
  14. var isBluetooth: Bool {
  15. switch self {
  16. case .rileyLink, .dexcom:
  17. return true
  18. case .silentTune, .none:
  19. return false
  20. }
  21. }
  22. var heartBeatInterval: TimeInterval? {
  23. switch self {
  24. case .rileyLink:
  25. return 60
  26. case .dexcom:
  27. return 5 * 60
  28. case .silentTune, .none:
  29. return nil
  30. }
  31. }
  32. /// Determines if a BLEDevice matches the specific device type
  33. func matches(_ device: BLEDevice) -> Bool {
  34. switch self {
  35. case .rileyLink:
  36. let rileyUUIDString = "0235733b-99c5-4197-b856-69219c2a3845"
  37. if let services = device.advertisedServices {
  38. return services.map { $0.lowercased() }
  39. .contains(rileyUUIDString.lowercased())
  40. }
  41. return false
  42. case .dexcom:
  43. if let name = device.name {
  44. return name.hasPrefix("DXCM") || name.hasPrefix("DX02") || name.hasPrefix("Dexcom")
  45. }
  46. return false
  47. case .silentTune, .none:
  48. return false
  49. }
  50. }
  51. }