From 1ce3c74ebc3d39a222e406d0db79a1f3e56e7c43 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Mon, 9 Dec 2013 15:49:50 +0000 Subject: [PATCH] Deliver to/from mixer comms fixed up for new underflow protocol --- module_usb_audio/audio.xc | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/module_usb_audio/audio.xc b/module_usb_audio/audio.xc index c6a3821f..e1e9a94c 100755 --- a/module_usb_audio/audio.xc +++ b/module_usb_audio/audio.xc @@ -209,8 +209,8 @@ static inline void doI2SClocks(unsigned divide) } else { -#ifndef MIXER // Interfaces straight to decouple() underflow = inuint(c_out); +#ifndef MIXER // Interfaces straight to decouple() #if NUM_USB_CHAN_IN > 0 #pragma loop unroll @@ -238,7 +238,18 @@ static inline void doI2SClocks(unsigned divide) } } #endif -#else +#else /* ifndef MIXER */ + + if(underflow) + { + #pragma loop unroll + for(int i = 0; i < NUM_USB_CHAN_OUT; i++) + { + samplesOut[i] = underflowWord; + } + } + else + { #pragma loop unroll for(int i = 0; i < NUM_USB_CHAN_OUT; i++) { @@ -248,6 +259,7 @@ static inline void doI2SClocks(unsigned divide) #endif samplesOut[i] = tmp; } + } #pragma loop unroll for(int i = 0; i < NUM_USB_CHAN_IN; i++) @@ -387,8 +399,8 @@ static inline void doI2SClocks(unsigned divide) } else { -#ifndef MIXER // Interfaces straight to decouple() underflow = inuint(c_out); +#ifndef MIXER // Interfaces straight to decouple() #if NUM_USB_CHAN_IN > 0 #pragma loop unroll for(int i = 0; i < NUM_USB_CHAN_IN; i++) @@ -416,14 +428,25 @@ static inline void doI2SClocks(unsigned divide) } #endif #else /* ifndef MIXER */ -#pragma loop unroll - for(int i = 0; i < NUM_USB_CHAN_OUT; i++) + + if(underflow) + { + for(int i = 0; i < NUM_USB_CHAN_OUT; i++) + { + samplesOut[i] = underflowWord; + } + } + else { - int tmp = inuint(c_out); +#pragma loop unroll + for(int i = 0; i < NUM_USB_CHAN_OUT; i++) + { + int tmp = inuint(c_out); #if defined(OUT_VOLUME_IN_MIXER) && defined(OUT_VOLUME_AFTER_MIX) - tmp<<=3; + tmp<<=3; #endif - samplesOut[i] = tmp; + samplesOut[i] = tmp; + } } #pragma loop unroll