Skip to content

Commit 3c056cf

Browse files
committed
Auto gain control
1 parent 8438c10 commit 3c056cf

7 files changed

Lines changed: 351 additions & 64 deletions

File tree

src/components/heartrate/IIR.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ namespace Pinetime {
4040
}
4141
}
4242

43+
void Scale(float scaleFactor) {
44+
for (std::size_t i = 0; i < NSections; i++) {
45+
filterStates[i].s1 *= scaleFactor;
46+
filterStates[i].s2 *= scaleFactor;
47+
}
48+
}
49+
4350
private:
4451
std::array<FilterState, NSections> filterStates;
4552
const std::array<SOSCoeffs, NSections>& coeffs;

src/components/heartrate/Ppg.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ bool Ppg::SufficientData() const {
2828
return ready;
2929
}
3030

31+
void Ppg::ScaleHrs(float scaleFactor) {
32+
ppgFilter.Scale(scaleFactor);
33+
}
34+
3135
void Ppg::Ingest(uint16_t hrs, int16_t accX, int16_t accY, int16_t accZ) {
3236
// Acceleration is normalised to 1024=1G in the BMA driver
3337
float accXNorm = static_cast<float>(accX) / 1024.f;

src/components/heartrate/Ppg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ namespace Pinetime {
2121
std::optional<uint8_t> HeartRate();
2222
void Reset();
2323
[[nodiscard]] bool SufficientData() const;
24+
void ScaleHrs(float scaleFactor);
2425
static constexpr float sampleDuration = 0.048f;
2526

2627
private:

0 commit comments

Comments
 (0)