Implement PDR.FindStateEffecterPDR DBus API

This commit implements a DBus API defined at
https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-dbus-interfaces/+/31774
to find the stateEffecterPDR based on the entity ID
and stateSetID.

Tested: Unit tests and in witherspoon system
busctl call :1.187 /xyz/openbmc_project/pldm xyz.openbmc_project.PLDM.PDR FindStateEffecterPDR yqq 1 33 196
aay 1 29 1 0 0 0 1 11 0 0 19 0 0 0 1 0 33 0 0 0 0 0 0 0 0 0 1 196 0 1 6

busctl call :1.187 /xyz/openbmc_project/pldm xyz.openbmc_project.PLDM.PDR FindStateEffecterPDR yqq 1 31 129
aay 1 29 3 0 0 0 1 11 0 0 19 0 0 0 3 0 31 0 0 0 0 0 0 0 0 0 1 129 0 1 64

Change-Id: I5c15be5303b511465c36914f5b60a0957cd3857e
Signed-off-by: Pavithra Barithaya <pbaritha@in.ibm.com>
diff --git a/utils.hpp b/utils.hpp
index abf525b..0814de2 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -259,5 +259,17 @@
 PropertyValue jsonEntryToDbusVal(std::string_view type,
                                  const nlohmann::json& value);
 
+/** @brief Find State Effecter PDR
+ *  @param[in] tid - PLDM terminus ID.
+ *  @param[in] entityID - entity that can be associated with PLDM State set.
+ *  @param[in] stateSetId - value that identifies PLDM State set.
+ *  @param[in] repo - pointer to BMC's primary PDR repo.
+ *  @return array[array[uint8_t]] - StateEffecterPDRs
+ */
+std::vector<std::vector<uint8_t>> findStateEffecterPDR(uint8_t tid,
+                                                       uint16_t entityID,
+                                                       uint16_t stateSetId,
+                                                       const pldm_pdr* repo);
+
 } // namespace utils
 } // namespace pldm