diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 7a38130a7..3d6369dd1 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -781,7 +781,7 @@ void AudioQueue::wakeup() // TRACE("pushing buffer %d\n", bufferWIdx); bufferWIdx = nextBufferIdx(bufferWIdx); buffer->size = size; - buffer->state = audioPushBuffer(buffer) ? AUDIO_BUFFER_PLAYING : AUDIO_BUFFER_FILLED; + audioPushBuffer(buffer); __enable_irq(); } } diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index b48cead34..01ca0af1a 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -166,7 +166,7 @@ class MixedContext { int mixBuffer(AudioBuffer *buffer, int volume, unsigned int fade); }; -bool audioPushBuffer(AudioBuffer * buffer); +void audioPushBuffer(AudioBuffer * buffer); class AudioQueue { @@ -174,7 +174,9 @@ class AudioQueue { #if defined(SIMU_AUDIO) friend void *audioThread(void *); #endif - +#if defined(CLI) + friend void printAudioVars(); +#endif public: AudioQueue(); diff --git a/radio/src/targets/horus/audio_driver.cpp b/radio/src/targets/horus/audio_driver.cpp index a0cb14262..e157d79bf 100644 --- a/radio/src/targets/horus/audio_driver.cpp +++ b/radio/src/targets/horus/audio_driver.cpp @@ -396,15 +396,15 @@ void audioConsumeCurrentBuffer() } } -bool audioPushBuffer(AudioBuffer * buffer) +void audioPushBuffer(AudioBuffer * buffer) { if (!currentBuffer) { + buffer->state = AUDIO_BUFFER_PLAYING; audioSetCurrentBuffer(buffer); audioConsumeCurrentBuffer(); - return true; } else { - return false; + buffer->state = AUDIO_BUFFER_FILLED; } } diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index bac5ee41f..a9c07038f 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -416,9 +416,9 @@ struct SimulatorAudio { pthread_t threadPid; } simuAudio; -bool audioPushBuffer(AudioBuffer * buffer) +void audioPushBuffer(AudioBuffer * buffer) { - return false; + buffer->state = AUDIO_BUFFER_FILLED; } #endif diff --git a/radio/src/targets/sky9x/audio_driver.cpp b/radio/src/targets/sky9x/audio_driver.cpp index 19462ef7c..830227399 100644 --- a/radio/src/targets/sky9x/audio_driver.cpp +++ b/radio/src/targets/sky9x/audio_driver.cpp @@ -93,10 +93,10 @@ void dacInit() NVIC_EnableIRQ(DACC_IRQn) ; } -bool audioPushBuffer(AudioBuffer *buffer) +void audioPushBuffer(AudioBuffer *buffer) { + buffer->state = AUDIO_BUFFER_FILLED; dacStart(); - return false; } extern "C" void DAC_IRQHandler() diff --git a/radio/src/targets/taranis/audio_driver.cpp b/radio/src/targets/taranis/audio_driver.cpp index c1bd4a3ec..6f17e5f27 100644 --- a/radio/src/targets/taranis/audio_driver.cpp +++ b/radio/src/targets/taranis/audio_driver.cpp @@ -71,10 +71,11 @@ void dacInit() NVIC_SetPriority(AUDIO_DMA_Stream_IRQn, 7); } -bool audioPushBuffer(AudioBuffer * buffer) +void audioPushBuffer(AudioBuffer * buffer) { if (dacIdle) { dacIdle = false; + buffer->state = AUDIO_BUFFER_PLAYING; AUDIO_DMA_Stream->CR &= ~DMA_SxCR_EN ; // Disable DMA channel AUDIO_DMA->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits AUDIO_DMA_Stream->M0AR = CONVERT_PTR_UINT(buffer->data); @@ -82,10 +83,8 @@ bool audioPushBuffer(AudioBuffer * buffer) AUDIO_DMA_Stream->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE ; // Enable DMA channel and interrupt DAC->SR = DAC_SR_DMAUDR1 ; // Write 1 to clear flag DAC->CR |= DAC_CR_EN1 | DAC_CR_DMAEN1 ; // Enable DAC - return true; - } else { - return false; + buffer->state = AUDIO_BUFFER_FILLED; } }