diff --git a/Sources/SpeziDevices/HealthMeasurements.swift b/Sources/SpeziDevices/HealthMeasurements.swift index aa0bf73..4fbeb3a 100644 --- a/Sources/SpeziDevices/HealthMeasurements.swift +++ b/Sources/SpeziDevices/HealthMeasurements.swift @@ -10,6 +10,7 @@ import Foundation import OSLog import Spezi import SpeziBluetooth +import SpeziBluetoothServices /// Manage and process incoming health measurements. @@ -27,7 +28,25 @@ public class HealthMeasurements { // TODO: code example? required public init() {} - // TODO: rename! + public func configureReceivingMeasurements(for device: Device, on service: WeightScaleService) { + service.$weightMeasurement.onChange { [weak self, weak device, weak service] measurement in + guard let device, let service else { + return + } + self?.handleNewMeasurement(.weight(measurement, service.features ?? []), from: device) + } + } + + public func configureReceivingMeasurements(for device: Device, on service: BloodPressureService) { + service.$bloodPressureMeasurement.onChange { [weak self, weak device, weak service] measurement in + guard let device, let service else { + return + } + self?.handleNewMeasurement(.bloodPressure(measurement, service.features ?? []), from: device) + } + } + + // TODO: rename! make private? public func handleNewMeasurement(_ measurement: BluetoothHealthMeasurement, from device: Device) { let hkDevice = device.hkDevice