Skip to content

Commit

Permalink
sns: filter resize should reset internal state
Browse files Browse the repository at this point in the history
  • Loading branch information
mcspr committed Feb 8, 2024
1 parent 872f9b6 commit 9792140
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 16 deletions.
10 changes: 9 additions & 1 deletion code/espurna/filters/LastFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,22 @@ class LastFilter : public BaseFilter {
}

void reset() override {
_value = 0;
_reset();
}

void resize(size_t) override {
_reset();
}

double value() const override {
return _value;
}

private:
void _reset() {
_value = 0;
}

double _value = 0;
bool _status = false;
};
10 changes: 9 additions & 1 deletion code/espurna/filters/MaxFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,22 @@ class MaxFilter : public BaseFilter {
return 1;
}

void resize(size_t) override {
_reset();
}

void reset() override {
_value = 0;
_reset();
}

double value() const {
return _value;
}

private:
void _reset() {
_value = 0;
}

double _value = 0;
};
23 changes: 12 additions & 11 deletions code/espurna/filters/MedianFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,7 @@ class MedianFilter : public BaseFilter {
}

void reset() override {
if (_values.size() > 2) {
_values[0] = _values.back();
_values.resize(1);
} else {
_values.clear();
}
_reset();
}

double value() const override {
Expand Down Expand Up @@ -66,14 +61,20 @@ class MedianFilter : public BaseFilter {
}

void resize(size_t capacity) override {
if (_capacity != capacity) {
_capacity = capacity;
_values.clear();
_values.reserve(_capacity + 1);
}
_values.reserve(capacity + 1);
_reset();
}

private:
void _reset() {
auto previous = _values.size()
? _values.back()
: 0.0;
_values.clear();
_values.push_back(previous);

}

std::vector<double> _values;
size_t _capacity = 0;
};
12 changes: 10 additions & 2 deletions code/espurna/filters/MovingAverageFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,22 @@ class MovingAverageFilter : public BaseFilter {
}

void resize(size_t size) override {
_values.clear();
_values.reserve(size);
_reset();
}

void reset() override {
_values.clear();
_reset();
}

private:
void _reset() {
if (_values.size()) {
_values.erase(_values.begin(), _values.end() - 1);
} else {
_values.clear();
}
}

std::vector<double> _values{};
};
10 changes: 9 additions & 1 deletion code/espurna/filters/SumFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,22 @@ class SumFilter : public BaseFilter {
return 1;
}

void resize(size_t) override {
_reset();
}

void reset() override {
_value = 0.0;
_reset();
}

double value() const override {
return _value;
}

private:
void _reset() {
_value = 0.0;
}

double _value = 0.0;
};

0 comments on commit 9792140

Please sign in to comment.