pldmtool: Display GetPDR state set ID possible state names in an array

Note: Also, displays OEM state set and their possible states.
      Created new oem_ibm_state_set.hpp for OEM IBM PDR's possible states.

Example:

{
    "nextRecordHandle": 115,
    "responseCount": 27,
    "recordHandle": 114,
    "PDRHeaderVersion": 1,
    "PDRType": "State Sensor PDR",
    "recordChangeNumber": 0,
    "dataLength": 17,
    "PLDMTerminusHandle": 0,
    "sensorID": 93,
    "entityType": "[Physical] Unspecified",
    "entityInstanceNumber": 0,
    "containerID": 0,
    "sensorInit": "noInit",
    "sensorAuxiliaryNamesPDR": false,
    "compositeSensorCount": 1,
    "stateSetID[0]": "Identify State(17)",
    "possibleStatesSize[0]": 1,
    "possibleStates[0]": [
        "Identify State Unasserted(1)",
        "Identify State Asserted(2)"
    ]
}

{
    "nextRecordHandle": 125,
    "responseCount": 27,
    "recordHandle": 124,
    "PDRHeaderVersion": 1,
    "PDRType": "State Sensor PDR",
    "recordChangeNumber": 0,
    "dataLength": 17,
    "PLDMTerminusHandle": 0,
    "sensorID": 103,
    "entityType": "[Physical] System chassis (main enclosure)",
    "entityInstanceNumber": 1,
    "containerID": 0,
    "sensorInit": "noInit",
    "sensorAuxiliaryNamesPDR": false,
    "compositeSensorCount": 1,
    "stateSetID[0]": "Operational Fault Status(10)",
    "possibleStatesSize[0]": 1,
    "possibleStates[0]": [
        "Normal(1)",
        "Stressed(2)"
    ]
}

{
    "nextRecordHandle": 249,
    "responseCount": 30,
    "recordHandle": 248,
    "PDRHeaderVersion": 1,
    "PDRType": "State Effecter PDR",
    "recordChangeNumber": 0,
    "dataLength": 16,
    "PLDMTerminusHandle": 1,
    "effecterID": 116,
    "entityType": "[Physical] OEM IBM Firmware Update",
    "entityInstanceNumber": 1,
    "containerID": 0,
    "effecterSemanticID": 0,
    "effecterInit": "noInit",
    "effecterDescriptionPDR": false,
    "compositeEffecterCount": 1,
    "stateSetID[0]": "OEM IBM Boot State(32769)",
    "possibleStatesSize[0]": 2,
    "possibleStates[0]": [
        "P Side(1)",
        "T side(2)"
    ]
}

Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
Change-Id: Iae44b14dab071683c86fd65c95e984b9287eca80
diff --git a/pldmtool/oem/ibm/oem_ibm_state_set.hpp b/pldmtool/oem/ibm/oem_ibm_state_set.hpp
new file mode 100644
index 0000000..a804ba1
--- /dev/null
+++ b/pldmtool/oem/ibm/oem_ibm_state_set.hpp
@@ -0,0 +1,105 @@
+#include "oem/ibm/libpldmresponder/oem_ibm_handler.hpp"
+
+using namespace pldm::responder::oem_ibm_platform;
+
+/** @brief PLDM OEM State Set range as per DSP0249_1.1.0 specification
+ */
+enum pldm_oem_state_set_id_codes
+{
+    PLDM_OEM_STATE_SET_START = 32768,
+    PLDM_OEM_STATE_SET_END = 65535,
+
+};
+
+/** @brief PLDM OEM IBM Code Update possible state set values
+ */
+enum pldm_oem_ibm_cu_state_set_values
+{
+    OEM_IBM_STATE_SET_CU_START = 1,
+    OEM_IBM_STATE_SET_CU_END = 2,
+    OEM_IBM_STATE_SET_CU_FAIL = 3,
+    OEM_IBM_STATE_SET_CU_ABORT = 4,
+    OEM_IBM_STATE_SET_CU_ACCEPT = 5,
+    OEM_IBM_STATE_SET_CU_REJECT = 6,
+};
+
+/** @brief PLDM OEM IBM Verification possible state set values
+ */
+enum pldm_oem_ibm_verification_state_set_values
+{
+    OEM_IBM_STATE_SET_VERFICATION_VALID = 0,
+    OEM_IBM_STATE_SET_VERFICATION_ENTITLEMENT_FAIL = 1,
+    OEM_IBM_STATE_SET_VERFICATION_BANNED_PLATFORM_FAIL = 2,
+    OEM_IBM_STATE_SET_VERFICATION_MIN_MIF_FAIL = 4,
+};
+
+/** @brief PLDM OEM IBM system power state possible state set values
+ */
+enum pldm_oem_ibm_sys_power_state_set_values
+{
+    OEM_IBM_STATE_SET_SYS_PWR_STATE_RECYCLE_HARD = 1,
+};
+
+/** @brief PLDM OEM IBM boot state possible state set values
+ */
+enum pldm_oem_ibm_boot_state_set_values
+{
+    OEM_IBM_STATE_SET_BOOT_STATE_P_SIDE = 1,
+    OEM_IBM_STATE_SET_BOOT_STATE_T_SIDE = 2,
+};
+
+/** @brief Map for PLDM OEM IBM Entity Types
+ */
+extern const std::map<uint8_t, std::string> OemIBMEntityType{
+    {PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE, "OEM IBM Firmware Update"},
+    {PLDM_OEM_ENTITY_TYPE_START, "OEM IBM Entity Type Start"},
+    {PLDM_OEM_ENTITY_TYPE_END, "OEM IBM Entity Type End"},
+};
+
+/** @brief Map for PLDM OEM IBM State Sets
+ */
+extern const std::map<uint16_t, std::string> OemIBMstateSet{
+    {PLDM_OEM_IBM_FIRMWARE_UPDATE_STATE, "OEM IBM Firmware Update State"},
+    {PLDM_OEM_IBM_BOOT_STATE, "OEM IBM Boot State"},
+    {PLDM_OEM_IBM_VERIFICATION_STATE, "OEM IBM Verification State"},
+    {PLDM_OEM_IBM_SYSTEM_POWER_STATE, "OEM IBM System Power State"}};
+
+/** @brief Map for PLDM OEM IBM firmware update possible state values
+ */
+extern const std::map<uint8_t, std::string> SetOemIBMFWUpdateStateValues{
+    {OEM_IBM_STATE_SET_CU_START, "Start"},
+    {OEM_IBM_STATE_SET_CU_END, "End"},
+    {OEM_IBM_STATE_SET_CU_FAIL, "Fail"},
+    {OEM_IBM_STATE_SET_CU_ABORT, "Abort"},
+    {OEM_IBM_STATE_SET_CU_ACCEPT, "Accept"},
+    {OEM_IBM_STATE_SET_CU_REJECT, "Reject"}};
+
+/** @brief Map for PLDM OEM IBM verification state possible state values
+ */
+extern const std::map<uint8_t, std::string> SetOemIBMVerStateValues{
+    {OEM_IBM_STATE_SET_VERFICATION_VALID, "Valid"},
+    {OEM_IBM_STATE_SET_VERFICATION_ENTITLEMENT_FAIL, "Entitlement Fail"},
+    {OEM_IBM_STATE_SET_VERFICATION_BANNED_PLATFORM_FAIL,
+     "Banned Platform Fail"},
+    {OEM_IBM_STATE_SET_VERFICATION_MIN_MIF_FAIL, "Minimum MIF Fail"}};
+
+/** @brief Map for PLDM OEM IBM systerm power state possible state values
+ */
+extern const std::map<uint8_t, std::string> SetOemIBMSysPowerStatesValues{
+    {OEM_IBM_STATE_SET_SYS_PWR_STATE_RECYCLE_HARD, "Power Cycle Hard"}};
+
+/** @brief Map for PLDM OEM IBM boot state possible state values
+ */
+extern const std::map<uint8_t, std::string> SetOemIBMBootStateValues{
+    {OEM_IBM_STATE_SET_BOOT_STATE_P_SIDE, "P Side"},
+    {OEM_IBM_STATE_SET_BOOT_STATE_T_SIDE, "T side"}};
+
+/** @brief Map for populating PLDM OEM IBM state sets with possible state values
+ */
+extern const std::map<uint16_t, const std::map<uint8_t, std::string>>
+    populateOemIBMStateMaps{
+        {PLDM_OEM_IBM_VERIFICATION_STATE, SetOemIBMVerStateValues},
+        {PLDM_OEM_IBM_SYSTEM_POWER_STATE, SetOemIBMSysPowerStatesValues},
+        {PLDM_OEM_IBM_BOOT_STATE, SetOemIBMBootStateValues},
+        {PLDM_OEM_IBM_FIRMWARE_UPDATE_STATE, SetOemIBMFWUpdateStateValues},
+    };