feat: implement Haptika PPG and Watch V1

This commit is contained in:
Sacha
2026-07-31 16:19:42 +02:00
parent 6b7d4e0728
commit b9930b7378
249 changed files with 46475 additions and 122 deletions
@@ -0,0 +1,82 @@
///
/// NativePPGProcessingResult.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///
import NitroModules
/**
* Represents an instance of `NativePPGProcessingResult`, backed by a C++ struct.
*/
public typealias NativePPGProcessingResult = margelo.nitro.haptika.ppg.NativePPGProcessingResult
public extension NativePPGProcessingResult {
private typealias bridge = margelo.nitro.haptika.ppg.bridge.swift
/**
* Create a new instance of `NativePPGProcessingResult`.
*/
init(valid: Bool, invalidReason: String?, bpm: NativeBPMEstimate, prv: NativePRVMetrics, quality: NativeSignalQualityResult, startedAtMonotonicSeconds: Double, endedAtMonotonicSeconds: Double, rawSampleCount: Double, resampledSampleCount: Double) {
self.init(valid, { () -> bridge.std__optional_std__string_ in
if let __unwrappedValue = invalidReason {
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
} else {
return .init()
}
}(), bpm, prv, quality, startedAtMonotonicSeconds, endedAtMonotonicSeconds, rawSampleCount, resampledSampleCount)
}
@inline(__always)
var valid: Bool {
return self.__valid
}
@inline(__always)
var invalidReason: String? {
return { () -> String? in
if bridge.has_value_std__optional_std__string_(self.__invalidReason) {
let __unwrapped = bridge.get_std__optional_std__string_(self.__invalidReason)
return String(__unwrapped)
} else {
return nil
}
}()
}
@inline(__always)
var bpm: NativeBPMEstimate {
return self.__bpm
}
@inline(__always)
var prv: NativePRVMetrics {
return self.__prv
}
@inline(__always)
var quality: NativeSignalQualityResult {
return self.__quality
}
@inline(__always)
var startedAtMonotonicSeconds: Double {
return self.__startedAtMonotonicSeconds
}
@inline(__always)
var endedAtMonotonicSeconds: Double {
return self.__endedAtMonotonicSeconds
}
@inline(__always)
var rawSampleCount: Double {
return self.__rawSampleCount
}
@inline(__always)
var resampledSampleCount: Double {
return self.__resampledSampleCount
}
}