Firmware SDK
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
bc_data_stream.h
1 #ifndef _BC_DATA_STREAM_H
2 #define _BC_DATA_STREAM_H
3 
4 #include <bc_common.h>
5 
9 
11 
12 #define BC_DATA_STREAM_FLOAT_BUFFER(NAME, NUMBER_OF_SAMPLES) \
13  float NAME##_feed[NUMBER_OF_SAMPLES]; \
14  float NAME##_sort[NUMBER_OF_SAMPLES]; \
15  bc_data_stream_buffer_t NAME = { \
16  .feed = NAME##_feed, \
17  .sort = NAME##_sort, \
18  .number_of_samples = NUMBER_OF_SAMPLES, \
19  .type=BC_DATA_STREAM_TYPE_FLOAT \
20  };
21 
23 
24 #define BC_DATA_STREAM_INT_BUFFER(NAME, NUMBER_OF_SAMPLES) \
25  int NAME##_feed[NUMBER_OF_SAMPLES]; \
26  int NAME##_sort[NUMBER_OF_SAMPLES]; \
27  bc_data_stream_buffer_t NAME = { \
28  .feed = NAME##_feed, \
29  .sort = NAME##_sort, \
30  .number_of_samples = NUMBER_OF_SAMPLES, \
31  .type=BC_DATA_STREAM_TYPE_INT \
32  };
33 
35 
36 typedef enum
37 {
38  BC_DATA_STREAM_TYPE_FLOAT = 0,
39  BC_DATA_STREAM_TYPE_INT = 1
40 
42 
44 
45 typedef struct
46 {
47  void *feed;
48  void *sort;
49  int number_of_samples;
51 
53 
54 
56 
58 
60 
61 struct bc_data_stream_t
62 {
63  bc_data_stream_buffer_t *_buffer;
64  int _counter;
65  int _min_number_of_samples;
66  int _feed_head;
67 };
68 
70 
76 
77 void bc_data_stream_init(bc_data_stream_t *self, int min_number_of_samples, bc_data_stream_buffer_t *buffer);
78 
82 
83 void bc_data_stream_feed(bc_data_stream_t *self, void *data);
84 
87 
89 
91 
93 
95 
97 
99 
101 
103 
105 
111 
112 bool bc_data_stream_get_average(bc_data_stream_t *self, void *result);
113 
119 
120 bool bc_data_stream_get_median(bc_data_stream_t *self, void *result);
121 
127 
128 bool bc_data_stream_get_first(bc_data_stream_t *self, void *result);
129 
135 
136 bool bc_data_stream_get_last(bc_data_stream_t *self, void *result);
137 
144 
145 bool bc_data_stream_get_nth(bc_data_stream_t *self, int n, void *result);
146 
152 
153 bool bc_data_stream_get_max(bc_data_stream_t *self, void *result);
154 
160 
161 bool bc_data_stream_get_min(bc_data_stream_t *self, void *result);
162 
164 
165 #endif // _BC_DATA_STREAM_H
bool bc_data_stream_get_last(bc_data_stream_t *self, void *result)
Get last value in data stream.
Buffer for data stream.
void bc_data_stream_reset(bc_data_stream_t *self)
Reset data stream.
bool bc_data_stream_get_max(bc_data_stream_t *self, void *result)
Get max value.
bool bc_data_stream_get_median(bc_data_stream_t *self, void *result)
Get median value of data stream.
bool bc_data_stream_get_first(bc_data_stream_t *self, void *result)
Get first value in data stream.
int bc_data_stream_get_number_of_samples(bc_data_stream_t *self)
Get buffer number_of_samples.
bc_data_stream_type_t
Data stream type.
void bc_data_stream_feed(bc_data_stream_t *self, void *data)
Feed data into stream instance.
bool bc_data_stream_get_min(bc_data_stream_t *self, void *result)
Get min value.
bc_data_stream_type_t bc_data_stream_get_type(bc_data_stream_t *self)
Get type.
bool bc_data_stream_get_average(bc_data_stream_t *self, void *result)
Get average value of data stream.
int bc_data_stream_get_length(bc_data_stream_t *self)
Get length.
int bc_data_stream_get_counter(bc_data_stream_t *self)
Get counter.
struct bc_data_stream_t bc_data_stream_t
Data stream instance.
void bc_data_stream_init(bc_data_stream_t *self, int min_number_of_samples, bc_data_stream_buffer_t *buffer)
Initialize data stream instance.
Definition: bc_data_stream.c:6
bool bc_data_stream_get_nth(bc_data_stream_t *self, int n, void *result)
Get nth value in data stream.