|
@@ -1,5 +1,4 @@
|
|
|
import Combine
|
|
import Combine
|
|
|
-import LoopKit
|
|
|
|
|
import SwiftUI
|
|
import SwiftUI
|
|
|
|
|
|
|
|
extension AutotuneConfig {
|
|
extension AutotuneConfig {
|
|
@@ -7,7 +6,6 @@ extension AutotuneConfig {
|
|
|
@Injected() var apsManager: APSManager!
|
|
@Injected() var apsManager: APSManager!
|
|
|
@Published var useAutotune = false
|
|
@Published var useAutotune = false
|
|
|
@Published var autotune: Autotune?
|
|
@Published var autotune: Autotune?
|
|
|
- @Published var basalProfile: [BasalProfileEntry?] = []
|
|
|
|
|
private(set) var units: GlucoseUnits = .mmolL
|
|
private(set) var units: GlucoseUnits = .mmolL
|
|
|
@Published var publishedDate = Date()
|
|
@Published var publishedDate = Date()
|
|
|
@Persisted(key: "lastAutotuneDate") private var lastAutotuneDate = Date() {
|
|
@Persisted(key: "lastAutotuneDate") private var lastAutotuneDate = Date() {
|
|
@@ -20,20 +18,6 @@ extension AutotuneConfig {
|
|
|
|
|
|
|
|
override func subscribe() {
|
|
override func subscribe() {
|
|
|
autotune = provider.autotune
|
|
autotune = provider.autotune
|
|
|
- var bp: [BasalProfileEntry?] = []
|
|
|
|
|
- for p in provider.autotune?.basalProfile ?? [] {
|
|
|
|
|
- var np: BasalProfileEntry?
|
|
|
|
|
- for b in provider.basalProfilePump {
|
|
|
|
|
- if b.start > p.start {
|
|
|
|
|
- NSLog("Matched \(p) with \(b)")
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- np = b
|
|
|
|
|
- }
|
|
|
|
|
- bp.append(np)
|
|
|
|
|
- }
|
|
|
|
|
- NSLog("basalProfile \(bp)")
|
|
|
|
|
- basalProfile = bp
|
|
|
|
|
units = settingsManager.settings.units
|
|
units = settingsManager.settings.units
|
|
|
useAutotune = settingsManager.settings.useAutotune
|
|
useAutotune = settingsManager.settings.useAutotune
|
|
|
publishedDate = lastAutotuneDate
|
|
publishedDate = lastAutotuneDate
|
|
@@ -73,47 +57,5 @@ extension AutotuneConfig {
|
|
|
.cancellable()
|
|
.cancellable()
|
|
|
.store(in: &lifetime)
|
|
.store(in: &lifetime)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- func copyBasal() {
|
|
|
|
|
- guard let autotuneProfile = autotune?.basalProfile else {
|
|
|
|
|
- NSLog("copyBasal failure - no profile")
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- guard let pump = provider.deviceManager?.pumpManager else {
|
|
|
|
|
- // storage.save(profile, as: OpenAPS.Settings.basalProfile)
|
|
|
|
|
- NSLog("copyBasal failure - no pump")
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- let profile = autotuneProfile.map {
|
|
|
|
|
- BasalProfileEntry(
|
|
|
|
|
- start: $0.start,
|
|
|
|
|
- minutes: $0.minutes,
|
|
|
|
|
- // Round to 0.05, ie. 1/20th
|
|
|
|
|
- rate: Decimal(round(Double($0.rate) * 20) / 20)
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- for item in profile {
|
|
|
|
|
- NSLog("\(item.minutes) \(item.rate)")
|
|
|
|
|
- }
|
|
|
|
|
- let syncValues = profile.map {
|
|
|
|
|
- RepeatingScheduleValue(
|
|
|
|
|
- startTime: TimeInterval($0.minutes * 60),
|
|
|
|
|
- value: Double($0.rate)
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- for item in syncValues {
|
|
|
|
|
- NSLog("\(item.startTime) \(item.value)")
|
|
|
|
|
- }
|
|
|
|
|
- pump.syncBasalRateSchedule(items: syncValues) { result in
|
|
|
|
|
- switch result {
|
|
|
|
|
- case .success:
|
|
|
|
|
- NSLog("copyBasal success")
|
|
|
|
|
- self.provider.storage.save(profile, as: OpenAPS.Settings.basalProfile)
|
|
|
|
|
- case let .failure(error):
|
|
|
|
|
- NSLog("copyBasal failed \(error)")
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|