From 789e8f02bf914b3582be69270925cc930651b6ff Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 6 Aug 2024 18:48:55 -0500 Subject: [PATCH] Add more exclude options to save program ram/flash (#4408) * Add PowerFSM Exclude option * Add TEXTMESSAGE module exclude option --------- Co-authored-by: Ben Meadors --- src/PowerFSM.cpp | 8 ++++++-- src/PowerFSM.h | 25 ++++++++++++++++++++++++- src/PowerFSMThread.h | 4 ++++ src/configuration.h | 2 ++ src/modules/AdminModule.cpp | 5 ++++- src/modules/Modules.cpp | 2 ++ 6 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/PowerFSM.cpp b/src/PowerFSM.cpp index 0a954c1b8..8bf7d3218 100644 --- a/src/PowerFSM.cpp +++ b/src/PowerFSM.cpp @@ -22,7 +22,10 @@ #ifndef SLEEP_TIME #define SLEEP_TIME 30 #endif - +#if EXCLUDE_POWER_FSM +FakeFsm powerFSM; +void PowerFSM_setup(){}; +#else /// Should we behave as if we have AC power now? static bool isPowered() { @@ -395,4 +398,5 @@ void PowerFSM_setup() #endif powerFSM.run_machine(); // run one iteration of the state machine, so we run our on enter tasks for the initial DARK state -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/PowerFSM.h b/src/PowerFSM.h index 752a9f7dd..13dfdc4cc 100644 --- a/src/PowerFSM.h +++ b/src/PowerFSM.h @@ -1,6 +1,6 @@ #pragma once -#include +#include "configuration.h" // See sw-design.md for documentation @@ -22,7 +22,30 @@ #define EVENT_SHUTDOWN 16 // force a full shutdown now (not just sleep) #define EVENT_INPUT 17 // input broker wants something, we need to wake up and enable screen +#if EXCLUDE_POWER_FSM +class FakeFsm +{ + public: + void trigger(int event) + { + if (event == EVENT_SERIAL_CONNECTED) { + serialConnected = true; + } else if (event == EVENT_SERIAL_DISCONNECTED) { + serialConnected = false; + } + }; + bool getState() { return serialConnected; }; + + private: + bool serialConnected = false; +}; +extern FakeFsm powerFSM; +void PowerFSM_setup(); + +#else +#include extern Fsm powerFSM; extern State stateON, statePOWER, stateSERIAL, stateDARK; void PowerFSM_setup(); +#endif \ No newline at end of file diff --git a/src/PowerFSMThread.h b/src/PowerFSMThread.h index fb640dd8b..c842f4515 100644 --- a/src/PowerFSMThread.h +++ b/src/PowerFSMThread.h @@ -18,6 +18,7 @@ class PowerFSMThread : public OSThread protected: int32_t runOnce() override { +#if !EXCLUDE_POWER_FSM powerFSM.run_machine(); /// If we are in power state we force the CPU to wake every 10ms to check for serial characters (we don't yet wake @@ -35,6 +36,9 @@ class PowerFSMThread : public OSThread } return 100; +#else + return INT32_MAX; +#endif } }; diff --git a/src/configuration.h b/src/configuration.h index 4ebc59ffc..5365db239 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -256,6 +256,7 @@ along with this program. If not, see . #define MESHTASTIC_EXCLUDE_MQTT 1 #define MESHTASTIC_EXCLUDE_POWERMON 1 #define MESHTASTIC_EXCLUDE_I2C 1 +#define MESHTASTIC_EXCLUDE_POWER_FSM 1 #endif // Turn off all optional modules @@ -269,6 +270,7 @@ along with this program. If not, see . #define MESHTASTIC_EXCLUDE_RANGETEST 1 #define MESHTASTIC_EXCLUDE_REMOTEHARDWARE 1 #define MESHTASTIC_EXCLUDE_STOREFORWARD 1 +#define MESHTASTIC_EXCLUDE_TEXTMESSAGE 1 #define MESHTASTIC_EXCLUDE_ATAK 1 #define MESHTASTIC_EXCLUDE_CANNEDMESSAGES 1 #define MESHTASTIC_EXCLUDE_NEIGHBORINFO 1 diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 8287f8a00..0f053a049 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -818,8 +818,11 @@ void AdminModule::handleGetDeviceConnectionStatus(const meshtastic_MeshPacket &r #endif #endif conn.has_serial = true; // No serial-less devices +#if !EXCLUDE_POWER_FSM conn.serial.is_connected = powerFSM.getState() == &stateSERIAL; - conn.serial.baud = SERIAL_BAUD; +#else + conn.serial.is_connected = powerFSM.getState(); +#endif conn.serial.baud = SERIAL_BAUD; r.get_device_connection_status_response = conn; r.which_payload_variant = meshtastic_AdminMessage_get_device_connection_status_response_tag; diff --git a/src/modules/Modules.cpp b/src/modules/Modules.cpp index 3df8fc170..a1c9f4a03 100644 --- a/src/modules/Modules.cpp +++ b/src/modules/Modules.cpp @@ -106,7 +106,9 @@ void setupModules() #if !MESHTASTIC_EXCLUDE_WAYPOINT waypointModule = new WaypointModule(); #endif +#if !MESHTASTIC_EXCLUDE_TEXTMESSAGE textMessageModule = new TextMessageModule(); +#endif #if !MESHTASTIC_EXCLUDE_TRACEROUTE traceRouteModule = new TraceRouteModule(); #endif