Skip to content

Commit a6a057f

Browse files
committed
Tests passing
1 parent 599ba10 commit a6a057f

File tree

10 files changed

+1775
-215
lines changed

10 files changed

+1775
-215
lines changed

Loop.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@
434434
C16B983E26B4893300256B05 /* DoseEnactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16B983D26B4893300256B05 /* DoseEnactor.swift */; };
435435
C16B984026B4898800256B05 /* DoseEnactorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16B983F26B4898800256B05 /* DoseEnactorTests.swift */; };
436436
C16DA84222E8E112008624C2 /* PluginManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16DA84122E8E112008624C2 /* PluginManager.swift */; };
437+
C16FC0B02A99392F0025E239 /* live_capture_input.json in Resources */ = {isa = PBXBuildFile; fileRef = C16FC0AF2A99392F0025E239 /* live_capture_input.json */; };
437438
C1735B1E2A0809830082BB8A /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = C1735B1D2A0809830082BB8A /* ZIPFoundation */; };
438439
C1742332259BEADC00399C9D /* ManualEntryDoseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1742331259BEADC00399C9D /* ManualEntryDoseView.swift */; };
439440
C174233C259BEB0F00399C9D /* ManualEntryDoseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C174233B259BEB0F00399C9D /* ManualEntryDoseViewModel.swift */; };
@@ -1446,6 +1447,7 @@
14461447
C16B983D26B4893300256B05 /* DoseEnactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoseEnactor.swift; sourceTree = "<group>"; };
14471448
C16B983F26B4898800256B05 /* DoseEnactorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoseEnactorTests.swift; sourceTree = "<group>"; };
14481449
C16DA84122E8E112008624C2 /* PluginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginManager.swift; sourceTree = "<group>"; };
1450+
C16FC0AF2A99392F0025E239 /* live_capture_input.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = live_capture_input.json; sourceTree = "<group>"; };
14491451
C1742331259BEADC00399C9D /* ManualEntryDoseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualEntryDoseView.swift; sourceTree = "<group>"; };
14501452
C174233B259BEB0F00399C9D /* ManualEntryDoseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualEntryDoseViewModel.swift; sourceTree = "<group>"; };
14511453
C174571329830930009EFCF2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -1543,8 +1545,8 @@
15431545
C1D0B62F2986D4D90098D215 /* LocalizedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedString.swift; sourceTree = "<group>"; };
15441546
C1D197FE232CF92D0096D646 /* capture-build-details.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "capture-build-details.sh"; sourceTree = "<group>"; };
15451547
C1D289B422F90A52003FFBD9 /* BasalDeliveryState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalDeliveryState.swift; sourceTree = "<group>"; };
1546-
C1D70F7A2A914F71009FE129 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
15471548
C1D476B32A8ED179002C1C87 /* LoopAlgorithmTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopAlgorithmTests.swift; sourceTree = "<group>"; };
1549+
C1D70F7A2A914F71009FE129 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
15481550
C1DA986B2843B6F9001D04CC /* PersistedProperty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistedProperty.swift; sourceTree = "<group>"; };
15491551
C1DE5D22251BFC4D00439E49 /* SimpleBolusView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleBolusView.swift; sourceTree = "<group>"; };
15501552
C1E2773D224177C000354103 /* ClockKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ClockKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/ClockKit.framework; sourceTree = DEVELOPER_DIR; };
@@ -2761,6 +2763,7 @@
27612763
C13072BD2A76AF97009A7C58 /* live_capture_doses.json */,
27622764
C13072BF2A76B041009A7C58 /* live_capture_carb_entries.json */,
27632765
C13072C32A76B0B1009A7C58 /* live_capture_historic_glucose.json */,
2766+
C16FC0AF2A99392F0025E239 /* live_capture_input.json */,
27642767
);
27652768
path = live_capture;
27662769
sourceTree = "<group>";
@@ -3434,6 +3437,7 @@
34343437
E90909D124E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json in Resources */,
34353438
E9C58A8024DB529A00487A17 /* insulin_effect.json in Resources */,
34363439
E90909DF24E34F1600F963D2 /* low_and_falling_insulin_effect.json in Resources */,
3440+
C16FC0B02A99392F0025E239 /* live_capture_input.json in Resources */,
34373441
E93E86BE24E1FDC400FF40C8 /* flat_and_stable_carb_effect.json in Resources */,
34383442
E90909E824E3530200F963D2 /* low_with_low_treatment_insulin_effect.json in Resources */,
34393443
E9B3553B293706CB0076AB04 /* noisy_cgm_counteraction_effect.json in Resources */,

Loop/Managers/LoopDataManager.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ final class LoopDataManager {
364364

365365
private var retrospectiveGlucoseDiscrepancies: [GlucoseEffect]? {
366366
didSet {
367-
retrospectiveGlucoseDiscrepanciesSummed = retrospectiveGlucoseDiscrepancies?.combinedSums(of: LoopConstants.retrospectiveCorrectionGroupingInterval * retrospectiveCorrectionGroupingIntervalMultiplier)
367+
retrospectiveGlucoseDiscrepanciesSummed = retrospectiveGlucoseDiscrepancies?.combinedSums(of: LoopMath.retrospectiveCorrectionGroupingInterval * retrospectiveCorrectionGroupingIntervalMultiplier)
368368
}
369369
}
370370

@@ -1005,7 +1005,7 @@ extension LoopDataManager {
10051005

10061006
if glucoseMomentumEffect == nil {
10071007
updateGroup.enter()
1008-
glucoseStore.getRecentMomentumEffect { (result) -> Void in
1008+
glucoseStore.getRecentMomentumEffect(for: now()) { (result) -> Void in
10091009
switch result {
10101010
case .failure(let error):
10111011
self.logger.error("Failure getting recent momentum effect: %{public}@", String(describing: error))
@@ -1594,7 +1594,7 @@ extension LoopDataManager {
15941594
insulinSensitivity: insulinSensitivity,
15951595
basalRate: basalRate,
15961596
correctionRange: correctionRange,
1597-
retrospectiveCorrectionGroupingInterval: LoopConstants.retrospectiveCorrectionGroupingInterval
1597+
retrospectiveCorrectionGroupingInterval: LoopMath.retrospectiveCorrectionGroupingInterval
15981598
)
15991599
}
16001600

@@ -1605,15 +1605,15 @@ extension LoopDataManager {
16051605
let correctionRange = settings.glucoseTargetRangeSchedule!.quantityRange(at: glucose.startDate)
16061606

16071607
let retrospectiveGlucoseDiscrepancies = insulinCounteractionEffects.subtracting(carbEffects, withUniformInterval: carbStore.delta)
1608-
let retrospectiveGlucoseDiscrepanciesSummed = retrospectiveGlucoseDiscrepancies.combinedSums(of: LoopConstants.retrospectiveCorrectionGroupingInterval * retrospectiveCorrectionGroupingIntervalMultiplier)
1608+
let retrospectiveGlucoseDiscrepanciesSummed = retrospectiveGlucoseDiscrepancies.combinedSums(of: LoopMath.retrospectiveCorrectionGroupingInterval * retrospectiveCorrectionGroupingIntervalMultiplier)
16091609
return retrospectiveCorrection.computeEffect(
16101610
startingAt: glucose,
16111611
retrospectiveGlucoseDiscrepanciesSummed: retrospectiveGlucoseDiscrepanciesSummed,
16121612
recencyInterval: LoopCoreConstants.inputDataRecencyInterval,
16131613
insulinSensitivity: insulinSensitivity,
16141614
basalRate: basalRate,
16151615
correctionRange: correctionRange,
1616-
retrospectiveCorrectionGroupingInterval: LoopConstants.retrospectiveCorrectionGroupingInterval
1616+
retrospectiveCorrectionGroupingInterval: LoopMath.retrospectiveCorrectionGroupingInterval
16171617
)
16181618
}
16191619

Loop/Managers/Store Protocols/GlucoseStoreProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protocol GlucoseStoreProtocol: AnyObject {
2929
func executeGlucoseQuery(fromQueryAnchor queryAnchor: GlucoseStore.QueryAnchor?, limit: Int, completion: @escaping (GlucoseStore.GlucoseQueryResult) -> Void)
3030

3131
// MARK: Effect Calculation
32-
func getRecentMomentumEffect(_ completion: @escaping (_ result: Result<[GlucoseEffect], Error>) -> Void)
32+
func getRecentMomentumEffect(for date: Date?, _ completion: @escaping (_ result: Result<[GlucoseEffect], Error>) -> Void)
3333

3434
func getCounteractionEffects(start: Date, end: Date?, to effects: [GlucoseEffect], _ completion: @escaping (_ effects: Result<[GlucoseEffectVelocity], Error>) -> Void)
3535

Loop/Models/LoopConstants.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,6 @@ enum LoopConstants {
5252
// Percentage of recommended dose to apply as bolus when using automatic bolus dosing strategy
5353
static let bolusPartialApplicationFactor = 0.4
5454

55-
/// The interval over which to aggregate changes in glucose for retrospective correction
56-
static let retrospectiveCorrectionGroupingInterval = TimeInterval(minutes: 30)
57-
5855
/// Loop completion aging category limits
5956
static let completionFreshLimit = TimeInterval(minutes: 6)
6057
static let completionAgingLimit = TimeInterval(minutes: 16)

0 commit comments

Comments
 (0)