Skip to content

File syn_biometric.h

File List > sensor > syn_biometric.h

Go to the documentation of this file

#ifndef SYN_BIOMETRIC_H
#define SYN_BIOMETRIC_H

#include "../common/syn_defs.h"
#include "../drivers/syn_soft_i2c.h"

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum {
    SYN_BIOMETRIC_MAX30102 = 0, 
    SYN_BIOMETRIC_MAX30100 = 1  
} SYN_BiometricType;

typedef struct {
    SYN_BiometricType type;
    SYN_SoftI2C i2c;
    uint8_t i2c_addr;
    uint16_t heart_rate_bpm; 
    float spo2_pct;          
    bool finger_detected;    
} SYN_Biometric;

SYN_Status syn_biometric_init(SYN_Biometric *bio, SYN_GPIO_Pin scl, SYN_GPIO_Pin sda,
                              uint8_t i2c_addr, SYN_BiometricType type);

void syn_biometric_feed_samples(SYN_Biometric *bio, uint32_t red_raw, uint32_t ir_raw);

uint16_t syn_biometric_get_bpm(const SYN_Biometric *bio);

float syn_biometric_get_spo2(const SYN_Biometric *bio);

bool syn_biometric_is_finger_detected(const SYN_Biometric *bio);

#ifdef __cplusplus
}
#endif

#endif /* SYN_BIOMETRIC_H */