From 103f73e7c901c5612e03a2e824350ae393179817 Mon Sep 17 00:00:00 2001 From: HarukiToreda <116696711+HarukiToreda@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:49:06 -0400 Subject: [PATCH] gating for message storage when not using a screen --- src/MessageStore.cpp | 2 ++ src/MessageStore.h | 2 ++ src/Power.cpp | 3 ++- src/graphics/draw/MessageRenderer.h | 3 +++ src/modules/SystemCommandsModule.cpp | 2 ++ src/modules/TextMessageModule.cpp | 4 ++-- 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/MessageStore.cpp b/src/MessageStore.cpp index ca025f5e5..5aa7a8aec 100644 --- a/src/MessageStore.cpp +++ b/src/MessageStore.cpp @@ -1,3 +1,4 @@ +#if HAS_SCREEN #include "MessageStore.h" #include "FSCommon.h" #include "NodeDB.h" @@ -392,3 +393,4 @@ void MessageStore::upgradeBootRelativeTimestamps() // Global definition MessageStore messageStore("default"); +#endif \ No newline at end of file diff --git a/src/MessageStore.h b/src/MessageStore.h index f32a03af7..abb7f90ea 100644 --- a/src/MessageStore.h +++ b/src/MessageStore.h @@ -1,3 +1,4 @@ +#if HAS_SCREEN #pragma once #include "mesh/generated/meshtastic/mesh.pb.h" #include @@ -101,3 +102,4 @@ class MessageStore // Global instance (defined in MessageStore.cpp) extern MessageStore messageStore; +#endif \ No newline at end of file diff --git a/src/Power.cpp b/src/Power.cpp index 1cd38aaa7..a994d1486 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -759,8 +759,9 @@ void Power::shutdown() #endif nodeDB->saveToDisk(); // === Save live messages before powering off === +#if HAS_SCREEN messageStore.saveToFlash(); - +#endif #if defined(ARCH_NRF52) || defined(ARCH_ESP32) || defined(ARCH_RP2040) #ifdef PIN_LED1 ledOff(PIN_LED1); diff --git a/src/graphics/draw/MessageRenderer.h b/src/graphics/draw/MessageRenderer.h index 98018e90f..9e9d83bd2 100644 --- a/src/graphics/draw/MessageRenderer.h +++ b/src/graphics/draw/MessageRenderer.h @@ -1,3 +1,4 @@ +#if HAS_SCREEN #pragma once #include "MessageStore.h" // for StoredMessage #include "OLEDDisplay.h" @@ -60,3 +61,5 @@ void handleNewMessage(const StoredMessage &sm, const meshtastic_MeshPacket &pack } // namespace MessageRenderer } // namespace graphics + +#endif \ No newline at end of file diff --git a/src/modules/SystemCommandsModule.cpp b/src/modules/SystemCommandsModule.cpp index c2046fcd9..c2bd72699 100644 --- a/src/modules/SystemCommandsModule.cpp +++ b/src/modules/SystemCommandsModule.cpp @@ -78,7 +78,9 @@ int SystemCommandsModule::handleInputEvent(const InputEvent *event) case INPUT_BROKER_MSG_REBOOT: IF_SCREEN(screen->showSimpleBanner("Rebooting...", 0)); nodeDB->saveToDisk(); +#if HAS_SCREEN messageStore.saveToFlash(); +#endif rebootAtMsec = millis() + DEFAULT_REBOOT_SECONDS * 1000; // runState = CANNED_MESSAGE_RUN_STATE_INACTIVE; return true; diff --git a/src/modules/TextMessageModule.cpp b/src/modules/TextMessageModule.cpp index 6c54478ba..e16d30b22 100644 --- a/src/modules/TextMessageModule.cpp +++ b/src/modules/TextMessageModule.cpp @@ -20,10 +20,10 @@ ProcessMessage TextMessageModule::handleReceived(const meshtastic_MeshPacket &mp // We only store/display messages destined for us. devicestate.rx_text_message = mp; devicestate.has_rx_text_message = true; - +#if HAS_SCREEN // Store in the central message history const StoredMessage &sm = messageStore.addFromPacket(mp); -#if HAS_SCREEN + // Pass message to renderer (banner + thread switching + scroll reset) graphics::MessageRenderer::handleNewMessage(sm, mp); #endif