Add basic storage, temperature history display

This commit is contained in:
Christoph Hagen
2023-06-08 09:52:20 +02:00
parent 002eb11dc1
commit 147cd6a306
22 changed files with 843 additions and 211 deletions

View File

@@ -18,11 +18,13 @@ enum BluetoothResponseType: UInt8 {
final class BluetoothClient: ObservableObject {
weak var delegate: TemperatureDataTransferDelegate?
private let updateInterval = 3.0
private let connection = DeviceManager()
private let recorder = TemperatureStorage()
private var didTransferData = false
init(deviceInfo: DeviceInfo? = nil) {
connection.delegate = self
@@ -41,12 +43,25 @@ final class BluetoothClient: ObservableObject {
startRegularUpdates()
} else {
endRegularUpdates()
didTransferData = false
}
}
}
@Published
private(set) var deviceInfo: DeviceInfo?
private(set) var deviceInfo: DeviceInfo? {
didSet {
guard !didTransferData, runningTransfer == nil else {
return
}
guard !openRequests.contains(where: { if case .getRecordingData = $0 { return true }; return false }) else {
return
}
guard collectRecordedData() else {
return
}
}
}
private var openRequests: [BluetoothRequest] = []
@@ -55,9 +70,11 @@ final class BluetoothClient: ObservableObject {
private var runningTransfer: TemperatureDataTransfer?
func updateDeviceInfo() {
if case .configured = deviceState {
addRequest(.getInfo)
guard case .configured = deviceState else {
return
}
addRequest(.getInfo)
}
private var dataUpdateTimer: Timer?
@@ -118,7 +135,7 @@ final class BluetoothClient: ObservableObject {
}
let transfer = TemperatureDataTransfer(info: info)
runningTransfer = transfer
runningTransfer?.delegate = recorder
runningTransfer?.delegate = delegate
let next = transfer.nextRequest()
addRequest(next)
return true
@@ -137,6 +154,12 @@ final class BluetoothClient: ObservableObject {
return // TODO: Start new transfer?
}
let next = runningTransfer.nextRequest()
if case .clearRecordingBuffer = next {
runningTransfer.completeTransfer()
self.runningTransfer = nil
didTransferData = true
return
}
addRequest(next)
}