Merge branch 'develop' into 7943-mute-target

This commit is contained in:
Ford Jones 2025-09-28 01:01:48 +12:00 committed by GitHub
commit 4dec912a39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 4 deletions

View File

@ -26,6 +26,7 @@ class AudioThread : public concurrency::OSThread
i2sRtttl->begin(rtttlFile, audioOut); i2sRtttl->begin(rtttlFile, audioOut);
} }
// Also handles actually playing the RTTTL, needs to be called in loop
bool isPlaying() bool isPlaying()
{ {
if (i2sRtttl != nullptr) { if (i2sRtttl != nullptr) {

View File

@ -89,11 +89,12 @@ int32_t ExternalNotificationModule::runOnce()
return INT32_MAX; // we don't need this thread here... return INT32_MAX; // we don't need this thread here...
} else { } else {
uint32_t delay = EXT_NOTIFICATION_MODULE_OUTPUT_MS; uint32_t delay = EXT_NOTIFICATION_MODULE_OUTPUT_MS;
bool isPlaying = rtttl::isPlaying(); bool isRtttlPlaying = rtttl::isPlaying();
#ifdef HAS_I2S #ifdef HAS_I2S
isPlaying = rtttl::isPlaying() || audioThread->isPlaying(); // audioThread->isPlaying() also handles actually playing the RTTTL, needs to be called in loop
isRtttlPlaying = isRtttlPlaying || audioThread->isPlaying();
#endif #endif
if ((nagCycleCutoff < millis()) && !isPlaying) { if ((nagCycleCutoff < millis()) && !isRtttlPlaying) {
// let the song finish if we reach timeout // let the song finish if we reach timeout
nagCycleCutoff = UINT32_MAX; nagCycleCutoff = UINT32_MAX;
LOG_INFO("Turning off external notification: "); LOG_INFO("Turning off external notification: ");
@ -187,12 +188,14 @@ int32_t ExternalNotificationModule::runOnce()
// Play RTTTL over i2s audio interface if enabled as buzzer // Play RTTTL over i2s audio interface if enabled as buzzer
#ifdef HAS_I2S #ifdef HAS_I2S
if (moduleConfig.external_notification.use_i2s_as_buzzer && canBuzz()) { if (moduleConfig.external_notification.use_i2s_as_buzzer) {
if (audioThread->isPlaying()) { if (audioThread->isPlaying()) {
// Continue playing // Continue playing
} else if (isNagging && (nagCycleCutoff >= millis())) { } else if (isNagging && (nagCycleCutoff >= millis())) {
audioThread->beginRttl(rtttlConfig.ringtone, strlen_P(rtttlConfig.ringtone)); audioThread->beginRttl(rtttlConfig.ringtone, strlen_P(rtttlConfig.ringtone));
} }
// we need fast updates to play the RTTTL
delay = EXT_NOTIFICATION_FAST_THREAD_MS;
} }
#endif #endif
// now let the PWM buzzer play // now let the PWM buzzer play