embedded-software
reusable software modules for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
/home/travis/build/muhlbaier/embedded-software/filter.h
Go to the documentation of this file.
1 #ifndef _FILTER_H_
2 #define _FILTER_H_
3 
4 #include <stdint.h>
75 #define FILTER_BUFFER_SIZE 10
76 
77 typedef struct {
78 
79 int16_t offset ;
80 uint32_t scale;
81 uint16_t shift ;
82 int16_t min;
83 int16_t max ;
84 void (*min_callback)(int16_t);
85 void (*max_callback)(int16_t);
86 int16_t (*filter)(int16_t *values, uint16_t index ,uint16_t size, int16_t Last_Value);
87 uint16_t raw_values[FILTER_BUFFER_SIZE];
88 uint16_t index;
89 int16_t value;
90 } filter_t;
91 
101 void Filter_Init(filter_t * f_ptr, int16_t offset, float scale);
102 
103 
104 
105 
116 void Filter_Update(int16_t raw_value, filter_t * f_ptr);
117 
118 
119 
136 int16_t Filter_Get(filter_t * f_ptr);
137 
138 
139 
149 void Filter_SetMin(filter_t * f_ptr, int16_t threshold, void(*callback)(int16_t));
150 
151 
152 
161 void Filter_SetMax(filter_t * f_ptr, int16_t threshold, void(*callback)(int16_t));
162 
163 
177 int16_t MovingAvgFilter(int16_t *values, uint16_t index, uint16_t size, int16_t Last_Value);
178 
179 
189 void Filter_SetFilter(filter_t * f_ptr, int16_t(*new_filter)(int16_t *values, uint16_t index, uint16_t size, int16_t last_value));
190 
191 
192 
195 #endif // _FILTER_H_
void Filter_Update(int16_t raw_value, filter_t *f_ptr)
computes the new value after going through the transfer function and inputs it into filter buffer arr...
Definition: filter.c:52
uint32_t scale
Definition: filter.h:80
int16_t min
Definition: filter.h:82
uint16_t index
Definition: filter.h:88
void Filter_SetFilter(filter_t *f_ptr, int16_t(*new_filter)(int16_t *values, uint16_t index, uint16_t size, int16_t last_value))
Method that allows user to pass a function to a pointer a different type of filter (i...
Definition: filter.c:161
int16_t max
Definition: filter.h:83
void Filter_SetMax(filter_t *f_ptr, int16_t threshold, void(*callback)(int16_t))
Filter_SetMin will set the MAX value in the filter to the threshold specified. Calls the callback fun...
Definition: filter.c:122
int16_t Filter_Get(filter_t *f_ptr)
Filter_Get will retrieve the current value from the filter instance.
Definition: filter.c:96
int16_t value
Definition: filter.h:89
uint16_t shift
Definition: filter.h:81
int16_t MovingAvgFilter(int16_t *values, uint16_t index, uint16_t size, int16_t Last_Value)
Moving Average filter - Default filter that adds the previous X values and divides by number of value...
Definition: filter.c:137
void Filter_SetMin(filter_t *f_ptr, int16_t threshold, void(*callback)(int16_t))
Filter_SetMin will set the MIN value in the filter to the threshold specified. Calls the callback fun...
Definition: filter.c:107
int16_t offset
Definition: filter.h:79
Definition: filter.h:77
#define FILTER_BUFFER_SIZE
Definition: filter.h:75
void Filter_Init(filter_t *f_ptr, int16_t offset, float scale)
Initializes all struct variables and calculates the shift based on scale input for linear transfer fu...
Definition: filter.c:13