platform-mc: startSensorPolling post PDR init

Move startSensorPolling after confirming PDR initialization of pldm
device to avoid missing the start sensor polling opportunity if GetPDR
fails initially and succeeds later.

Removed the redundant handling of addedTids for sensor polling, as
initTerminus now ensures all necessary termini are processed.

Change-Id: I4e090a0f3c5b0a7ce85b56f9f3f2c585e42b638f
Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>
diff --git a/platform-mc/manager.hpp b/platform-mc/manager.hpp
index 5654099..039d6f9 100644
--- a/platform-mc/manager.hpp
+++ b/platform-mc/manager.hpp
@@ -39,7 +39,7 @@
                      pldm::InstanceIdDb& instanceIdDb) :
         terminusManager(event, handler, instanceIdDb, termini, this,
                         pldm::BmcMctpEid),
-        platformManager(terminusManager, termini),
+        platformManager(terminusManager, termini, this),
         sensorManager(event, terminusManager, termini, this),
         eventManager(terminusManager, termini)
     {}
diff --git a/platform-mc/platform_manager.cpp b/platform-mc/platform_manager.cpp
index 9a053fc..4219b7d 100644
--- a/platform-mc/platform_manager.cpp
+++ b/platform-mc/platform_manager.cpp
@@ -1,5 +1,6 @@
 #include "platform_manager.hpp"
 
+#include "manager.hpp"
 #include "terminus_manager.hpp"
 
 #include <phosphor-logging/lg2.hpp>
@@ -109,6 +110,16 @@
                 "TID", tid, "ERROR", rc);
         }
         terminus->initialized = true;
+        if (manager)
+        {
+            manager->startSensorPolling(tid);
+        }
+        else
+        {
+            lg2::error(
+                "Cannot start sensor polling for TID: {TID} because the manager is not initialized.",
+                "TID", tid);
+        }
     }
 
     co_return PLDM_SUCCESS;
diff --git a/platform-mc/platform_manager.hpp b/platform-mc/platform_manager.hpp
index c555452..100c952 100644
--- a/platform-mc/platform_manager.hpp
+++ b/platform-mc/platform_manager.hpp
@@ -31,8 +31,8 @@
     ~PlatformManager() = default;
 
     explicit PlatformManager(TerminusManager& terminusManager,
-                             TerminiMapper& termini) :
-        terminusManager(terminusManager), termini(termini)
+                             TerminiMapper& termini, Manager* manager) :
+        terminusManager(terminusManager), termini(termini), manager(manager)
     {}
 
     /** @brief Initialize terminus which supports PLDM Type 2
@@ -187,6 +187,12 @@
 
     /** @brief Managed termini list */
     TerminiMapper& termini;
+
+    /**
+     * @brief Pointer to the Manager instance, used for sensor polling
+     *        and other platform-level PLDM operations.
+     */
+    Manager* manager;
 };
 } // namespace platform_mc
 } // namespace pldm
diff --git a/platform-mc/terminus_manager.cpp b/platform-mc/terminus_manager.cpp
index 0aacf33..c05d89e 100644
--- a/platform-mc/terminus_manager.cpp
+++ b/platform-mc/terminus_manager.cpp
@@ -216,10 +216,6 @@
         if (manager)
         {
             co_await manager->afterDiscoverTerminus();
-            for (const auto& tid : addedTids)
-            {
-                manager->startSensorPolling(tid);
-            }
         }
 
         queuedMctpInfos.pop();
diff --git a/platform-mc/test/event_manager_test.cpp b/platform-mc/test/event_manager_test.cpp
index 5ba9d80..f27f94e 100644
--- a/platform-mc/test/event_manager_test.cpp
+++ b/platform-mc/test/event_manager_test.cpp
@@ -25,7 +25,7 @@
                    std::chrono::seconds(1), 2, std::chrono::milliseconds(100)),
         terminusManager(event, reqHandler, instanceIdDb, termini, nullptr),
         eventManager(terminusManager, termini),
-        platformManager(terminusManager, termini)
+        platformManager(terminusManager, termini, nullptr)
     {}
 
     PldmTransport* pldmTransport = nullptr;
diff --git a/platform-mc/test/platform_manager_test.cpp b/platform-mc/test/platform_manager_test.cpp
index cf6567d..ef226f8 100644
--- a/platform-mc/test/platform_manager_test.cpp
+++ b/platform-mc/test/platform_manager_test.cpp
@@ -18,7 +18,7 @@
         reqHandler(pldmTransport, event, instanceIdDb, false,
                    std::chrono::seconds(1), 2, std::chrono::milliseconds(100)),
         mockTerminusManager(event, reqHandler, instanceIdDb, termini, nullptr),
-        platformManager(mockTerminusManager, termini)
+        platformManager(mockTerminusManager, termini, nullptr)
     {}
 
     PldmTransport* pldmTransport = nullptr;