Full T-echo card support + Compact UI (#11342)

* T-echo card

* Update NRF52I2SOutput.cpp

* Update NRF52I2SOutput.h

* cleanup

* Update buzz.cpp

* use consistent runtime compact-panel check instead of mixing with compile-time macro

* Update NodeDB.cpp

* Update ExternalNotificationModule.cpp

* switched to Throttle::isWithinTimespanMs

* Update SharedUIDisplay.h

* trunk fix

* last cleanup

* ClockRenderer.cpp for OLED_COMPACT_UI and setup Unit C6L for new UI.

* Fixed regressions in standard OLED and TFT

---------

Co-authored-by: Jason P <applewiz@mac.com>
This commit is contained in:
HarukiToredaandJason P authored and GitHub committed 2026-08-04 14:27:35 +00:00
1 parent d89f3eb8fc
commit 39e7aa6a6c
26 files changed
+1231 -186

No files matched your search

@@ -40,6 +40,10 @@ bool ascending = true;
#define PIN_BUZZER false
#endif
#if defined(HAS_I2S_SPEAKER_NRF52)
#include "platform/nrf52/NRF52RtttlPlayer.h"
#endif
/*
Documentation:
https://meshtastic.org/docs/configuration/module/external-notification
@@ -77,6 +81,9 @@ int32_t ExternalNotificationModule::runOnce()
#ifdef HAS_I2S
// audioThread->isPlaying() also handles actually playing the RTTTL, needs to be called in loop
isRtttlPlaying = isRtttlPlaying || audioThread->isPlaying();
#endif
#if defined(HAS_I2S_SPEAKER_NRF52)
isRtttlPlaying = isRtttlPlaying || nrf52RtttlPlayer.isPlaying();
#endif
if ((nagCycleCutoff < millis()) && !isRtttlPlaying) {
// Turn off external notification immediately when timeout is reached, regardless of song state
@@ -145,6 +152,17 @@ int32_t ExternalNotificationModule::runOnce()
// we need fast updates to play the RTTTL
delay = EXT_NOTIFICATION_FAST_THREAD_MS;
}
#endif
#if defined(HAS_I2S_SPEAKER_NRF52)
// Play RTTTL over the I2S speaker (no piezo on this board).
if (canBuzz() && buzzerShouldAlert) {
if (nrf52RtttlPlayer.isPlaying()) {
nrf52RtttlPlayer.play();
} else if (isNagging && (nagCycleCutoff >= millis())) {
nrf52RtttlPlayer.begin(rtttlConfig.ringtone);
}
delay = EXT_NOTIFICATION_FAST_THREAD_MS;
}
#endif
// now let the PWM buzzer play
if (moduleConfig.external_notification.use_pwm && config.device.buzzer_gpio && canBuzz() && buzzerShouldAlert) {
@@ -264,6 +282,9 @@ void ExternalNotificationModule::stopNow()
#ifdef HAS_I2S
LOG_INFO("Stop audioThread playback");
audioThread->stop();
#endif
#if defined(HAS_I2S_SPEAKER_NRF52)
nrf52RtttlPlayer.stop();
#endif
// Turn off all outputs
LOG_INFO("Turning off setExternalStates");