8 changed files with 76 additions and 47 deletions
-
2app/src/app_basic_service/zapp.c
-
8app/src/app_service/display_ctrl_service/display_mgr.c
-
2app/src/app_service/ecg_service/algo/iflytop_simple_filter_ext.h
-
55app/src/app_service/ecg_service/algo/zdata_statistics.c
-
3app/src/app_service/ecg_service/algo/zdata_statistics.h
-
32app/src/app_service/ecg_service/ecg_algo.c
-
6app/src/app_service/ecg_service/ecg_service.c
-
15app/src/one_conduction_main.c
@ -1,38 +1,57 @@ |
|||
#include "zdata_statistics.h" |
|||
|
|||
#include <string.h> |
|||
|
|||
void zdata_statistics_init(zdata_statistics_t* p_analyzer, int32_t* buf, int32_t bufsize) { |
|||
p_analyzer->buf = buf; |
|||
p_analyzer->bufsize = bufsize; |
|||
p_analyzer->head = 0; |
|||
p_analyzer->tail = 0; |
|||
p_analyzer->avg = 0; |
|||
p_analyzer->max = 0; |
|||
p_analyzer->min = 0; |
|||
} |
|||
|
|||
int32_t zdata_statistics_get_date(int off) {} |
|||
|
|||
void zdata_statistics_push(zdata_statistics_t* p_analyzer, int32_t data) { |
|||
p_analyzer->buf[p_analyzer->head] = data; |
|||
p_analyzer->head = (p_analyzer->head + 1) % p_analyzer->bufsize; |
|||
if (p_analyzer->head == p_analyzer->tail) { |
|||
p_analyzer->tail = (p_analyzer->tail + 1) % p_analyzer->bufsize; |
|||
p_analyzer->sum -= p_analyzer->buf[p_analyzer->tail]; |
|||
memmove(p_analyzer->buf + 1, p_analyzer->buf, (p_analyzer->bufsize - 1) * sizeof(int32_t)); |
|||
p_analyzer->buf[0] = data; |
|||
|
|||
p_analyzer->datanum++; |
|||
if (p_analyzer->datanum > p_analyzer->bufsize) { |
|||
p_analyzer->datanum = p_analyzer->bufsize; |
|||
} |
|||
|
|||
p_analyzer->sum = 0; |
|||
for (int i = 0; i < p_analyzer->datanum; i++) { |
|||
p_analyzer->sum += p_analyzer->buf[i]; |
|||
} |
|||
p_analyzer->avg = p_analyzer->sum / p_analyzer->datanum; |
|||
|
|||
float max = 0; |
|||
float min = 0; |
|||
|
|||
max = p_analyzer->buf[0]; |
|||
min = p_analyzer->buf[0]; |
|||
|
|||
for (int i = 0; i < p_analyzer->datanum; i++) { |
|||
max = max > p_analyzer->buf[i] ? max : p_analyzer->buf[i]; |
|||
min = min < p_analyzer->buf[i] ? min : p_analyzer->buf[i]; |
|||
} |
|||
p_analyzer->sum += data; |
|||
p_analyzer->avg = p_analyzer->sum / p_analyzer->bufsize; |
|||
p_analyzer->max = p_analyzer->max > data ? p_analyzer->max : data; |
|||
p_analyzer->min = p_analyzer->min < data ? p_analyzer->min : data; |
|||
|
|||
p_analyzer->max = max; |
|||
p_analyzer->min = min; |
|||
} |
|||
|
|||
void zdata_statistics_clear(zdata_statistics_t* p_analyzer) { |
|||
p_analyzer->head = 0; |
|||
p_analyzer->tail = 0; |
|||
p_analyzer->sum = 0; |
|||
p_analyzer->avg = 0; |
|||
p_analyzer->max = 0; |
|||
p_analyzer->min = 0; |
|||
p_analyzer->sum = 0; |
|||
p_analyzer->avg = 0; |
|||
p_analyzer->max = 0; |
|||
p_analyzer->min = 0; |
|||
p_analyzer->datanum = 0; |
|||
} |
|||
|
|||
float zdata_statistics_get_avg(zdata_statistics_t* p_analyzer) { return p_analyzer->avg; } |
|||
float zdata_statistics_get_max(zdata_statistics_t* p_analyzer) { return p_analyzer->max; } |
|||
float zdata_statistics_get_min(zdata_statistics_t* p_analyzer) { return p_analyzer->min; } |
|||
|
|||
bool zdata_statistics_is_full(zdata_statistics_t* p_analyzer) { return p_analyzer->head == p_analyzer->tail; } |
|||
bool zdata_statistics_is_full(zdata_statistics_t* p_analyzer) { return p_analyzer->datanum == p_analyzer->bufsize; } |
Write
Preview
Loading…
Cancel
Save
Reference in new issue