pldmd: Remove hard coded effecter id

This commit removes the hard coded effecter id from the
dbus_to_host_effecter.json for Phyp to boot from standby
to runtime. The effecter id will be fetched from Host PDR
instead.

Change-Id: I1829c99557a0f1b89d88c58b3ddef6d7d58ed2f6
Signed-off-by: Sampa Misra <sampmisr@in.ibm.com>
diff --git a/common/utils.cpp b/common/utils.cpp
index 1dac2e5..74fcd06 100644
--- a/common/utils.cpp
+++ b/common/utils.cpp
@@ -395,7 +395,7 @@
 
 uint16_t findStateEffecterId(const pldm_pdr* pdrRepo, uint16_t entityType,
                              uint16_t entityInstance, uint16_t containerId,
-                             uint16_t stateSetId)
+                             uint16_t stateSetId, bool localOrRemote)
 {
     uint8_t* pdrData = nullptr;
     uint32_t pdrSize{};
@@ -404,7 +404,7 @@
     {
         record = pldm_pdr_find_record_by_type(pdrRepo, PLDM_STATE_EFFECTER_PDR,
                                               record, &pdrData, &pdrSize);
-        if (record)
+        if (record && (localOrRemote ^ pldm_pdr_record_is_remote(record)))
         {
             auto pdr = reinterpret_cast<pldm_state_effecter_pdr*>(pdrData);
             auto compositeEffecterCount = pdr->composite_effecter_count;
diff --git a/common/utils.hpp b/common/utils.hpp
index 8c5c4f5..4e702d8 100644
--- a/common/utils.hpp
+++ b/common/utils.hpp
@@ -294,12 +294,14 @@
  *  @param[in] entityInstance - entity instance number
  *  @param[in] containerId - container id
  *  @param[in] stateSetId - state set id
+ *  @param[in] localOrRemote - true for checking local repo and false for remote
+ *                             repo
  *
  *  @return uint16_t - the effecter id
  */
 uint16_t findStateEffecterId(const pldm_pdr* pdrRepo, uint16_t entityType,
                              uint16_t entityInstance, uint16_t containerId,
-                             uint16_t stateSetId);
+                             uint16_t stateSetId, bool localOrRemote);
 
 /** @brief Emit the sensor event signal
  *
diff --git a/configurations/host/dbus_to_host_effecter.json b/configurations/host/dbus_to_host_effecter.json
index dd95b17..b6c2c6b 100644
--- a/configurations/host/dbus_to_host_effecter.json
+++ b/configurations/host/dbus_to_host_effecter.json
@@ -3,7 +3,6 @@
         {
             "mctp_eid": 9,
             "effecter_info": {
-                "effecterID": 4,
                 "containerID": 0,
                 "entityType": 33,
                 "entityInstance": 0,
diff --git a/host-bmc/dbus_to_host_effecters.cpp b/host-bmc/dbus_to_host_effecters.cpp
index b2fc092..c59b62a 100644
--- a/host-bmc/dbus_to_host_effecters.cpp
+++ b/host-bmc/dbus_to_host_effecters.cpp
@@ -135,13 +135,15 @@
 
     if (effecterId == PLDM_INVALID_EFFECTER_ID)
     {
+        constexpr auto localOrRemote = false;
         effecterId = findStateEffecterId(
             pdrRepo, hostEffecterInfo[effecterInfoIndex].entityType,
             hostEffecterInfo[effecterInfoIndex].entityInstance,
             hostEffecterInfo[effecterInfoIndex].containerId,
             hostEffecterInfo[effecterInfoIndex]
                 .dbusInfo[dbusInfoIndex]
-                .state.stateSetId);
+                .state.stateSetId,
+            localOrRemote);
         if (effecterId == PLDM_INVALID_EFFECTER_ID)
         {
             std::cerr << "Effecter id not found in pdr repo \n";
diff --git a/test/libpldmresponder_pdr_effecter_test.cpp b/test/libpldmresponder_pdr_effecter_test.cpp
index 60181d6..a2a7288 100644
--- a/test/libpldmresponder_pdr_effecter_test.cpp
+++ b/test/libpldmresponder_pdr_effecter_test.cpp
@@ -200,11 +200,11 @@
     uint16_t containerId = 0;
     uint16_t stateSetId = 196;
     auto effecterId = findStateEffecterId(inPDRRepo, entityType, entityInstance,
-                                          containerId, stateSetId);
+                                          containerId, stateSetId, true);
     ASSERT_EQ(effecterId, 1);
     stateSetId = 300;
     effecterId = findStateEffecterId(inPDRRepo, entityType, entityInstance,
-                                     containerId, stateSetId);
+                                     containerId, stateSetId, true);
     ASSERT_EQ(effecterId, PLDM_INVALID_EFFECTER_ID);
     pldm_pdr_destroy(inPDRRepo);
 }