Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0b59a1e
[COASTAL-1291] plugin identifier is no longer class property (#45)
nhamming Sep 25, 2023
117e3cd
[COASTAL-1291] plugin identifier is no longer class property (#45)
nhamming Sep 25, 2023
df2244a
Merge remote-tracking branch 'origin/dev' into ps2/LOOP-4735/cgm-even…
ps2 Sep 26, 2023
f409fea
Merge remote-tracking branch 'origin/dev' into ps2/LOOP-4735/cgm-even…
ps2 Sep 26, 2023
643676c
Merge pull request #46 from tidepool-org/ps2/LOOP-4735/cgm-event-store
ps2 Sep 27, 2023
3ff8e26
Merge pull request #46 from tidepool-org/ps2/LOOP-4735/cgm-event-store
ps2 Sep 27, 2023
569bff0
Types moved to LoopAlgorithm
ps2 Mar 1, 2024
f5f9101
Types moved to LoopAlgorithm
ps2 Mar 1, 2024
31a8e20
Merge pull request #47 from tidepool-org/ps2/LOOP-4781/algorithm-package
ps2 Mar 5, 2024
1f96dfd
Merge pull request #47 from tidepool-org/ps2/LOOP-4781/algorithm-package
ps2 Mar 5, 2024
817ced1
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Nov 21, 2024
527d328
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Nov 21, 2024
f998db8
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Nov 22, 2024
6432a54
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Nov 22, 2024
4baf31a
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Dec 4, 2024
f510927
[LOOP-5153] Remove HealthKit dependency from LoopAlgorithm
Camji55 Dec 4, 2024
fdcb137
Bump to iOS 17
Camji55 Dec 6, 2024
8c80ac8
Bump to iOS 17
Camji55 Dec 6, 2024
e17f804
Bump to iOS 17
Camji55 Dec 9, 2024
5a77455
Bump to iOS 17
Camji55 Dec 9, 2024
b63cf26
Changes for protocol updates
ps2 Jul 24, 2025
d2ea8df
Changes for protocol updates
ps2 Jul 24, 2025
16b4fc6
Merge pull request #50 from tidepool-org/ps2/LOOP-5235/enable-schedul…
ps2 Jul 29, 2025
703c683
Merge pull request #50 from tidepool-org/ps2/LOOP-5235/enable-schedul…
ps2 Jul 29, 2025
15c7047
[LOOP-5496] adding loop status checks (#51)
nhamming Oct 24, 2025
70d42f8
[LOOP-5496] adding loop status checks (#51)
nhamming Oct 24, 2025
6b70206
Merge tidepool/dev into tidepool-sync/2026-03-10
loopkitdev Mar 10, 2026
6093b71
Merge remote-tracking branch 'upstream/dev' into tidepool-sync/2026-0…
loopkitdev Apr 9, 2026
69f3a85
Merge tidepool/dev into tidepool-sync/2026-05-11
ps2 May 11, 2026
48bbfad
Merge remote-tracking branch 'origin/dev' into tidepool-sync/2026-05-11
ps2 May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions CGMBLEKit Example/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
// Copyright © 2015 Nathan Racklyeft. All rights reserved.
//

import UIKit
import HealthKit
import CGMBLEKit
import LoopAlgorithm
import UIKit

class ViewController: UIViewController, TransmitterDelegate, UITextFieldDelegate {

Expand Down Expand Up @@ -77,7 +77,7 @@ class ViewController: UIViewController, TransmitterDelegate, UITextFieldDelegate
@IBAction func calibrate(_ sender: UIButton) {
let dialog = UIAlertController(title: "Enter BG", message: "Calibrate sensor.", preferredStyle: .alert)

let unit = HKUnit.milligramsPerDeciliter
let unit = LoopUnit.milligramsPerDeciliter

dialog.addTextField { (textField : UITextField!) in
textField.placeholder = unit.unitString
Expand All @@ -86,15 +86,15 @@ class ViewController: UIViewController, TransmitterDelegate, UITextFieldDelegate

dialog.addAction(UIAlertAction(title: "Calibrate", style: .default, handler: { (action: UIAlertAction!) in
let textField = dialog.textFields![0] as UITextField
let minGlucose = HKQuantity(unit: HKUnit.milligramsPerDeciliter, doubleValue: 40)
let maxGlucose = HKQuantity(unit: HKUnit.milligramsPerDeciliter, doubleValue: 400)
let minGlucose = LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 40)
let maxGlucose = LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: 400)

if let text = textField.text, let entry = Double(text) {
guard entry >= minGlucose.doubleValue(for: unit) && entry <= maxGlucose.doubleValue(for: unit) else {
// TODO: notify the user if the glucose is not in range
return
}
let glucose = HKQuantity(unit: unit, doubleValue: Double(entry))
let glucose = LoopQuantity(unit: unit, doubleValue: Double(entry))
AppDelegate.sharedDelegate.commandQueue.enqueue(.calibrateSensor(to: glucose, at: Date()))
}
}))
Expand Down Expand Up @@ -161,7 +161,7 @@ class ViewController: UIViewController, TransmitterDelegate, UITextFieldDelegate
}

func transmitter(_ transmitter: Transmitter, didRead glucose: Glucose) {
let unit = HKUnit.milligramsPerDeciliter
let unit = LoopUnit.milligramsPerDeciliter
if let value = glucose.glucose?.doubleValue(for: unit) {
titleLabel.text = "\(value) \(unit.unitString)"
} else {
Expand Down
26 changes: 4 additions & 22 deletions CGMBLEKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
4379CFD7210EB1BF00AADC79 /* Locked.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4379CFD5210EB19F00AADC79 /* Locked.swift */; };
4379CFD9210EB3AC00AADC79 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4379CFD8210EB3AB00AADC79 /* UIColor.swift */; };
4379CFDA210EB3D200AADC79 /* CGMBLEKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43CABDF31C3506F100005705 /* CGMBLEKit.framework */; };
4379CFE1210EC27500AADC79 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397921D56950C0028E321 /* HKUnit.swift */; };
4379CFE52110EBAE00AADC79 /* TransmitterSetupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4379CFE42110EBAE00AADC79 /* TransmitterSetupViewController.swift */; };
4379CFE72110EC5500AADC79 /* TransmitterIDSetupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4379CFE62110EC5500AADC79 /* TransmitterIDSetupViewController.swift */; };
4379CFEA2110EDB100AADC79 /* TransmitterManagerSetup.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4379CFEC2110EDB100AADC79 /* TransmitterManagerSetup.storyboard */; };
Expand Down Expand Up @@ -105,10 +104,7 @@
43E3978B1D5668BD0028E321 /* CalibrationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E3978A1D5668BD0028E321 /* CalibrationState.swift */; };
43E3978F1D566B170028E321 /* Glucose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E3978E1D566B170028E321 /* Glucose.swift */; };
43E397911D5692080028E321 /* GlucoseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397901D5692080028E321 /* GlucoseTests.swift */; };
43E397931D56950C0028E321 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397921D56950C0028E321 /* HKUnit.swift */; };
43E4B1F21F8AF9790038823E /* PeripheralManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E4B1F11F8AF9790038823E /* PeripheralManager.swift */; };
43E5292C2060C4FA00ACEB3B /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397921D56950C0028E321 /* HKUnit.swift */; };
43E5292D2060C50800ACEB3B /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397921D56950C0028E321 /* HKUnit.swift */; };
43EEA7111D14DC0800CBBDA0 /* AESCrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 43EEA70F1D14DC0800CBBDA0 /* AESCrypt.h */; settings = {ATTRIBUTES = (Public, ); }; };
43EEA7121D14DC0800CBBDA0 /* AESCrypt.m in Sources */ = {isa = PBXBuildFile; fileRef = 43EEA7101D14DC0800CBBDA0 /* AESCrypt.m */; };
43F82BCC1D035AA4006F5DD7 /* TransmitterTimeRxMessageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F82BCB1D035AA4006F5DD7 /* TransmitterTimeRxMessageTests.swift */; };
Expand All @@ -132,7 +128,6 @@
A9AD37EC225EEE850058C179 /* AuthRequestRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CABE171C350B3D00005705 /* AuthRequestRxMessage.swift */; };
A9AD37ED225EEE850058C179 /* AuthChallengeRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CABE1A1C350B3D00005705 /* AuthChallengeRxMessage.swift */; };
A9AD37EE225EEE850058C179 /* GlucoseHistoryTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CD31CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift */; };
A9AD37EF225EEE850058C179 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397921D56950C0028E321 /* HKUnit.swift */; };
A9AD37F0225EEE850058C179 /* CalibrationDataRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43846AC51D8F896C00799272 /* CalibrationDataRxMessage.swift */; };
A9AD37F1225EEE850058C179 /* SessionStopTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CCF1CA73C57003CC1B0 /* SessionStopTxMessage.swift */; };
A9AD37F2225EEE850058C179 /* PeripheralManager+G5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 431CE7661F91D0B300255374 /* PeripheralManager+G5.swift */; };
Expand Down Expand Up @@ -432,7 +427,6 @@
43E3978A1D5668BD0028E321 /* CalibrationState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalibrationState.swift; sourceTree = "<group>"; };
43E3978E1D566B170028E321 /* Glucose.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Glucose.swift; sourceTree = "<group>"; };
43E397901D5692080028E321 /* GlucoseTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseTests.swift; sourceTree = "<group>"; };
43E397921D56950C0028E321 /* HKUnit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HKUnit.swift; sourceTree = "<group>"; };
43E4B1F11F8AF9790038823E /* PeripheralManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeripheralManager.swift; sourceTree = "<group>"; };
43EEA70F1D14DC0800CBBDA0 /* AESCrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AESCrypt.h; sourceTree = "<group>"; };
43EEA7101D14DC0800CBBDA0 /* AESCrypt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AESCrypt.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -772,7 +766,6 @@
isa = PBXGroup;
children = (
43DC87BF1C8B509B005BC30D /* Data.swift */,
43E397921D56950C0028E321 /* HKUnit.swift */,
43026D3E2131C5C600A332E2 /* LocalizedString.swift */,
4379CFD5210EB19F00AADC79 /* Locked.swift */,
4379CFD1210EB0F700AADC79 /* TimeInterval.swift */,
Expand Down Expand Up @@ -1186,7 +1179,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
43E5292C2060C4FA00ACEB3B /* HKUnit.swift in Sources */,
C1CD8B0C203931AD00A8F498 /* NSUserDefaults.swift in Sources */,
E71BFF7E20673BD700C876A2 /* CommandQueue.swift in Sources */,
43D140CE2047AA930032346D /* Data.swift in Sources */,
Expand All @@ -1199,7 +1191,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4379CFE1210EC27500AADC79 /* HKUnit.swift in Sources */,
4325E9E8210EAED100969CE5 /* TransmitterManager+UI.swift in Sources */,
4379CFD9210EB3AC00AADC79 /* UIColor.swift in Sources */,
4325E9E9210EAED100969CE5 /* TransmitterSettingsViewController.swift in Sources */,
Expand Down Expand Up @@ -1230,7 +1221,6 @@
43CABE261C350B3D00005705 /* AuthChallengeRxMessage.swift in Sources */,
43CE7CD41CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift in Sources */,
C1614F082AAFD07700F636E5 /* TransmitterManagerState.swift in Sources */,
43E397931D56950C0028E321 /* HKUnit.swift in Sources */,
43846AC61D8F896C00799272 /* CalibrationDataRxMessage.swift in Sources */,
43CE7CD01CA73C57003CC1B0 /* SessionStopTxMessage.swift in Sources */,
431CE7671F91D0B300255374 /* PeripheralManager+G5.swift in Sources */,
Expand Down Expand Up @@ -1275,7 +1265,6 @@
43460F88200B30D10030C0E3 /* TransmitterIDTests.swift in Sources */,
43F82BCC1D035AA4006F5DD7 /* TransmitterTimeRxMessageTests.swift in Sources */,
433BC81D205CBB16000B1200 /* GlucoseBackfillMessageTests.swift in Sources */,
43E5292D2060C50800ACEB3B /* HKUnit.swift in Sources */,
43F82BD41D037227006F5DD7 /* SessionStartRxMessageTests.swift in Sources */,
43846AC81D8F89BE00799272 /* CalibrationDataRxMessageTests.swift in Sources */,
43DC87C01C8B509B005BC30D /* Data.swift in Sources */,
Expand Down Expand Up @@ -1305,7 +1294,6 @@
A9AD37EC225EEE850058C179 /* AuthRequestRxMessage.swift in Sources */,
A9AD37ED225EEE850058C179 /* AuthChallengeRxMessage.swift in Sources */,
A9AD37EE225EEE850058C179 /* GlucoseHistoryTxMessage.swift in Sources */,
A9AD37EF225EEE850058C179 /* HKUnit.swift in Sources */,
A9AD37F0225EEE850058C179 /* CalibrationDataRxMessage.swift in Sources */,
A9AD37F1225EEE850058C179 /* SessionStopTxMessage.swift in Sources */,
A9AD37F2225EEE850058C179 /* PeripheralManager+G5.swift in Sources */,
Expand Down Expand Up @@ -1490,10 +1478,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ResetTransmitter/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.loopkit.ResetTransmitter;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
Expand Down Expand Up @@ -1522,10 +1507,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ResetTransmitter/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.loopkit.ResetTransmitter;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
Expand Down Expand Up @@ -1712,7 +1694,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
LOCALIZED_STRING_MACRO_NAMES = (
NSLocalizedString,
Expand Down Expand Up @@ -1775,7 +1757,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
LOCALIZED_STRING_MACRO_NAMES = (
NSLocalizedString,
Expand Down
8 changes: 4 additions & 4 deletions CGMBLEKit/Calibration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

import Foundation
import HealthKit
import LoopAlgorithm


public struct Calibration {
Expand All @@ -16,12 +16,12 @@ public struct Calibration {
return nil
}

let unit = HKUnit.milligramsPerDeciliter
let unit = LoopUnit.milligramsPerDeciliter

glucose = HKQuantity(unit: unit, doubleValue: Double(calibrationMessage.glucose))
glucose = LoopQuantity(unit: unit, doubleValue: Double(calibrationMessage.glucose))
date = activationDate.addingTimeInterval(TimeInterval(calibrationMessage.timestamp))
}

public let glucose: HKQuantity
public let glucose: LoopQuantity
public let date: Date
}
7 changes: 3 additions & 4 deletions CGMBLEKit/Command.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@
//

import Foundation
import HealthKit

import LoopAlgorithm

public enum Command: RawRepresentable {
public typealias RawValue = [String: Any]

case startSensor(at: Date)
case stopSensor(at: Date)
case calibrateSensor(to: HKQuantity, at: Date)
case calibrateSensor(to: LoopQuantity, at: Date)
case resetTransmitter

public init?(rawValue: RawValue) {
Expand All @@ -37,7 +36,7 @@ public enum Command: RawRepresentable {
}
self = .stopSensor(at: date)
case .calibrateSensor?:
guard let date = date, let glucose = rawValue["glucose"] as? HKQuantity else {
guard let date = date, let glucose = rawValue["glucose"] as? LoopQuantity else {
return nil
}
self = .calibrateSensor(to: glucose, at: date)
Expand Down
1 change: 1 addition & 0 deletions CGMBLEKit/Glucose+SensorDisplayable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import Foundation
import LoopKit
import LoopAlgorithm


extension Glucose: GlucoseDisplayable {
Expand Down
16 changes: 8 additions & 8 deletions CGMBLEKit/Glucose.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

import Foundation
import HealthKit
import LoopAlgorithm

enum GlucoseLimits {
static var minimum: UInt16 = 40
Expand Down Expand Up @@ -80,14 +80,14 @@ public struct Glucose {
return glucoseMessage.glucoseIsDisplayOnly
}

public var glucose: HKQuantity? {
guard state.hasReliableGlucose && glucoseMessage.glucose >= 39 else {
public var glucose: LoopQuantity? {
guard state.hasReliableGlucose && glucoseMessage.glucose >= 39 else {
return nil
}

let unit = HKUnit.milligramsPerDeciliter
let unit = LoopUnit.milligramsPerDeciliter

return HKQuantity(unit: unit, doubleValue: Double(min(max(glucoseMessage.glucose, GlucoseLimits.minimum), GlucoseLimits.maximum)))
return LoopQuantity(unit: unit, doubleValue: Double(min(max(glucoseMessage.glucose, GlucoseLimits.minimum), GlucoseLimits.maximum)))
}

public var state: CalibrationState {
Expand All @@ -98,13 +98,13 @@ public struct Glucose {
return Int(glucoseMessage.trend)
}

public var trendRate: HKQuantity? {
public var trendRate: LoopQuantity? {
guard glucoseMessage.trend < Int8.max && glucoseMessage.trend > Int8.min else {
return nil
}

let unit = HKUnit.milligramsPerDeciliterPerMinute
return HKQuantity(unit: unit, doubleValue: Double(glucoseMessage.trend) / 10)
let unit = LoopUnit.milligramsPerDeciliterPerMinute
return LoopQuantity(unit: unit, doubleValue: Double(glucoseMessage.trend) / 10)
}

// An identifier for this reading thatʼs consistent between backfill/live data
Expand Down
1 change: 0 additions & 1 deletion CGMBLEKit/Transmitter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

import Foundation
import CoreBluetooth
import HealthKit
import os.log


Expand Down
29 changes: 19 additions & 10 deletions CGMBLEKit/TransmitterManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
//

import HealthKit
import LoopAlgorithm
import LoopKit
import ShareClient
import os.log
Expand Down Expand Up @@ -132,8 +133,8 @@ public class TransmitterManager: TransmitterDelegate {
}
}()

let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: glucoseValue)
let trendRate = HKQuantity(unit: .milligramsPerDeciliterPerMinute, doubleValue: trendRateValue)
let quantity = LoopQuantity(unit: .milligramsPerDeciliter, doubleValue: glucoseValue)
let trendRate = LoopQuantity(unit: .milligramsPerDeciliterPerMinute, doubleValue: trendRateValue)
let sample = NewGlucoseSample(date: timestamp, quantity: quantity, condition: nil, trend: trend, trendRate: trendRate, isDisplayOnly: false, wasUserEntered: false, syncIdentifier: syncIdentifier)
self.updateDelegate(with: .newData([sample]))
}
Expand Down Expand Up @@ -453,7 +454,13 @@ extension TransmitterManager {


public class G5CGMManager: TransmitterManager, CGMManager {
public static let pluginIdentifier: String = "DexG5Transmitter"
public var inSignalLoss: Bool = false

public var isInoperable: Bool {
cgmManagerStatus.isInoperable
}

public let pluginIdentifier: String = "DexG5Transmitter"

public let localizedTitle = LocalizedString("Dexcom G5", comment: "CGM display title")

Expand Down Expand Up @@ -490,7 +497,13 @@ public class G5CGMManager: TransmitterManager, CGMManager {


public class G6CGMManager: TransmitterManager, CGMManager {
public static let pluginIdentifier: String = "DexG6Transmitter"
public var inSignalLoss: Bool = false

public var isInoperable: Bool {
cgmManagerStatus.isInoperable
}

public let pluginIdentifier: String = "DexG6Transmitter"

public let localizedTitle = LocalizedString("Dexcom G6", comment: "CGM display title")

Expand Down Expand Up @@ -568,9 +581,7 @@ extension CalibrationState {

// MARK: - AlertResponder implementation
extension G5CGMManager {
public func acknowledgeAlert(alertIdentifier: Alert.AlertIdentifier, completion: @escaping (Error?) -> Void) {
completion(nil)
}
public func acknowledgeAlert(alertIdentifier: LoopKit.Alert.AlertIdentifier) async throws { }
}

// MARK: - AlertSoundVendor implementation
Expand All @@ -581,9 +592,7 @@ extension G5CGMManager {

// MARK: - AlertResponder implementation
extension G6CGMManager {
public func acknowledgeAlert(alertIdentifier: Alert.AlertIdentifier, completion: @escaping (Error?) -> Void) {
completion(nil)
}
public func acknowledgeAlert(alertIdentifier: LoopKit.Alert.AlertIdentifier) async throws { }
}

// MARK: - AlertSoundVendor implementation
Expand Down
1 change: 0 additions & 1 deletion CGMBLEKitTests/GlucoseTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
//

import XCTest
import HealthKit
@testable import CGMBLEKit

class GlucoseTests: XCTestCase {
Expand Down
1 change: 0 additions & 1 deletion CGMBLEKitUI/TransmitterManager+UI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import SwiftUI
import LoopKit
import LoopKitUI
import HealthKit
import CGMBLEKit


Expand Down
4 changes: 2 additions & 2 deletions CGMBLEKitUI/TransmitterSettingsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import UIKit
import Combine
import HealthKit
import LoopAlgorithm
import LoopKit
import LoopKitUI
import CGMBLEKit
Expand Down Expand Up @@ -523,7 +523,7 @@ private extension UIAlertController {


private extension SettingsTableViewCell {
func setGlucose(_ glucose: HKQuantity?, formatter: QuantityFormatter, isDisplayOnly: Bool) {
func setGlucose(_ glucose: LoopQuantity?, formatter: QuantityFormatter, isDisplayOnly: Bool) {
if isDisplayOnly {
textLabel?.text = LocalizedString("Glucose (Adjusted)", comment: "Describes a glucose value adjusted to reflect a recent calibration")
} else {
Expand Down
Loading