| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // LoopFollow
- // BackgroundRefreshType.swift
- import Foundation
- enum BackgroundRefreshType: String, Codable, CaseIterable {
- case none = "None"
- case silentTune = "Silent Tune"
- case rileyLink = "RileyLink"
- case dexcom = "Dexcom"
- case omnipodDash = "Omnipod Dash"
- /// Indicates if the device type uses Bluetooth
- var isBluetooth: Bool {
- switch self {
- case .rileyLink, .dexcom, .omnipodDash:
- return true
- case .silentTune, .none:
- return false
- }
- }
- var heartBeatInterval: TimeInterval? {
- switch self {
- case .rileyLink:
- return 60
- case .omnipodDash:
- return 3 * 60
- case .dexcom:
- return 5 * 60
- case .silentTune, .none:
- return nil
- }
- }
- var estimatedDelayBasedOnHeartbeat: Bool {
- switch self {
- case .rileyLink:
- return true
- case .dexcom, .omnipodDash, .silentTune, .none:
- return false
- }
- }
- /// Determines if a BLEDevice matches the specific device type
- func matches(_ device: BLEDevice) -> Bool {
- switch self {
- case .rileyLink:
- let rileyUUIDString = "0235733b-99c5-4197-b856-69219c2a3845"
- if let services = device.advertisedServices {
- return services.map { $0.lowercased() }
- .contains(rileyUUIDString.lowercased())
- }
- return false
- case .dexcom:
- if let name = device.name {
- return name.hasPrefix("DXCM") || name.hasPrefix("DX02") || name.hasPrefix("Dexcom")
- }
- return false
- case .omnipodDash:
- if let name = device.name {
- // "TWI BOARD": original DASH pod
- // "InPlay BLE": newer Atlas DASH pod
- // " :: Fake POD ::": rPi DASH simulator
- return name == "TWI BOARD" || name == "InPlay BLE" || name == " :: Fake POD ::"
- }
- return false
- case .silentTune, .none:
- return false
- }
- }
- }
|