From 6190c399c54859887752b4944b8bc954eb334360 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 15 Sep 2014 11:50:45 +0200 Subject: [PATCH] Fixes #1709 --- radio/src/audio_arm.cpp | 5 +++-- radio/src/audio_arm.h | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 497597df7..d1a8c0cf2 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -737,7 +737,7 @@ void AudioQueue::wakeup() else { CoEnterMutexSection(audioMutex); if (ridx != widx) { - normalContext.fragment = fragments[ridx]; + normalContext.tone.setFragment(fragments[ridx]); if (!fragments[ridx].repeat--) { ridx = (ridx + 1) % AUDIO_QUEUE_LENGTH; } @@ -804,8 +804,9 @@ void AudioQueue::playTone(uint16_t freq, uint16_t len, uint16_t pause, uint8_t f { CoEnterMutexSection(audioMutex); - if (freq && freq < BEEP_MIN_FREQ) + if (freq && freq < BEEP_MIN_FREQ) { freq = BEEP_MIN_FREQ; + } if (flags & PLAY_BACKGROUND) { AudioFragment & fragment = varioContext.fragment; diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index ae9ef06a3..5061c19a8 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -103,6 +103,12 @@ class ToneContext { uint16_t pause; } state; + inline void setFragment(AudioFragment & fragment) + { + this->fragment = fragment; + memset(&state, 0, sizeof(state)); + } + inline void clear() { memset(this, 0, sizeof(ToneContext));