BackgroundRefreshType.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 dexcomG7 = "Dexcom G7/ONE+"
  13. /// Indicates if the device type uses Bluetooth
  14. var isBluetooth: Bool {
  15. switch self {
  16. case .rileyLink, .dexcomG7:
  17. return true
  18. case .silentTune, .none:
  19. return false
  20. }
  21. }
  22. /// Determines if a BLEDevice matches the specific device type
  23. func matches(_ device: BLEDevice) -> Bool {
  24. switch self {
  25. case .rileyLink:
  26. let rileyUUIDString = "0235733b-99c5-4197-b856-69219c2a3845"
  27. if let services = device.advertisedServices {
  28. return services.map { $0.lowercased() }
  29. .contains(rileyUUIDString.lowercased())
  30. }
  31. return false
  32. case .dexcomG7:
  33. if let name = device.name {
  34. return name.hasPrefix("DXCM") || name.hasPrefix("DX02")
  35. }
  36. return false
  37. case .silentTune, .none:
  38. return false
  39. }
  40. }
  41. }