diff --git a/radio/src/audio.cpp b/radio/src/audio.cpp index 9786aad8f..be53e8921 100644 --- a/radio/src/audio.cpp +++ b/radio/src/audio.cpp @@ -518,29 +518,19 @@ AudioQueue::AudioQueue() #if !defined(SIMU) void audioTask(void * pdata) { + audioWaitReady(); + while (!audioQueue.started()) { RTOS_WAIT_TICKS(1); } setSampleRate(AUDIO_SAMPLE_RATE); -#if defined(PCBX12S) - // The audio amp needs ~2s to start - RTOS_WAIT_MS(1000); // 1s -#endif - if (!globalData.unexpectedShutdown) { AUDIO_HELLO(); } - while (1) { - #if defined(PCBNV14) - if(!isAudioReady()) { - audioChipReset(); - RTOS_WAIT_MS(100); - continue; - } - #endif + while (true) { DEBUG_TIMER_SAMPLE(debugTimerAudioIterval); DEBUG_TIMER_START(debugTimerAudioDuration); audioQueue.wakeup(); diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index bab61504d..18025d13b 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -564,8 +564,14 @@ void audioConsumeCurrentBuffer(); #define audioEnableIrq() // interrupts must stay enabled on Horus #if defined(PCBX12S) #define setSampleRate(freq) +inline void audioWaitReady() +{ + // The audio amp needs ~2s to start + RTOS_WAIT_MS(2000); // 2s +} #else void setSampleRate(uint32_t frequency); +#define audioWaitReady() #endif void setScaledVolume(uint8_t volume); void setVolume(uint8_t volume); diff --git a/radio/src/targets/nv14/board.h b/radio/src/targets/nv14/board.h index 1d09163a7..90dc4e828 100644 --- a/radio/src/targets/nv14/board.h +++ b/radio/src/targets/nv14/board.h @@ -464,6 +464,13 @@ void audioOn(); void audioOff(); bool isAudioReady(); bool audioChipReset(); +inline void audioWaitReady() +{ + while (!isAudioReady()) { + audioChipReset(); + RTOS_WAIT_MS(1000); + } +} #define SPI_SPEED_2 0 #define SPI_SPEED_4 1 diff --git a/radio/src/targets/sky9x/audio_driver.h b/radio/src/targets/sky9x/audio_driver.h index 1a9198efa..122269af6 100644 --- a/radio/src/targets/sky9x/audio_driver.h +++ b/radio/src/targets/sky9x/audio_driver.h @@ -34,4 +34,6 @@ void setSampleRate( uint32_t frequency ) ; void setScaledVolume(uint8_t volume); +#define audioWaitReady() + #endif // _AUDIO_DRIVER_H_ diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index d03a0e72f..d7f8d3ff6 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -27,7 +27,6 @@ #include "board_common.h" #include "hal.h" - #if defined(ROTARY_ENCODER_NAVIGATION) // Rotary Encoder driver void rotaryEncoderInit(); @@ -734,6 +733,7 @@ void audioEnd() ; void dacStart(); void dacStop(); void setSampleRate(uint32_t frequency); +#define audioWaitReady() #define VOLUME_LEVEL_MAX 23 #define VOLUME_LEVEL_DEF 12 #if !defined(SOFTWARE_VOLUME) diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index f422b13a5..dd357fa03 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -126,7 +126,7 @@ MultiModuleSyncStatus& getMultiSyncStatus(uint8_t) return multiSyncStatus; } -uint8_t getMultiBindStatus(uint8_t moduleIdx) +uint8_t getMultiBindStatus(uint8_t) { #if defined(INTERNAL_MODULE) && !defined(INTERNAL_MODULE_MULTI) if (moduleIdx == INTERNAL_MODULE)