From d0dd2ac4186299fd8961268fa1c0d79b51e053ca Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Thu, 15 May 2025 17:43:39 +0530 Subject: [PATCH 01/12] Add WAI support check logic to header file --- MaintenanceManager/MaintenanceManager.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index 0f8d3c4f..97e22857 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -114,6 +114,9 @@ typedef enum #define BASE_CLOCK CLOCK_BOOTTIME +#define WHOAMI_PROP_KEY "WHOAMI_ENABLED" +#define DEVICE_PROP_FILE "/etc/device.properties" + #define FOREGROUND_MODE "FOREGROUND" #define BACKGROUND_MODE "BACKGROUND" @@ -222,6 +225,7 @@ namespace WPEFramework void deviceInitializationContextEventHandler(const JsonObject ¶meters); void startCriticalTasks(); bool checkNetwork(); + void isWhoAmIEnabled(); bool knowWhoAmI(string &activation_status); bool subscribeToDeviceInitializationEvent(); bool setDeviceInitializationContext(JsonObject joGetResult); From ff65bb1dc5258ccacb7b3b28acf04b3d737d578a Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Thu, 15 May 2025 13:13:56 +0000 Subject: [PATCH 02/12] Add Runtime Whoami Middleware Checks in MaintenanceManager Signed-off-by: Gomathi Shankar --- MaintenanceManager/MaintenanceManager.cpp | 157 +++++++++++++--------- MaintenanceManager/MaintenanceManager.h | 1 + services.cmake | 5 - 3 files changed, 97 insertions(+), 66 deletions(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index 551239fe..2981d61e 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -45,6 +45,7 @@ #include "UtilsIarm.h" #include "UtilsJsonRpc.h" #include "UtilsfileExists.h" +#include "UtilsgetFileContent.h" #if defined(USE_IARMBUS) || defined(USE_IARM_BUS) #include "libIARM.h" @@ -63,18 +64,17 @@ using namespace std; #define API_VERSION_NUMBER_MAJOR 1 #define API_VERSION_NUMBER_MINOR 0 -#define API_VERSION_NUMBER_PATCH 23 +#define API_VERSION_NUMBER_PATCH 24 #define SERVER_DETAILS "127.0.0.1:9998" #define PROC_DIR "/proc" #define RDK_PATH "/lib/rdk/" #define MAINTENANCE_MANAGER_RFC_CALLER_ID "MaintenanceManager" -#if defined(ENABLE_WHOAMI) #define TR181_PARTNER_ID "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Bootstrap.PartnerName" #define TR181_TARGET_OS_CLASS "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Bootstrap.OsClass" #define TR181_XCONFURL "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Bootstrap.XconfUrl" -#endif + #define TASK_SCRIPT RDK_PATH "Start_MaintenanceTasks.sh" @@ -335,7 +335,6 @@ namespace WPEFramework MaintenanceManager::m_task_map[task_names_foreground[TASK_SWUPDATE].c_str()] = false; MaintenanceManager::m_task_map[task_names_foreground[TASK_LOGUPLOAD].c_str()] = false; -#if defined(ENABLE_WHOAMI) MaintenanceManager::m_param_map[kDeviceInitContextKeyVals[0].c_str()] = TR181_PARTNER_ID; MaintenanceManager::m_param_map[kDeviceInitContextKeyVals[1].c_str()] = TR181_TARGET_OS_CLASS; MaintenanceManager::m_param_map[kDeviceInitContextKeyVals[2].c_str()] = TR181_XCONFURL; @@ -343,13 +342,13 @@ namespace WPEFramework MaintenanceManager::m_paramType_map[kDeviceInitContextKeyVals[0].c_str()] = DATA_TYPE::WDMP_STRING; MaintenanceManager::m_paramType_map[kDeviceInitContextKeyVals[1].c_str()] = DATA_TYPE::WDMP_STRING; MaintenanceManager::m_paramType_map[kDeviceInitContextKeyVals[2].c_str()] = DATA_TYPE::WDMP_STRING; -#endif } void MaintenanceManager::task_execution_thread() { int i = 0; string task = ""; + bool isMaintenanceSuppressed = false; bool internetConnectStatus = false; bool delayMaintenanceStarted = false; bool exitOnNoNetwork = false; @@ -359,13 +358,12 @@ namespace WPEFramework std::unique_lock wailck(m_waiMutex); MM_LOGINFO("Executing Maintenance tasks"); -#if defined(ENABLE_WHOAMI) /* Purposefully delaying MAINTENANCE_STARTED status to honor POWER compliance */ - if (UNSOLICITED_MAINTENANCE == g_maintenance_type) + if (UNSOLICITED_MAINTENANCE == g_maintenance_type && g_whoami_support_enabled) { delayMaintenanceStarted = true; } -#endif + if (!delayMaintenanceStarted) { m_statusMutex.lock(); @@ -379,55 +377,65 @@ namespace WPEFramework tasks.erase(tasks.begin(), tasks.end()); } -#if defined(SUPPRESS_MAINTENANCE) && !defined(ENABLE_WHOAMI) - bool skipFirmwareCheck = false; - bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ - /* we proceed with network check only if - * "activation-connect", - * "activation-ready" - * "not-activated", - * "activated" */ - if (activationStatus) +#if defined(SUPPRESS_MAINTENANCE) + if (!g_whoami_support_enabled) + { + isMaintenanceSuppressed = true; + bool skipFirmwareCheck = false; + bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ + /* we proceed with network check only if + * "activation-connect", + * "activation-ready" + * "not-activated", + * "activated" */ + if (activationStatus) + { + internetConnectStatus = isDeviceOnline(); /* Network check */ + } + } +#endif + if (!isMaintenanceSuppressed) { internetConnectStatus = isDeviceOnline(); /* Network check */ } -#else - internetConnectStatus = isDeviceOnline(); /* Network check */ -#endif -#if defined(ENABLE_WHOAMI) - if (UNSOLICITED_MAINTENANCE == g_maintenance_type) + if (g_whoami_support_enabled) { - string activation_status = checkActivatedStatus(); /* Device Activation Status Check */ - bool whoAmIStatus = knowWhoAmI(activation_status); /* WhoAmI Response & Set Status Check */ - MM_LOGINFO("knowWhoAmI() returned %s", (whoAmIStatus) ? "successfully" : "false"); - - if (!whoAmIStatus && activation_status != "activated") + if (UNSOLICITED_MAINTENANCE == g_maintenance_type) { - MM_LOGINFO("knowWhoAmI() returned false and Device is not already Activated"); - g_listen_to_deviceContextUpdate = true; - MM_LOGINFO("Waiting for onDeviceInitializationContextUpdate event"); - task_thread.wait(wailck); + string activation_status = checkActivatedStatus(); /* Device Activation Status Check */ + bool whoAmIStatus = knowWhoAmI(activation_status); /* WhoAmI Response & Set Status Check */ + MM_LOGINFO("knowWhoAmI() returned %s", (whoAmIStatus) ? "successfully" : "false"); + + if (!whoAmIStatus && activation_status != "activated") + { + MM_LOGINFO("knowWhoAmI() returned false and Device is not already Activated"); + g_listen_to_deviceContextUpdate = true; + MM_LOGINFO("Waiting for onDeviceInitializationContextUpdate event"); + task_thread.wait(wailck); + } + else if (!internetConnectStatus && activation_status == "activated") + { + MM_LOGINFO("Device is not connected to the Internet and Device is already Activated"); + exitOnNoNetwork = true; + } } - else if (!internetConnectStatus && activation_status == "activated") + else /* Solicited Maintenance in WHOAMI */ { - MM_LOGINFO("Device is not connected to the Internet and Device is already Activated"); - exitOnNoNetwork = true; + if (!internetConnectStatus) + { + exitOnNoNetwork = true; + } } } - else /* Solicited Maintenance in WHOAMI */ + else { if (!internetConnectStatus) { exitOnNoNetwork = true; } } -#else - if (!internetConnectStatus) - { - exitOnNoNetwork = true; - } -#endif + if (exitOnNoNetwork) /* Exit Maintenance Cycle if no Internet */ { m_statusMutex.lock(); @@ -451,28 +459,34 @@ namespace WPEFramework MM_LOGINFO("Reboot_Pending :%s", g_is_reboot_pending.c_str()); MM_LOGINFO("%s", UNSOLICITED_MAINTENANCE == g_maintenance_type ? "---------------UNSOLICITED_MAINTENANCE--------------" : "=============SOLICITED_MAINTENANCE==============="); - -#if defined(SUPPRESS_MAINTENANCE) && !defined(ENABLE_WHOAMI) - if (skipFirmwareCheck) + +#if defined(SUPPRESS_MAINTENANCE) + if (!g_whoami_support_enabled && isMaintenanceSuppressed) { - /* set the task status of Firmware Download */ - SET_STATUS(g_task_status, SWUPDATE_SUCCESS); - SET_STATUS(g_task_status, SWUPDATE_COMPLETE); - /* Skip Firmware Download Task and add other tasks */ - tasks.push_back(task_names_foreground[TASK_RFC].c_str()); - tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); + if (skipFirmwareCheck) + { + /* set the task status of Firmware Download */ + SET_STATUS(g_task_status, SWUPDATE_SUCCESS); + SET_STATUS(g_task_status, SWUPDATE_COMPLETE); + /* Skip Firmware Download Task and add other tasks */ + tasks.push_back(task_names_foreground[TASK_RFC].c_str()); + tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); + } + else + { + tasks.push_back(task_names_foreground[TASK_RFC].c_str()); + tasks.push_back(task_names_foreground[TASK_SWUPDATE].c_str()); + tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); + } } - else +#endif + if (!isMaintenanceSuppressed) { tasks.push_back(task_names_foreground[TASK_RFC].c_str()); tasks.push_back(task_names_foreground[TASK_SWUPDATE].c_str()); tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); } -#else - tasks.push_back(task_names_foreground[TASK_RFC].c_str()); - tasks.push_back(task_names_foreground[TASK_SWUPDATE].c_str()); - tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); -#endif + std::unique_lock lck(m_callMutex); for (i = 0; i < static_cast(tasks.size()) && !m_abort_flag; i++) { @@ -559,7 +573,28 @@ namespace WPEFramework MM_LOGINFO("Worker Thread Completed"); } /* end of task_execution_thread() */ -#if defined(ENABLE_WHOAMI) + void MaintenanceManager::isWhoAmIEnabled() + { + std::string wai_prop_val; + if (Utils::readPropertyFile(DEVICE_PROP_FILE, WHOAMI_PROP_KEY, wai_prop_val)) + { + if (wai_prop_val == "true") + { + g_whoami_support_enabled = true; + MM_LOGINFO("Device is in WhoAmI mode"); + } + else + { + g_whoami_support_enabled = false; + MM_LOGINFO("Device is not in WhoAmI mode"); + } + } + else + { + MM_LOGERR("Failed to read %s property", WHOAMI_PROP_KEY); + } + } + /** * @brief Determines the device identity by querying the Security Manager. * @@ -637,7 +672,6 @@ namespace WPEFramework } } while (true); } -#endif /* end of ENABLE_WHOAMI */ /** * @brief Retrieves a handle to the specified Thunder plugin with authentication. @@ -1430,15 +1464,16 @@ namespace WPEFramework const string MaintenanceManager::Initialize(PluginHost::IShell *service) { + isWhoAmIEnabled(); ASSERT(service != nullptr); ASSERT(m_service == nullptr); ASSERT(timerid != nullptr); m_service = service; m_service->AddRef(); -#if defined(ENABLE_WHOAMI) - subscribeToDeviceInitializationEvent(); -#endif + if (g_whoami_support_enabled) { + subscribeToDeviceInitializationEvent(); + } #if defined(USE_IARMBUS) || defined(USE_IARM_BUS) InitializeIARM(); diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index 97e22857..bbc5fef5 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -196,6 +196,7 @@ namespace WPEFramework bool g_subscribed_for_nwevents = false; bool g_listen_to_deviceContextUpdate = false; bool g_subscribed_for_deviceContextUpdate = false; + bool g_whoami_support_enabled = false; std::mutex m_callMutex; std::mutex m_waiMutex; diff --git a/services.cmake b/services.cmake index 660c9891..cc7104e3 100644 --- a/services.cmake +++ b/services.cmake @@ -140,11 +140,6 @@ if(NET_DISABLE_NETSRVMGR_CHECK) add_definitions (-DNET_DISABLE_NETSRVMGR_CHECK) endif() -if (ENABLE_WHOAMI) - message("Enable WHOAMI") - add_definitions (-DENABLE_WHOAMI=ON) -endif() - if (ENABLE_RFC_MANAGER) message("Using binary for RFC Maintenance task") add_definitions (-DENABLE_RFC_MANAGER=ON) From 4b555b007592dacf721e4fe0075bb4cd448b0cea Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Wed, 21 May 2025 15:41:57 +0530 Subject: [PATCH 03/12] Update MaintenanceManager.cpp --- MaintenanceManager/MaintenanceManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index 3dfaba1d..d5375edc 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -578,7 +578,7 @@ namespace WPEFramework void MaintenanceManager::isWhoAmIEnabled() { std::string wai_prop_val; - if (Utils::readPropertyFile(DEVICE_PROP_FILE, WHOAMI_PROP_KEY, wai_prop_val)) + if (Utils::readPropertyFromFile(DEVICE_PROP_FILE, WHOAMI_PROP_KEY, wai_prop_val)) { if (wai_prop_val == "true") { From 4f88c84b01cc5c248f209e528c2b17da3319e5d6 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Sun, 8 Jun 2025 17:11:32 +0530 Subject: [PATCH 04/12] RDK-57914: Dynamic WhoAmI feature control for Maintenance Manager --- MaintenanceManager/MaintenanceManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index bbc5fef5..70f92442 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -114,7 +114,7 @@ typedef enum #define BASE_CLOCK CLOCK_BOOTTIME -#define WHOAMI_PROP_KEY "WHOAMI_ENABLED" +#define WHOAMI_PROP_KEY "WHOAMI_SUPPORT" #define DEVICE_PROP_FILE "/etc/device.properties" #define FOREGROUND_MODE "FOREGROUND" From 3d03e9170390e6ba8f6a5277973fc99678942cdc Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Wed, 11 Jun 2025 17:36:20 +0530 Subject: [PATCH 05/12] RDK-57914: Dynamic WhoAmI feature control for Maintenance Manager --- MaintenanceManager/MaintenanceManager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index d5375edc..72f5a430 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -382,6 +382,7 @@ namespace WPEFramework #if defined(SUPPRESS_MAINTENANCE) if (!g_whoami_support_enabled) { + MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); isMaintenanceSuppressed = true; bool skipFirmwareCheck = false; bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ @@ -403,6 +404,7 @@ namespace WPEFramework if (g_whoami_support_enabled) { + MM_LOGINFO("WHOAMI_SUPPORT is enabled\n"); if (UNSOLICITED_MAINTENANCE == g_maintenance_type) { string activation_status = checkActivatedStatus(); /* Device Activation Status Check */ @@ -432,6 +434,7 @@ namespace WPEFramework } else { + MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); if (!internetConnectStatus) { exitOnNoNetwork = true; @@ -1479,6 +1482,7 @@ namespace WPEFramework m_service = service; m_service->AddRef(); if (g_whoami_support_enabled) { + MM_LOGINFO("WHOAMI_SUPPORT is enabled\n"); subscribeToDeviceInitializationEvent(); } From d70f2b183ccb461fa71b02185428c8c3cd8305c0 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Tue, 24 Jun 2025 10:58:57 +0530 Subject: [PATCH 06/12] RDK-57914: Dynamic WhoAmI feature control for Maintenance Manager --- MaintenanceManager/MaintenanceManager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index 70f92442..38dad3df 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -197,6 +197,7 @@ namespace WPEFramework bool g_listen_to_deviceContextUpdate = false; bool g_subscribed_for_deviceContextUpdate = false; bool g_whoami_support_enabled = false; + bool g_suppress_maintenance_enabled = false; std::mutex m_callMutex; std::mutex m_waiMutex; From c9bcb6b4cb1db65e84a5d445aa578f5e8314bf95 Mon Sep 17 00:00:00 2001 From: Yogeswaran Date: Tue, 24 Jun 2025 05:57:26 +0000 Subject: [PATCH 07/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager Signed-off-by: Yogeswaran --- MaintenanceManager/MaintenanceManager.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index 72f5a430..c3de8c2a 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -350,7 +350,6 @@ namespace WPEFramework { int i = 0; string task = ""; - bool isMaintenanceSuppressed = false; bool internetConnectStatus = false; bool delayMaintenanceStarted = false; bool exitOnNoNetwork = false; @@ -379,11 +378,9 @@ namespace WPEFramework tasks.erase(tasks.begin(), tasks.end()); } -#if defined(SUPPRESS_MAINTENANCE) - if (!g_whoami_support_enabled) + if (!g_whoami_support_enabled && g_suppress_maintenance_enabled) { MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); - isMaintenanceSuppressed = true; bool skipFirmwareCheck = false; bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ /* we proceed with network check only if @@ -396,8 +393,7 @@ namespace WPEFramework internetConnectStatus = isDeviceOnline(); /* Network check */ } } -#endif - if (!isMaintenanceSuppressed) + else { internetConnectStatus = isDeviceOnline(); /* Network check */ } @@ -465,8 +461,7 @@ namespace WPEFramework MM_LOGINFO("Reboot_Pending :%s", g_is_reboot_pending.c_str()); MM_LOGINFO("%s", UNSOLICITED_MAINTENANCE == g_maintenance_type ? "---------------UNSOLICITED_MAINTENANCE--------------" : "=============SOLICITED_MAINTENANCE==============="); -#if defined(SUPPRESS_MAINTENANCE) - if (!g_whoami_support_enabled && isMaintenanceSuppressed) + if (!g_whoami_support_enabled && g_suppress_maintenance_enabled) { if (skipFirmwareCheck) { @@ -484,8 +479,7 @@ namespace WPEFramework tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); } } -#endif - if (!isMaintenanceSuppressed) + else { tasks.push_back(task_names_foreground[TASK_RFC].c_str()); tasks.push_back(task_names_foreground[TASK_SWUPDATE].c_str()); @@ -1485,6 +1479,9 @@ namespace WPEFramework MM_LOGINFO("WHOAMI_SUPPORT is enabled\n"); subscribeToDeviceInitializationEvent(); } +#if defined(SUPPRESS_MAINTENANCE) + g_suppress_maintenance_enabled = true; +#endif #if defined(USE_IARMBUS) || defined(USE_IARM_BUS) InitializeIARM(); From 6eedbaabb4b0363c90d68f1fa4cd070363af4ead Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Tue, 24 Jun 2025 12:30:50 +0530 Subject: [PATCH 08/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager --- MaintenanceManager/MaintenanceManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index c3de8c2a..8a6e5ac8 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -378,10 +378,10 @@ namespace WPEFramework tasks.erase(tasks.begin(), tasks.end()); } + bool skipFirmwareCheck = false; if (!g_whoami_support_enabled && g_suppress_maintenance_enabled) { MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); - bool skipFirmwareCheck = false; bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ /* we proceed with network check only if * "activation-connect", From 9835d5a061b1cd16c92ddee6033f6df37d6446e8 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:54:32 +0530 Subject: [PATCH 09/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager --- MaintenanceManager/MaintenanceManager.cpp | 62 ++++++++--------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index 59fb28ca..f7305ecc 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -381,7 +381,7 @@ namespace WPEFramework bool skipFirmwareCheck = false; if (!g_whoami_support_enabled && g_suppress_maintenance_enabled) { - MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); + MM_LOGINFO("WhoAmI feature is disabled and suppress maintenance is enabled"); bool activationStatus = getActivatedStatus(skipFirmwareCheck); /* Activation check */ /* we proceed with network check only if * "activation-connect", @@ -400,7 +400,7 @@ namespace WPEFramework if (g_whoami_support_enabled) { - MM_LOGINFO("WHOAMI_SUPPORT is enabled\n"); + MM_LOGINFO("WhoAmI feature is enabled"); if (UNSOLICITED_MAINTENANCE == g_maintenance_type) { string activation_status = checkActivatedStatus(); /* Device Activation Status Check */ @@ -430,7 +430,7 @@ namespace WPEFramework } else { - MM_LOGINFO("WHOAMI_SUPPORT is disabled\n"); + MM_LOGINFO("WhoAmI feature is disabled"); if (!internetConnectStatus) { exitOnNoNetwork = true; @@ -461,23 +461,14 @@ namespace WPEFramework MM_LOGINFO("Reboot_Pending :%s", g_is_reboot_pending.c_str()); MM_LOGINFO("%s", UNSOLICITED_MAINTENANCE == g_maintenance_type ? "---------------UNSOLICITED_MAINTENANCE--------------" : "=============SOLICITED_MAINTENANCE==============="); - if (!g_whoami_support_enabled && g_suppress_maintenance_enabled) + if (!g_whoami_support_enabled && g_suppress_maintenance_enabled && skipFirmwareCheck) { - if (skipFirmwareCheck) - { - /* set the task status of Firmware Download */ - SET_STATUS(g_task_status, SWUPDATE_SUCCESS); - SET_STATUS(g_task_status, SWUPDATE_COMPLETE); - /* Skip Firmware Download Task and add other tasks */ - tasks.push_back(task_names_foreground[TASK_RFC].c_str()); - tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); - } - else - { - tasks.push_back(task_names_foreground[TASK_RFC].c_str()); - tasks.push_back(task_names_foreground[TASK_SWUPDATE].c_str()); - tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); - } + /* set the task status of Firmware Download */ + SET_STATUS(g_task_status, SWUPDATE_SUCCESS); + SET_STATUS(g_task_status, SWUPDATE_COMPLETE); + /* Skip Firmware Download Task and add other tasks */ + tasks.push_back(task_names_foreground[TASK_RFC].c_str()); + tasks.push_back(task_names_foreground[TASK_LOGUPLOAD].c_str()); } else { @@ -574,26 +565,17 @@ namespace WPEFramework MM_LOGINFO("Worker Thread Completed"); } /* end of task_execution_thread() */ - void MaintenanceManager::isWhoAmIEnabled() + bool MaintenanceManager::isWhoAmIEnabled() { + bool wai_enabled = false; std::string wai_prop_val; - if (Utils::readPropertyFromFile(DEVICE_PROP_FILE, WHOAMI_PROP_KEY, wai_prop_val)) - { - if (wai_prop_val == "true") - { - g_whoami_support_enabled = true; - MM_LOGINFO("Device is in WhoAmI mode"); - } - else - { - g_whoami_support_enabled = false; - MM_LOGINFO("Device is not in WhoAmI mode"); - } - } - else - { + if (!Utils::readPropertyFromFile(DEVICE_PROP_FILE, WHOAMI_PROP_KEY, wai_prop_val)) { MM_LOGERR("Failed to read %s property", WHOAMI_PROP_KEY); + return wai_enabled; } + + wai_enabled = (wai_prop_val == "true"); + return wai_enabled; } #if defined(GTEST_ENABLE) @@ -1480,20 +1462,18 @@ namespace WPEFramework const string MaintenanceManager::Initialize(PluginHost::IShell *service) { - isWhoAmIEnabled(); ASSERT(service != nullptr); ASSERT(m_service == nullptr); ASSERT(timerid != nullptr); m_service = service; m_service->AddRef(); - if (g_whoami_support_enabled) { - MM_LOGINFO("WHOAMI_SUPPORT is enabled\n"); + if ((g_whoami_support_enabled = isWhoAmIEnabled())) { + MM_LOGINFO("WhoAmI feature is enabled"); subscribeToDeviceInitializationEvent(); + } else { + MM_LOGINFO("WhoAmI feature is disabled"); } -#if defined(SUPPRESS_MAINTENANCE) - g_suppress_maintenance_enabled = true; -#endif #if defined(USE_IARMBUS) || defined(USE_IARM_BUS) InitializeIARM(); From b0195a186c03deeab1874d14ff104e2a0be0c084 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Wed, 25 Jun 2025 13:55:29 +0530 Subject: [PATCH 10/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager --- MaintenanceManager/MaintenanceManager.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index 1cab2807..e411645e 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -204,8 +204,11 @@ namespace WPEFramework bool g_listen_to_deviceContextUpdate = false; bool g_subscribed_for_deviceContextUpdate = false; bool g_whoami_support_enabled = false; +#if defined(SUPPRESS_MAINTENANCE) + bool g_suppress_maintenance_enabled = true; +#else bool g_suppress_maintenance_enabled = false; - +#endif std::mutex m_callMutex; std::mutex m_waiMutex; std::mutex m_statusMutex; From 6a09e04aad1dd065df5bb9a2299bdb04838f97a3 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:04:50 +0530 Subject: [PATCH 11/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager --- MaintenanceManager/MaintenanceManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintenanceManager/MaintenanceManager.h b/MaintenanceManager/MaintenanceManager.h index e411645e..282f9ad4 100644 --- a/MaintenanceManager/MaintenanceManager.h +++ b/MaintenanceManager/MaintenanceManager.h @@ -237,7 +237,7 @@ namespace WPEFramework void deviceInitializationContextEventHandler(const JsonObject ¶meters); void startCriticalTasks(); bool checkNetwork(); - void isWhoAmIEnabled(); + bool isWhoAmIEnabled(); bool knowWhoAmI(string &activation_status); bool subscribeToDeviceInitializationEvent(); bool setDeviceInitializationContext(JsonObject joGetResult); From 04cf70ced0b52079591a331558a28750388c08d5 Mon Sep 17 00:00:00 2001 From: Yogeswaran K <166126056+yogeswaransky@users.noreply.github.com> Date: Wed, 25 Jun 2025 15:17:29 +0530 Subject: [PATCH 12/12] RDK-57914: Dynamic WhoAmI feature control for Manintenance Manager --- MaintenanceManager/MaintenanceManager.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/MaintenanceManager/MaintenanceManager.cpp b/MaintenanceManager/MaintenanceManager.cpp index f7305ecc..2f667547 100644 --- a/MaintenanceManager/MaintenanceManager.cpp +++ b/MaintenanceManager/MaintenanceManager.cpp @@ -578,7 +578,6 @@ namespace WPEFramework return wai_enabled; } -#if defined(GTEST_ENABLE) /** * @brief Determines the device identity by querying the Security Manager. * @@ -656,7 +655,6 @@ namespace WPEFramework } } while (true); } -#endif /* end of GTEST_ENABLE */ /** * @brief Retrieves a handle to the specified Thunder plugin with authentication.