initial
Dependencies: mbed BSP_DISCO_F746NG mbed-dsp
Diff: signal_processing.cpp
- Revision:
- 3:51e15bd15778
- Parent:
- 2:89234085faae
- Child:
- 4:99de9b4005d2
diff -r 89234085faae -r 51e15bd15778 signal_processing.cpp --- a/signal_processing.cpp Thu Feb 20 18:33:14 2020 +0000 +++ b/signal_processing.cpp Mon Mar 02 23:33:16 2020 +0000 @@ -20,6 +20,8 @@ #include "arm_const_structs.h" #include "filter_coefficients.h" #include "our_filter.h" +#include "windowed.h" +#include "signal_processing.h" /* ---------------------------------------------------------------------- @@ -38,9 +40,9 @@ float32_t l_buf[BUFFER_LENGTH]; float32_t r_buf[BUFFER_LENGTH]; -float32_t* l_buf_head = &l_buf; +float32_t* l_buf_head = l_buf; uint16_t l_buf_head_idx = 0; -float32_t* r_buf_head = &r_buf; +float32_t* r_buf_head = r_buf; uint16_t r_buf_head_idx = 0; arm_fir_instance_f32 filter_left; @@ -133,7 +135,7 @@ void filter(float32_t* buffer_begin, float32_t* buffer_head, uint16_t buffer_head_idx, float32_t* d_in, float32_t* d_out, uint16_t sig_length, uint16_t buf_length) { float32_t* data_sample = d_in+sig_length-1; - float32_t* filter_sample = filter; + float32_t* filter_sample = win_filter_coeffs; float32_t result = 0; uint16_t conv_length = 0; float32_t* buffer_data_location = buffer_head; @@ -142,22 +144,22 @@ for(uint16_t shift = 0; shift < buf_length; shift++) { //shift - if(shift < sig_lenth) + if(shift < sig_length) { conv_length = shift + 1; } - else if(shift >= sig_lenth && shift < filt_length) + else if(shift >= sig_length && shift < WIN_NUM_TAPS) { - conv_length = sig_lenth; + conv_length = sig_length; } - else if(shift >= filt_length) + else if(shift >= WIN_NUM_TAPS) { - conv_length = sig_lenth - (shift - filt_length + 1) + conv_length = sig_length - (shift - WIN_NUM_TAPS + 1); } result = 0; //multiply-add - for(i=0; i<conv_length; i++) + for(int i=0; i<conv_length; i++) { result += (*filter_sample) * (*data_sample); filter_sample++; @@ -179,7 +181,7 @@ //copy from buffer to d_out buffer_data_location = buffer_head; - for(int i=0; i < sig_lenth; i++) + for(int i=0; i < sig_length; i++) { d_out[i] = *buffer_data_location; *buffer_data_location = 0; @@ -203,4 +205,5 @@ l_buf[i] = 0; r_buf[i] = 0; } + return; }