| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import Combine
- import Foundation
- import LoopKitUI
- import Swinject
- protocol APSManager {
- func loop()
- func runTest()
- func makeProfiles()
- var pumpManager: PumpManagerUI? { get set }
- var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> { get }
- func fetchLastGlucose()
- func makeMeal()
- }
- final class BaseAPSManager: APSManager, Injectable {
- @Injected() private var storage: FileStorage!
- @Injected() private var pumpHistoryStorage: PumpHistoryStorage!
- @Injected() private var glucoseStorage: GlucoseStorage!
- @Injected() private var keychain: Keychain!
- @Injected() private var deviceDataManager: DeviceDataManager!
- private var openAPS: OpenAPS!
- private var glucoseCancellable: AnyCancellable?
- var pumpManager: PumpManagerUI? {
- get {
- deviceDataManager.pumpManager
- }
- set {
- deviceDataManager.pumpManager = newValue
- }
- }
- var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> { deviceDataManager.pumpDisplayState }
- init(resolver: Resolver) {
- injectServices(resolver)
- openAPS = OpenAPS(storage: storage)
- }
- func loop() {
- openAPS.loop()
- }
- func runTest() {
- openAPS.test()
- }
- func makeProfiles() {
- openAPS.makeProfile(autotuned: false)
- openAPS.makeProfile(autotuned: true)
- }
- func makeMeal() {
- openAPS.makeClock()
- openAPS.makeMeal()
- }
- func fetchLastGlucose() {
- if let urlString = keychain.getValue(String.self, forKey: NightscoutConfig.Config.urlKey),
- let url = URL(string: urlString)
- {
- glucoseCancellable = NightscoutAPI(url: url).fetchLast(288)
- .sink { _ in }
- receiveValue: { glucose in
- self.glucoseStorage.storeGlucose(glucose)
- }
- }
- }
- }
|