ESP32_ChinaDieselHeater_Con.../src/Utility/DataFilter.h
Ray Jones 2e25ad3da4 Fixed role ordering in NV for DS18B20 probe offsets
Replaced ` with clean degree symbol in standard font & arial 8
Removed temp offset from fuel cal screen
GUI alignment tweaks to avoid cutoffs
Better handling of single DS18B20 with BME280
Added bounds limits to Exponential Mean
Sorted inheritance from CSensor properly
2019-10-19 09:58:19 +11:00

60 lines
1.5 KiB
C++

/*
* This file is part of the "bluetoothheater" distribution
* (https://gitlab.com/mrjones.id.au/bluetoothheater)
*
* Copyright (C) 2019 Ray Jones <ray@mrjones.id.au>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifndef __BTC_DATAFILTER_H__
#define __BTC_DATAFILTER_H__
class CExpMean {
float _val;
bool _bFresh;
float _Alpha;
float _rounding;
float _roundingRecip;
struct {
float lower;
float upper;
} bounds;
public:
CExpMean();
void reset(float val);
void update(float val);
void setRounding(float val);
void setAlpha(float val);
float getValue() const;
float getValueRaw() const;
void setBounds(float lower, float upper);
};
struct sFilteredData {
CExpMean ipVolts;
CExpMean GlowVolts;
CExpMean GlowAmps;
CExpMean Fan;
CExpMean AmbientTemp;
CExpMean FastipVolts;
CExpMean FastGlowAmps;
};
extern sFilteredData FilteredSamples;
#endif