pdr: Update D-Bus mapping structure

For most PDR types, the D-Bus object structure(paths, interfaces, and
properties) should be defined in the JSON file instead of hard-coded.

Tested with JSON files:
 https://gist.github.com/lxwinspur/2c3fd68cdb35e06480c4a5f7890e3a06#file-effecter_pdr-json.

     pldmtool platform GetPDR -d 1
     Encode request successfully
     Request Message:
     08 01 80 02 51 01 00 00 00 00 00 00 00 01 80 00 00 00
     Success in creating the socket : RC = 3
     Success in connecting to socket : RC = 0
     Success in sending message type as pldm to mctp : RC = 0
     Write to socket successful : RC = 18
     Total length:18
     Loopback response message:
     08 01 80 02 51 01 00 00 00 00 00 00 00 01 80 00 00 00
     On first recv(),response == request : RC = 0
     Total length: 46
     Shutdown Socket successful :  RC = 0
     Response Message:
     08 01 00 02 51 00 02 00 00 00 00 00 00 00 01 1d 00 01 00 00 00 01 0b 00 00 13 00 00 00 01 00 21 00 00 00 00 00 00 00 00 00 01 c4 00 01 06
     Parsed Response Msg:
     nextRecordHandle: 2
     responseCount: 29
     recordHandle: 1
     PDRHeaderVersion: 1
     PDRType: 11
     recordChangeNumber: 0
     dataLength: 19
     PLDMTerminusHandle: 0
     effecterID: 1
     entityType: 33
     entityInstanceNumber: 0
     containerID: 0
     effecterSemanticID: 0
     effecterInit: 0
     effecterDescriptionPDR: false
     compositeEffecterCount: 1
     stateSetID: 196
     possibleStatesSize: 1
     possibleStates: 6

Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: Ifc0cd1540b08e9b73e03d99d71a0980ef6353e72
diff --git a/libpldmresponder/pdr_utils.hpp b/libpldmresponder/pdr_utils.hpp
index 0c3f634..1f03863 100644
--- a/libpldmresponder/pdr_utils.hpp
+++ b/libpldmresponder/pdr_utils.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "utils.hpp"
+
 #include <stdint.h>
 
 #include <filesystem>
@@ -43,6 +45,12 @@
 using Type = uint8_t;
 using Json = nlohmann::json;
 using RecordHandle = uint32_t;
+using State = uint8_t;
+using PossibleValues = std::vector<uint8_t>;
+
+/** @brief Map of DBus property State to attribute value
+ */
+using StatestoDbusVal = std::map<State, pldm::utils::PropertyValue>;
 
 /** @brief Parse PDR JSON file and output Json object
  *
@@ -68,6 +76,18 @@
     return Json::parse(jsonFile);
 }
 
+/** @brief Populate the mapping between D-Bus property stateId and attribute
+ *          value for the effecter PDR enumeration attribute.
+ *
+ *  @param[in] type - type of the D-Bus property
+ *  @param[in] dBusValues - json array of D-Bus property values
+ *  @param[in] pv - Possible values for the effecter PDR enumeration attribute
+ *
+ *  @return StatestoDbusVal - Map of D-Bus property stateId to attribute value
+ */
+StatestoDbusVal populateMapping(const std::string& type, const Json& dBusValues,
+                                const PossibleValues& pv);
+
 /**
  *  @class RepoInterface
  *