diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 40d906499..61dbc0b92 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -905,10 +905,11 @@ void AdminModule::handleSetConfig(const meshtastic_Config &c) bool AdminModule::handleSetModuleConfig(const meshtastic_ModuleConfig &c) { + bool shouldReboot = true; // If we are in an open transaction or configuring MQTT or Serial (which have validation), defer disabling Bluetooth // Otherwise, disable Bluetooth to prevent the phone from interfering with the config - if (!hasOpenEditTransaction && - !IS_ONE_OF(c.which_payload_variant, meshtastic_ModuleConfig_mqtt_tag, meshtastic_ModuleConfig_serial_tag)) { + if (!hasOpenEditTransaction && !IS_ONE_OF(c.which_payload_variant, meshtastic_ModuleConfig_mqtt_tag, + meshtastic_ModuleConfig_serial_tag, meshtastic_ModuleConfig_statusmessage_tag)) { disableBluetooth(); } @@ -1004,9 +1005,10 @@ bool AdminModule::handleSetModuleConfig(const meshtastic_ModuleConfig &c) LOG_INFO("Set module config: StatusMessage"); moduleConfig.has_statusmessage = true; moduleConfig.statusmessage = c.payload_variant.statusmessage; + shouldReboot = false; break; } - saveChanges(SEGMENT_MODULECONFIG); + saveChanges(SEGMENT_MODULECONFIG, shouldReboot); return true; } diff --git a/src/modules/StatusMessageModule.h b/src/modules/StatusMessageModule.h index 8aff2e232..c9ff54018 100644 --- a/src/modules/StatusMessageModule.h +++ b/src/modules/StatusMessageModule.h @@ -15,6 +15,8 @@ class StatusMessageModule : public SinglePortModule, private concurrency::OSThre { if (moduleConfig.has_statusmessage && moduleConfig.statusmessage.node_status[0] != '\0') { this->setInterval(2 * 60 * 1000); + } else { + this->setInterval(1000 * 12 * 60 * 60); } // TODO: If we have a string, set the initial delay (15 minutes maybe) }