It seems like for the official GATT specification, bit 0 will have a value of 0 if the unit is mmHg, and a value of 1 if the unit is kPa. However, the logic in the code seems to be reserved.
private extension Flag {
static let unitFlag: Flag = 0x01
static let timeStamp: Flag = 0x02
static let pulseRate: Flag = 0x04
}
struct BloodPressureCharacteristic {
let systolicPressure: Measurement<UnitPressure>
let diastolicPressure: Measurement<UnitPressure>
let meanArterialPressure: Measurement<UnitPressure>
let date: Date?
let pulseRate: Int?
init(data: Data) throws {
let flags: UInt8 = try data.read()
let unit: UnitPressure = Flag.isAvailable(bits: flags, flag: .unitFlag) ? .millimetersOfMercury : .kilopascals
The incorrect logic cant be found in BloodPressureCharacteristic.swift and BloodPressureCharacteristic.swift
If I am correct, the correct code should be
let unit: UnitPressure = Flag.isAvailable(bits: flags, flag: .unitFlag) ? .kilopascals : .millimetersOfMercury
It seems like for the official GATT specification, bit 0 will have a value of 0 if the unit is mmHg, and a value of 1 if the unit is kPa. However, the logic in the code seems to be reserved.
The incorrect logic cant be found in
BloodPressureCharacteristic.swift
andBloodPressureCharacteristic.swift
If I am correct, the correct code should be
let unit: UnitPressure = Flag.isAvailable(bits: flags, flag: .unitFlag) ? .kilopascals : .millimetersOfMercury