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