Просмотр исходного кода

Ensure actually uploaded dose/rate is of allowed pump increment

Deniz Cengiz 1 год назад
Родитель
Сommit
ac8045ae6d

+ 5 - 1
FreeAPS/Sources/Services/HealthKit/HealthKitManager.swift

@@ -526,7 +526,11 @@ final class BaseHealthKitManager: HealthKitManager, Injectable {
                 id: predecessorEntryId,
                 type: .tempBasal,
                 timestamp: predecessorTimestamp,
-                amount: Decimal(adjustedDeliveredUnitsRounded), // Ensure this is a Decimal if needed
+                amount: Decimal(
+                    deviceDataManager?.pumpManager?
+                        .roundToSupportedBolusVolume(units: adjustedDeliveredUnitsRounded) ?? adjustedDeliveredUnitsRounded
+                ),
+                // Ensure this is a Decimal if needed
                 duration: Int(
                     adjustedDuration /
                         60

+ 10 - 3
FreeAPS/Sources/Services/Network/TidepoolManager.swift

@@ -495,7 +495,8 @@ extension BaseTidepoolManager {
                                 type: .tempBasal,
                                 startDate: predecessorTimestamp,
                                 endDate: adjustedEndDate,
-                                value: adjustedDeliveredUnits,
+                                value: self.apsManager.pumpManager?
+                                    .roundToSupportedBolusVolume(units: adjustedDeliveredUnits) ?? adjustedDeliveredUnits,
                                 unit: .units,
                                 deliveredUnits: adjustedDeliveredUnits,
                                 syncIdentifier: predecessorEntrySyncIdentifier,
@@ -518,13 +519,19 @@ extension BaseTidepoolManager {
                 let roundedRate = self.apsManager.pumpManager?
                     .roundToSupportedBasalRate(unitsPerHour: Double(amount)) ?? Double(amount)
 
+                let deliveredAmount = self.apsManager.pumpManager?
+                    .roundToSupportedBolusVolume(units: Double(roundedRate) * (preciseDurationSeconds / 3600)) ??
+                    Double(roundedRate) * (preciseDurationSeconds / 3600)
+
                 let newDoseEntry = DoseEntry(
                     type: .tempBasal,
                     startDate: event.timestamp,
                     endDate: currentEndDate,
-                    value: Double(roundedRate) * (preciseDurationSeconds / 3600), // precise value using seconds
+                    value: self.apsManager.pumpManager?
+                        .roundToSupportedBolusVolume(units: deliveredAmount) ?? deliveredAmount,
                     unit: .units,
-                    deliveredUnits: Double(roundedRate) * (preciseDurationSeconds / 3600), // precise value using seconds
+                    deliveredUnits: self.apsManager.pumpManager?
+                        .roundToSupportedBolusVolume(units: deliveredAmount) ?? deliveredAmount,
                     syncIdentifier: event.id,
                     scheduledBasalRate: HKQuantity(
                         unit: .internationalUnitsPerHour,