InfiniTime.git

ref: 0.13.0

src/components/heartrate/Ppg.h


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

#include <array>
#include "Biquad.h"
#include "Ptagc.h"

namespace Pinetime {
  namespace Controllers {
    class Ppg {
    public:
      explicit Ppg(float spl);

      int Preprocess(float spl);
      float HeartRate();

      void SetOffset(uint16_t i);
      void Reset();

    private:
      std::array<int, 200> data;
      size_t dataIndex = 0;
      float offset;
      Biquad hpf;
      Ptagc agc;
      Biquad lpf;


      float ProcessHeartRate();
    };
  }
}