Alex Leung
/
HealthTracker
Test version
algorithm.h@0:4be500de690c, 2018-03-20 (annotated)
- Committer:
- a2824256
- Date:
- Tue Mar 20 02:09:21 2018 +0000
- Revision:
- 0:4be500de690c
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
a2824256 | 0:4be500de690c | 1 | #ifndef ALGORITHM_H_ |
a2824256 | 0:4be500de690c | 2 | #define ALGORITHM_H_ |
a2824256 | 0:4be500de690c | 3 | |
a2824256 | 0:4be500de690c | 4 | #include "mbed.h" |
a2824256 | 0:4be500de690c | 5 | |
a2824256 | 0:4be500de690c | 6 | #define true 1 |
a2824256 | 0:4be500de690c | 7 | #define false 0 |
a2824256 | 0:4be500de690c | 8 | #define FS 100 |
a2824256 | 0:4be500de690c | 9 | #define BUFFER_SIZE (FS* 5) |
a2824256 | 0:4be500de690c | 10 | #define HR_FIFO_SIZE 7 |
a2824256 | 0:4be500de690c | 11 | #define MA4_SIZE 4 // DO NOT CHANGE |
a2824256 | 0:4be500de690c | 12 | #define HAMMING_SIZE 5// DO NOT CHANGE |
a2824256 | 0:4be500de690c | 13 | #define min(x,y) ((x) < (y) ? (x) : (y)) |
a2824256 | 0:4be500de690c | 14 | |
a2824256 | 0:4be500de690c | 15 | const uint16_t auw_hamm[31]={ 41, 276, 512, 276, 41 }; //Hamm= long16(512* hamming(5)'); |
a2824256 | 0:4be500de690c | 16 | //uch_spo2_table is computed as -45.060*ratioAverage* ratioAverage + 30.354 *ratioAverage + 94.845 ; |
a2824256 | 0:4be500de690c | 17 | const uint8_t uch_spo2_table[184]={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, |
a2824256 | 0:4be500de690c | 18 | 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, |
a2824256 | 0:4be500de690c | 19 | 100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, |
a2824256 | 0:4be500de690c | 20 | 97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, |
a2824256 | 0:4be500de690c | 21 | 90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, |
a2824256 | 0:4be500de690c | 22 | 80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, |
a2824256 | 0:4be500de690c | 23 | 66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, |
a2824256 | 0:4be500de690c | 24 | 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, |
a2824256 | 0:4be500de690c | 25 | 28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, |
a2824256 | 0:4be500de690c | 26 | 3, 2, 1 } ; |
a2824256 | 0:4be500de690c | 27 | static int32_t an_dx[ BUFFER_SIZE-MA4_SIZE]; // delta |
a2824256 | 0:4be500de690c | 28 | static int32_t an_x[ BUFFER_SIZE]; //ir |
a2824256 | 0:4be500de690c | 29 | static int32_t an_y[ BUFFER_SIZE]; //red |
a2824256 | 0:4be500de690c | 30 | |
a2824256 | 0:4be500de690c | 31 | |
a2824256 | 0:4be500de690c | 32 | void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer , int32_t n_ir_buffer_length, uint32_t *pun_red_buffer , int32_t *pn_spo2, int8_t *pch_spo2_valid , int32_t *pn_heart_rate , int8_t *pch_hr_valid); |
a2824256 | 0:4be500de690c | 33 | void maxim_find_peaks( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num ); |
a2824256 | 0:4be500de690c | 34 | void maxim_peaks_above_min_height( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height ); |
a2824256 | 0:4be500de690c | 35 | void maxim_remove_close_peaks( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance ); |
a2824256 | 0:4be500de690c | 36 | void maxim_sort_ascend( int32_t *pn_x, int32_t n_size ); |
a2824256 | 0:4be500de690c | 37 | void maxim_sort_indices_descend( int32_t *pn_x, int32_t *pn_indx, int32_t n_size); |
a2824256 | 0:4be500de690c | 38 | |
a2824256 | 0:4be500de690c | 39 | #endif |