diff --git a/main/rf/RFConfiguration.cpp b/main/rf/RFConfiguration.cpp index 9d937d46d8..d8a45f3d70 100644 --- a/main/rf/RFConfiguration.cpp +++ b/main/rf/RFConfiguration.cpp @@ -134,11 +134,14 @@ void RFConfiguration::saveOnStorage() { * is not found, a notice is logged, and the RF receiver is enabled with * default settings. * + * @param reinitReceiver If true (default), disables and re-enables the receiver. + * If false, only loads the configuration without reinitialization. + * * @note This function has specific behavior for ESP32 platforms. On ESP32, * it uses the Preferences library to access stored configuration data. * For other platforms, it directly enables the active receiver. */ -void RFConfiguration::loadFromStorage() { +void RFConfiguration::loadFromStorage(bool reinitReceiver) { #ifdef ESP32 StaticJsonDocument jsonBuffer; preferences.begin(Gateway_Short_Name, true); @@ -159,11 +162,13 @@ void RFConfiguration::loadFromStorage() { } else { preferences.end(); Log.notice(F("RF Config not found using default" CR)); - iRFReceiver.enable(); } -#else - iRFReceiver.enable(); #endif + // Disable and re-enable the receiver to ensure proper initialization + if (reinitReceiver) { + iRFReceiver.disable(); + iRFReceiver.enable(); + } } /** @@ -193,8 +198,8 @@ void RFConfiguration::loadFromMessage(JsonObject& RFdata) { // Restore the default (initial) configuration reInit(); } else if (RFdata.containsKey("load") && RFdata["load"].as()) { - // Load the saved configuration, if not initialised - loadFromStorage(); + // Load the saved configuration from storage (without receiver reinitialization) + loadFromStorage(false); } fromJson(RFdata); diff --git a/main/rf/RFConfiguration.h b/main/rf/RFConfiguration.h index 71b9de29c4..34dacf5a6a 100644 --- a/main/rf/RFConfiguration.h +++ b/main/rf/RFConfiguration.h @@ -49,11 +49,14 @@ class RFConfiguration { /** * Loads the RF configuration from persistent storage and applies it. * + * @param reinitReceiver If true (default), disables and re-enables the receiver. + * If false, only loads the configuration without reinitialization. + * * @note This function has specific behavior for ESP32 platforms. On ESP32, * it uses the Preferences library to access stored configuration data. * For other platforms, it directly enables the active receiver. */ - void loadFromStorage(); + void loadFromStorage(bool reinitReceiver = true); /** * Loads the RF configuration from a JSON object and applies it.