From b78533f86c782bc8fc0f355a4b51c793659fca12 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 3 Jul 2012 19:41:53 +0000 Subject: [PATCH] Mutex to protect the audio functions --- src/ersky9x/audio.cpp | 10 +++++++++- src/open9x.cpp | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ersky9x/audio.cpp b/src/ersky9x/audio.cpp index 1643850f0..cb6279bd8 100644 --- a/src/ersky9x/audio.cpp +++ b/src/ersky9x/audio.cpp @@ -224,7 +224,7 @@ void audioTask(void* pdata) DACC->DACC_TNCR = read/4; toneStop(); toneWavFile[0] = '\0'; - toneWavFile[1] = 0; + toneWavFile[1] = '\0'; f_close(&wavFile); audioState = 0; } @@ -319,9 +319,13 @@ void pause(uint8_t tLen) play(0, 0, tLen); // a pause } +extern OS_MutexID audioMutex; + void play(uint8_t tFreq, uint8_t tLen, uint8_t tPause, uint8_t tFlags, int8_t tFreqIncr) { + CoEnterMutexSection(audioMutex); + if (tFlags & PLAY_SOUND_VARIO) { tone2Freq = tFreq; tone2TimeLeft = tLen; @@ -363,12 +367,16 @@ void play(uint8_t tFreq, uint8_t tLen, uint8_t tPause, } } } + + CoLeaveMutexSection(audioMutex); } void playFile(const char *filename) { + CoEnterMutexSection(audioMutex); strcpy(toneWavFile, filename); CoSetFlag(audioFlag); + CoLeaveMutexSection(audioMutex); } void audioEvent(uint8_t e, uint8_t f) diff --git a/src/open9x.cpp b/src/open9x.cpp index 8d11c3caa..919a7bcee 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -53,6 +53,7 @@ OS_TCID audioTimer; OS_FlagID audioFlag; OS_MutexID sdMutex; +OS_MutexID audioMutex; /*OS_TID btTask; OS_STK btStack[BT_STACK_SIZE]; @@ -3122,6 +3123,7 @@ int main(void) audioTaskId = CoCreateTask(audioTask, NULL, 7, &audioStack[AUDIO_STACK_SIZE-1], AUDIO_STACK_SIZE); sdMutex = CoCreateMutex(); + audioMutex = CoCreateMutex(); CoStartOS(); #else