EnigmaIOT  0.9.3
Secure sensor and gateway platform based on ESP8266 and ESP32
Filter.h
Go to the documentation of this file.
1 
9 #ifndef _FILTER_h
10 #define _FILTER_h
11 
12 #if defined(ARDUINO) && ARDUINO >= 100
13  #include "Arduino.h"
14 #else
15  #include "WProgram.h"
16 #endif
17 
18 #define MAX_ORDER 20
19 #define MIN_ORDER 2
20 
24 typedef enum {
28 
30 {
31  protected:
33  uint8_t _order;
34  float* _rawValues;
35  float* _orderedValues;
36  float* _weightValues;
37  uint _index = 0;
38 
44  float aveFilter(float value);
45 
53  int divide(float * array, int start, int end);
54 
61  void quicksort(float * array, int start, int end);
62 
68  float medianFilter(float value);
69 
70  public:
76  FilterClass(FilterType_t type, uint8_t order);
77 
83  float addWeigth (float coeff);
84 
90  float addValue(float value);
91 
95  void clear ();
96 
100  ~FilterClass();
101 };
102 
103 #endif
104 
FilterClass::medianFilter
float medianFilter(float value)
Median filter calculation of next value.
Definition: Filter.cpp:161
FilterClass::_order
uint8_t _order
Filter order. Numbre of samples to store for calculations.
Definition: Filter.h:33
MEDIAN_FILTER
@ MEDIAN_FILTER
Definition: Filter.h:25
FilterClass::addValue
float addValue(float value)
Pushes a new value for calculation. Until the buffer is filled up to filter order,...
Definition: Filter.cpp:12
FilterClass::~FilterClass
~FilterClass()
Frees up dynamic memory.
Definition: Filter.cpp:140
FilterClass
Definition: Filter.h:30
FilterClass::FilterClass
FilterClass(FilterType_t type, uint8_t order)
Creates a new filter class.
Definition: Filter.cpp:234
FilterType_t
FilterType_t
Type of filter.
Definition: Filter.h:24
FilterClass::addWeigth
float addWeigth(float coeff)
Adds a new weighting value. It is pushed on the array so latest value will be used for older data.
Definition: Filter.cpp:26
FilterClass::aveFilter
float aveFilter(float value)
Average filter calculation of next value.
Definition: Filter.cpp:44
FilterClass::clear
void clear()
Resets state of the filter to an initial value.
Definition: Filter.cpp:131
FilterClass::quicksort
void quicksort(float *array, int start, int end)
Sorting function that uses QuickSort algorythm.
Definition: Filter.cpp:146
FilterClass::_orderedValues
float * _orderedValues
Values ordered for median calculation.
Definition: Filter.h:35
FilterClass::divide
int divide(float *array, int start, int end)
Divide function to be used on Quick Sort.
Definition: Filter.cpp:94
FilterClass::_index
uint _index
Used to point latest entered value while number of values less than order.
Definition: Filter.h:37
FilterClass::_weightValues
float * _weightValues
Weight values for average calculation. By default all them have value of 1 for arithmetic average.
Definition: Filter.h:36
FilterClass::_filterType
FilterType_t _filterType
Filter type from FilterType_t.
Definition: Filter.h:32
AVERAGE_FILTER
@ AVERAGE_FILTER
Definition: Filter.h:26
FilterClass::_rawValues
float * _rawValues
Raw values store.
Definition: Filter.h:34