[Taranis] Best fix for the audio freeze by Mike, thanks!

This commit is contained in:
Bertrand Songis
2013-12-23 17:30:30 +01:00
parent eb41750e9e
commit 76a7674272
2 changed files with 5 additions and 4 deletions
+5 -1
View File
@@ -325,11 +325,15 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer)
{
buffer->state = AUDIO_BUFFER_FILLED;
__disable_irq();
bufferWIdx = nextBufferIdx(bufferWIdx);
if (dacQueue(buffer)) {
buffer->state = AUDIO_BUFFER_PLAYING;
}
bufferWIdx = nextBufferIdx(bufferWIdx);
__enable_irq();
}
void mix(uint16_t * result, int sample, unsigned int fade)
-3
View File
@@ -95,10 +95,8 @@ void dacInit()
bool dacQueue(AudioBuffer *buffer)
{
__disable_irq();
if (dacIdle) {
dacIdle = false;
__enable_irq();
DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel
DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits
DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data);
@@ -109,7 +107,6 @@ bool dacQueue(AudioBuffer *buffer)
return true;
}
else {
__enable_irq();
return false;
}
}