aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/stm32/tone_alarm/tone_alarm.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/drivers/stm32/tone_alarm/tone_alarm.cpp b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
index b06920a76..ad21f7143 100644
--- a/src/drivers/stm32/tone_alarm/tone_alarm.cpp
+++ b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
@@ -879,14 +879,9 @@ ToneAlarm::ioctl(file *filp, int cmd, unsigned long arg)
_tune = nullptr;
_next = nullptr;
} else {
- /* don't interrupt alarms unless they are repeated */
- if (_tune != nullptr && !_repeat) {
- /* abort and let the current tune finish */
- result = -EBUSY;
- } else if (_repeat && _default_tune_number == arg) {
- /* requested repeating tune already playing */
- } else {
- // play the selected tune
+ /* always interrupt alarms, unless they are repeating and already playing */
+ if (!(_repeat && _default_tune_number == arg)) {
+ /* play the selected tune */
_default_tune_number = arg;
start_tune(_default_tunes[arg - 1]);
}