PlaySound fix

This commit is contained in:
Damjan Adamic
2016-04-03 19:33:32 +02:00
parent 2990e9b9a3
commit 839296ac1b
3 changed files with 168 additions and 163 deletions
+5
View File
@@ -20,6 +20,7 @@ option(AUTOSWITCH "Automatic switch detection in menus" ON)
option(JITTER_MEASURE "Enable ADC jitter measurement" OFF)
option(JITTER_FILTER "Enable ADC jitter filtering" ON)
option(WATCHDOG_DISABLED "Disable hardware Watchdog on Horus" OFF) # TODO remove it when it's OK
option(SIMU_AUDIO "Enable simulator audio" OFF)
enable_language(ASM)
set(OPT s)
@@ -858,6 +859,10 @@ if(WATCHDOG_DISABLED)
add_definitions(-DWATCHDOG_DISABLED)
endif()
if(SIMU_AUDIO)
add_definitions(-DSIMU_AUDIO)
endif()
if(SDCARD)
add_definitions(-DSDCARD)
include_directories(${FATFS_DIR} ${FATFS_DIR}/option)
+161 -163
View File
@@ -1004,176 +1004,174 @@ void audioEvent(unsigned int index, unsigned int freq)
char filename[AUDIO_FILENAME_MAXLEN + 1];
if (index < AU_SPECIAL_SOUND_FIRST && isAudioFileReferenced(index, filename)) {
audioQueue.playFile(filename);
return;
}
else
#endif
if (index < AU_SPECIAL_SOUND_FIRST) {
switch (index) {
case AU_INACTIVITY:
audioQueue.playTone(2250, 80, 20, PLAY_REPEAT(2));
break;
case AU_TX_BATTERY_LOW:
switch (index) {
case AU_INACTIVITY:
audioQueue.playTone(2250, 80, 20, PLAY_REPEAT(2));
break;
case AU_TX_BATTERY_LOW:
#if defined(PCBSKY9X)
case AU_TX_MAH_HIGH:
case AU_TX_TEMP_HIGH:
case AU_TX_MAH_HIGH:
case AU_TX_TEMP_HIGH:
#endif
audioQueue.playTone(1950, 160, 20, PLAY_REPEAT(2), 1);
audioQueue.playTone(2550, 160, 20, PLAY_REPEAT(2), -1);
break;
case AU_THROTTLE_ALERT:
case AU_SWITCH_ALERT:
case AU_ERROR:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW);
break;
case AU_KEYPAD_UP:
audioQueue.playTone(BEEP_KEY_UP_FREQ, 80, 20, PLAY_NOW);
break;
case AU_KEYPAD_DOWN:
audioQueue.playTone(BEEP_KEY_DOWN_FREQ, 80, 20, PLAY_NOW);
break;
case AU_MENUS:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW);
break;
case AU_TRIM_MOVE:
audioQueue.playTone(freq, 40, 20, PLAY_NOW);
break;
case AU_TRIM_MIDDLE:
audioQueue.playTone(freq, 80, 20, PLAY_NOW);
break;
case AU_TRIM_END:
audioQueue.playTone(freq, 80, 20, PLAY_NOW);
break;
case AU_WARNING1:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW);
break;
case AU_WARNING2:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 160, 20, PLAY_NOW);
break;
case AU_WARNING3:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW);
break;
// TODO remove all these ones
case AU_STICK1_MIDDLE:
case AU_STICK2_MIDDLE:
case AU_STICK3_MIDDLE:
case AU_STICK4_MIDDLE:
case AU_POT1_MIDDLE:
case AU_POT2_MIDDLE:
audioQueue.playTone(1950, 160, 20, PLAY_REPEAT(2), 1);
audioQueue.playTone(2550, 160, 20, PLAY_REPEAT(2), -1);
break;
case AU_THROTTLE_ALERT:
case AU_SWITCH_ALERT:
case AU_ERROR:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW);
break;
case AU_KEYPAD_UP:
audioQueue.playTone(BEEP_KEY_UP_FREQ, 80, 20, PLAY_NOW);
break;
case AU_KEYPAD_DOWN:
audioQueue.playTone(BEEP_KEY_DOWN_FREQ, 80, 20, PLAY_NOW);
break;
case AU_MENUS:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW);
break;
case AU_TRIM_MOVE:
audioQueue.playTone(freq, 40, 20, PLAY_NOW);
break;
case AU_TRIM_MIDDLE:
audioQueue.playTone(freq, 80, 20, PLAY_NOW);
break;
case AU_TRIM_END:
audioQueue.playTone(freq, 80, 20, PLAY_NOW);
break;
case AU_WARNING1:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW);
break;
case AU_WARNING2:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 160, 20, PLAY_NOW);
break;
case AU_WARNING3:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW);
break;
// TODO remove all these ones
case AU_STICK1_MIDDLE:
case AU_STICK2_MIDDLE:
case AU_STICK3_MIDDLE:
case AU_STICK4_MIDDLE:
case AU_POT1_MIDDLE:
case AU_POT2_MIDDLE:
#if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS)
case AU_SLIDER1_MIDDLE:
case AU_SLIDER2_MIDDLE:
case AU_SLIDER1_MIDDLE:
case AU_SLIDER2_MIDDLE:
#else
case AU_POT3_MIDDLE:
case AU_POT3_MIDDLE:
#endif
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 80, 20, PLAY_NOW);
break;
case AU_MIX_WARNING_1:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1440, 48, 32);
break;
case AU_MIX_WARNING_2:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1560, 48, 32, PLAY_REPEAT(1));
break;
case AU_MIX_WARNING_3:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1680, 48, 32, PLAY_REPEAT(2));
break;
case AU_TIMER_00:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 300, 20, PLAY_NOW);
break;
case AU_TIMER_LT10:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_NOW);
break;
case AU_TIMER_20:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_TIMER_30:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(2) | PLAY_NOW);
break;
case AU_A1_ORANGE:
case AU_A2_ORANGE:
case AU_A3_ORANGE:
case AU_A4_ORANGE:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_NOW);
break;
case AU_A1_RED:
case AU_A2_RED:
case AU_A3_RED:
case AU_A4_RED:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_RSSI_ORANGE:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 800, 20, PLAY_NOW);
break;
case AU_RSSI_RED:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1800, 800, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_SWR_RED:
audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 1);
break;
case AU_SPECIAL_SOUND_BEEP1:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 60, 20);
break;
case AU_SPECIAL_SOUND_BEEP2:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 120, 20);
break;
case AU_SPECIAL_SOUND_BEEP3:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20);
break;
case AU_SPECIAL_SOUND_WARN1:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 120, 40, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_WARN2:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 120, 40, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_CHEEP:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 80, 20, PLAY_REPEAT(2), 2);
break;
case AU_SPECIAL_SOUND_RING:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 80, PLAY_REPEAT(1));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10));
break;
case AU_SPECIAL_SOUND_SCIFI:
audioQueue.playTone(2550, 80, 20, PLAY_REPEAT(2), -1);
audioQueue.playTone(1950, 80, 20, PLAY_REPEAT(2), 1);
audioQueue.playTone(2250, 80, 20, 0);
break;
case AU_SPECIAL_SOUND_ROBOT:
audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1));
audioQueue.playTone(1650, 120, 20, PLAY_REPEAT(1));
audioQueue.playTone(2550, 120, 20, PLAY_REPEAT(1));
break;
case AU_SPECIAL_SOUND_CHIRP:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1200, 40, 20, PLAY_REPEAT(2));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1620, 40, 20, PLAY_REPEAT(3));
break;
case AU_SPECIAL_SOUND_TADA:
audioQueue.playTone(1650, 80, 40);
audioQueue.playTone(2850, 80, 40);
audioQueue.playTone(3450, 64, 36, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_CRICKET:
audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3));
audioQueue.playTone(2550, 40, 160, PLAY_REPEAT(1));
audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3));
break;
case AU_SPECIAL_SOUND_SIREN:
audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 2);
break;
case AU_SPECIAL_SOUND_ALARMC:
audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2));
audioQueue.playTone(2250, 64, 156, PLAY_REPEAT(1));
audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2));
audioQueue.playTone(2250, 32, 168, PLAY_REPEAT(1));
break;
case AU_SPECIAL_SOUND_RATATA:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 80, PLAY_REPEAT(10));
break;
case AU_SPECIAL_SOUND_TICK:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 400, PLAY_REPEAT(2));
break;
default:
break;
}
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 80, 20, PLAY_NOW);
break;
case AU_MIX_WARNING_1:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1440, 48, 32);
break;
case AU_MIX_WARNING_2:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1560, 48, 32, PLAY_REPEAT(1));
break;
case AU_MIX_WARNING_3:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1680, 48, 32, PLAY_REPEAT(2));
break;
case AU_TIMER_00:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 300, 20, PLAY_NOW);
break;
case AU_TIMER_LT10:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_NOW);
break;
case AU_TIMER_20:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_TIMER_30:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(2) | PLAY_NOW);
break;
case AU_A1_ORANGE:
case AU_A2_ORANGE:
case AU_A3_ORANGE:
case AU_A4_ORANGE:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_NOW);
break;
case AU_A1_RED:
case AU_A2_RED:
case AU_A3_RED:
case AU_A4_RED:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_RSSI_ORANGE:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 800, 20, PLAY_NOW);
break;
case AU_RSSI_RED:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1800, 800, 20, PLAY_REPEAT(1) | PLAY_NOW);
break;
case AU_SWR_RED:
audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 1);
break;
case AU_SPECIAL_SOUND_BEEP1:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 60, 20);
break;
case AU_SPECIAL_SOUND_BEEP2:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 120, 20);
break;
case AU_SPECIAL_SOUND_BEEP3:
audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20);
break;
case AU_SPECIAL_SOUND_WARN1:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 120, 40, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_WARN2:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 120, 40, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_CHEEP:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 80, 20, PLAY_REPEAT(2), 2);
break;
case AU_SPECIAL_SOUND_RING:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 80, PLAY_REPEAT(1));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10));
break;
case AU_SPECIAL_SOUND_SCIFI:
audioQueue.playTone(2550, 80, 20, PLAY_REPEAT(2), -1);
audioQueue.playTone(1950, 80, 20, PLAY_REPEAT(2), 1);
audioQueue.playTone(2250, 80, 20, 0);
break;
case AU_SPECIAL_SOUND_ROBOT:
audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1));
audioQueue.playTone(1650, 120, 20, PLAY_REPEAT(1));
audioQueue.playTone(2550, 120, 20, PLAY_REPEAT(1));
break;
case AU_SPECIAL_SOUND_CHIRP:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1200, 40, 20, PLAY_REPEAT(2));
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1620, 40, 20, PLAY_REPEAT(3));
break;
case AU_SPECIAL_SOUND_TADA:
audioQueue.playTone(1650, 80, 40);
audioQueue.playTone(2850, 80, 40);
audioQueue.playTone(3450, 64, 36, PLAY_REPEAT(2));
break;
case AU_SPECIAL_SOUND_CRICKET:
audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3));
audioQueue.playTone(2550, 40, 160, PLAY_REPEAT(1));
audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3));
break;
case AU_SPECIAL_SOUND_SIREN:
audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 2);
break;
case AU_SPECIAL_SOUND_ALARMC:
audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2));
audioQueue.playTone(2250, 64, 156, PLAY_REPEAT(1));
audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2));
audioQueue.playTone(2250, 32, 168, PLAY_REPEAT(1));
break;
case AU_SPECIAL_SOUND_RATATA:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 80, PLAY_REPEAT(10));
break;
case AU_SPECIAL_SOUND_TICK:
audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 400, PLAY_REPEAT(2));
break;
default:
break;
}
}
}
+2
View File
@@ -533,6 +533,8 @@ void * audioThread(void *)
}
SDL_PauseAudio(0);
referenceSystemAudioFiles();
while (simuAudio.threadRunning) {
audioQueue.wakeup();
sleep(1);