Add basic storage, temperature history display
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user