From 89c38547070705ac399e24c07b8daa245b71f241 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Tue, 19 Apr 2016 15:47:15 +0100 Subject: [PATCH] mic buffering now uses select --- module_usb_audio/pdm_mics/pcm_pdm_mic.xc | 40 +++++++++++++----------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc index 29b39c31..c55fff93 100644 --- a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc +++ b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc @@ -71,36 +71,40 @@ void pdm_process(streaming chanend c_ds_output[2], chanend c_audio #else user_pdm_process(current, output); #endif - - while(1) + int loop =1; + while(loop) { - unsafe { int req; - c_audio :> req; - if(req) + select { - for(int i = 0; i < NUM_PDM_MICS; i++) - { - c_audio <: output[i]; - } - } - else - { - break; - } + case c_audio :> req: + if(req) + { + for(int i = 0; i < NUM_PDM_MICS; i++) + { + c_audio <: output[i]; + } - mic_array_frame_time_domain * unsafe current = mic_array_get_next_time_domain_frame(c_ds_output, 2, buffer, mic_audio, dc); + mic_array_frame_time_domain * unsafe current = mic_array_get_next_time_domain_frame(c_ds_output, 2, buffer, mic_audio, dc); #ifdef MIC_PROCESSING_USE_INTERFACE - i_mic_process.transfer_buffers(current, output); + i_mic_process.transfer_buffers(current, output); #else - user_pdm_process(current, output); + user_pdm_process(current, output); #endif - + } + else + { + loop = 0; + continue; + break; + } + break; + } } } }