pldmtool: Add state_set_id argument to GetStateSensorReadings

Support parsing state set values in the GetStateSensorReadings command
response by passing state_set_id argument.

Usage:
```
 # pldmtool platform GetStateSensorReadings --help
get the state sensor readings
Usage: pldmtool platform GetStateSensorReadings [OPTIONS]

Options:
  ...
  -s,--state_set_id UINT      State Set ID that should be used for data
                              interpretation
```

Parsing example before:
```
~# pldmtool platform GetStateSensorReadings \
                       --sensor_id=203 \
                       --rearm=0 \
                       -m 10
{
    "compositeSensorCount": 1,
    "sensorOpState[0]": "Sensor Enabled",
    "presentState[0]": "2",
    "previousState[0]": "0",
    "eventState[0]": "2"
}
```

After:
```
~# pldmtool platform GetStateSensorReadings \
                       --sensor_id=203 \
                       --rearm=0 -m 10 \
                       --state_set_id 33
{
    "compositeSensorCount": 1,
    "sensorOpState[0]": "Sensor Enabled",
    "presentState[0]": "Disconnected(2)",
    "previousState[0]": "0",
    "eventState[0]": "Disconnected(2)"
}
```

Change-Id: Id3002086cc6429bb0df2d53c300ced6165722c8f
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
diff --git a/pldmtool/pldm_platform_cmd.cpp b/pldmtool/pldm_platform_cmd.cpp
index 75333d3..67491d9 100644
--- a/pldmtool/pldm_platform_cmd.cpp
+++ b/pldmtool/pldm_platform_cmd.cpp
@@ -132,6 +132,274 @@
     }
 };
 
+static const std::map<uint8_t, std::string> setThermalTrip{
+    {PLDM_STATE_SET_THERMAL_TRIP_STATUS_NORMAL, "Normal"},
+    {PLDM_STATE_SET_THERMAL_TRIP_STATUS_THERMAL_TRIP, "Thermal Trip"}};
+
+static const std::map<uint8_t, std::string> setIdentifyState{
+    {PLDM_STATE_SET_IDENTIFY_STATE_UNASSERTED, "Identify State Unasserted"},
+    {PLDM_STATE_SET_IDENTIFY_STATE_ASSERTED, "Identify State Asserted"}};
+
+static const std::map<uint8_t, std::string> setBootProgressState{
+    {PLDM_STATE_SET_BOOT_PROG_STATE_NOT_ACTIVE, "Boot Not Active"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_COMPLETED, "Boot Completed"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_MEM_INITIALIZATION,
+     "Memory Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_HARD_DISK_INITIALIZATION,
+     "Hard-Disk Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_SEC_PROC_INITIALIZATION,
+     "Secondary Processor(s) Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_USER_AUTHENTICATION, "User Authentication"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_USER_INITIATED_SYSTEM_SETUP,
+     "User-Initiated System Setup"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_USB_RESOURCE_CONFIG,
+     "USB Resource Configuration"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_PCI_RESOURCE_CONFIG,
+     "PCI Resource Configuration"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_OPTION_ROM_INITIALIZATION,
+     "Option ROM Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_VIDEO_INITIALIZATION,
+     "Video Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_CACHE_INITIALIZATION,
+     "Cache Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_SM_BUS_INITIALIZATION,
+     "SM Bus Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_KEYBOARD_CONTROLLER_INITIALIZATION,
+     "Keyboard Controller Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_EC_MC_INITIALIZATION,
+     "Embedded Controller/Management Controller Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_DOCKING_STATION_ATTACHEMENT,
+     "Docking Station Attachment"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_ENABLING_DOCKING_STATION,
+     "Enabling Docking Station"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_DOCKING_STATION_EJECTION,
+     "Docking Station Ejection"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_DISABLING_DOCKING_STATION,
+     "Disabling Docking Station"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_OSSTART,
+     "Calling Operating System Wake-Up Vector"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_STARTING_OP_SYS,
+     "Starting Operating System Boot Process"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_BASE_BOARD_INITIALIZATION,
+     "Baseboard or Motherboard Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_FLOPPY_INITIALIZATION,
+     "Floppy Initialization"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_KEYBOARD_TEST, "Keyboard Test"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_POINTING_DEVICE_TEST,
+     "Pointing Device Test"},
+    {PLDM_STATE_SET_BOOT_PROG_STATE_PRIMARY_PROC_INITIALIZATION,
+     "Primary Processor Initialization"}};
+
+static const std::map<uint8_t, std::string> setOpFaultStatus{
+    {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_NORMAL, "Normal"},
+    {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_ERROR, "Error"},
+    {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_NON_RECOVERABLE_ERROR,
+     "Non Recoverable Error"}};
+
+static const std::map<uint8_t, std::string> setSysPowerState{
+    {PLDM_STATE_SET_SYS_POWER_STATE_ON, "On"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_HIBERNATE, "Hibernate (off-soft)"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_SLEEP_LIGHT, "Sleep – Light"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_SLEEP_DEEP, "Sleep – Deep"},
+    {PLDM_STATE_SET_SYS_POWER_CYCLE_SOFT, "Power Cycle Soft"},
+    {PLDM_STATE_SET_SYS_POWER_CYCLE_HARD, "Power Cycle Hard"},
+    {PLDM_STATE_SET_SYS_POWER_CYCLE_OFF_SOFT_GRACEFUL,
+     "Power Cycle Off-Soft Graceful"},
+    {PLDM_STATE_SET_SYS_POWER_CYCLE_OFF_HARD_GRACEFUL,
+     "Power Cycle Off-Hard Graceful"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL, "Off-Soft Graceful"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_OFF_HARD_GRACEFUL, "Off-Hard Graceful"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_MASTER_BUS_RESET, "Master Bus Reset"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_MASTER_BUS_RESET_GRACEFUL,
+     "Master Bus Reset (Graceful)"},
+    {PLDM_STATE_SET_SYS_POWER_STATE_NMI, "Diagnostic Interrupt (NMI)"}};
+
+static const std::map<uint8_t, std::string> setSWTerminationStatus{
+    {PLDM_SW_TERM_NORMAL, "Normal"},
+    {PLDM_SW_TERM_SOFTWARE_TERMINATION_DETECTED,
+     "Software Termination Detected"},
+    {PLDM_SW_TERM_CRITICAL_STOP_DURING_LOAD_INITIALIZATION,
+     "Critical Stop during Load/Initialization"},
+    {PLDM_SW_TERM_RUN_TIME_CRITICAL_STOP, "Run-time Critical Stop"},
+    {PLDM_SW_TERM_GRACEFUL_SHUTDOWN_REQUESTED, "Graceful Shutdown Requested"},
+    {PLDM_SW_TERM_GRACEFUL_RESTART_REQUESTED, "Graceful Restart Requested"},
+    {PLDM_SW_TERM_GRACEFUL_SHUTDOWN, "Graceful Shutdown"},
+    {PLDM_SW_TERM_TERMINATION_REQUEST_FAILED, "Termination Request Failed"}};
+
+static const std::map<uint8_t, std::string> setAvailability{
+    {PLDM_STATE_SET_AVAILABILITY_ENABLED, "Enabled"},
+    {PLDM_STATE_SET_AVAILABILITY_DISABLED, "Disabled"},
+    {PLDM_STATE_SET_AVAILABILITY_SHUTDOWN, "Shutdown"},
+    {PLDM_STATE_SET_AVAILABILITY_OFFLINE, "Offline"},
+    {PLDM_STATE_SET_AVAILABILITY_IN_TEST, "In Test"},
+    {PLDM_STATE_SET_AVAILABILITY_DEFERRED, "Deferred"},
+    {PLDM_STATE_SET_AVAILABILITY_QUIESCENT, "Quiescent"},
+    {PLDM_STATE_SET_AVAILABILITY_REBOOTING, "Rebooting"},
+    {PLDM_STATE_SET_AVAILABILITY_RESETTING, "Resetting"},
+    {PLDM_STATE_SET_AVAILABILITY_FAILED, "Failed"},
+    {PLDM_STATE_SET_AVAILABILITY_NOT_INSTALLED, "Not Installed"},
+    {PLDM_STATE_SET_AVAILABILITY_POWER_SAVE_MODE, "Power Save Mode"},
+    {PLDM_STATE_SET_AVAILABILITY_PAUSED, "Paused"},
+    {PLDM_STATE_SET_AVAILABILITY_SHUTTING_DOWN, "Shutting Down"},
+    {PLDM_STATE_SET_AVAILABILITY_STARTING, "Starting"},
+    {PLDM_STATE_SET_AVAILABILITY_NOT_RESPONDING, "Not Responding"}};
+
+static const std::map<uint8_t, std::string> setPredictiveCondition{
+    {PLDM_STATE_SET_PREDICTIVE_CONDITION_NORMAL, "Normal"},
+    {PLDM_STATE_SET_PREDICTIVE_CONDITION_PREDICTIVE_FAILURE,
+     "Predictive Failure"}};
+
+static const std::map<uint8_t, std::string> setOperationalStressStatus{
+    {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS_NORMAL, "Normal"},
+    {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS_STRESSED, "Stressed"}};
+
+static const std::map<uint8_t, std::string> setPresence{
+    {PLDM_STATE_SET_PRESENCE_PRESENT, "Present"},
+    {PLDM_STATE_SET_PRESENCE_NOT_PRESENT, "Not Present"}};
+
+static const std::map<uint8_t, std::string> setConfigurationState{
+    {PLDM_STATE_SET_CONFIGURATION_STATE_VALID_CONFIGURATION,
+     "Valid Configuration"},
+    {PLDM_STATE_SET_CONFIGURATION_STATE_INVALID_CONFIGURATION,
+     "Invalid Configuration"},
+    {PLDM_STATE_SET_CONFIGURATION_STATE_NOT_CONFIGURED, "Not Configured"},
+    {PLDM_STATE_SET_CONFIGURATION_STATE_MISSING_CONFIGURATION,
+     "Missing Configuration"}};
+
+static const std::map<uint8_t, std::string> setChangedConfiguration{
+    {PLDM_STATE_SET_CHANGED_CONFIGURATION_NORMAL, "Normal"},
+    {PLDM_STATE_SET_CHANGED_CONFIGURATION_CONFIGURATION_CHANGE_DETECTED,
+     "Configuration Change Detected"}};
+
+static const std::map<uint8_t, std::string> setVersion{
+    {PLDM_STATE_SET_VERSION_NORMAL, "Normal"},
+    {PLDM_STATE_SET_VERSION_VERSION_CHANGE_DETECTED_COMPATIBLE,
+     "Version Change Detected – Compatible"},
+    {PLDM_STATE_SET_VERSION_VERSION_CHANGE_DETECTED_INCOMPATIBLE,
+     "Version Change Detected – Incompatible"},
+    {PLDM_STATE_SET_VERSION_VERSION_CHANGE_PENDING, "Version Change Pending"}};
+
+static const std::map<uint8_t, std::string> setLinkState{
+    {PLDM_STATE_SET_LINK_STATE_CONNECTED, "Connected"},
+    {PLDM_STATE_SET_LINK_STATE_DISCONNECTED, "Disconnected"}};
+
+static const std::map<uint8_t, std::string> setCommunicationLeashStatus{
+    {PLDM_STATE_SET_COMMUNICATION_LEASH_STATUS_LEASH_CONNECTED,
+     "Leash Connected"},
+    {PLDM_STATE_SET_COMMUNICATION_LEASH_STATUS_LEASH_DISCONNECTED,
+     "Leash Disconnected"}};
+
+static const std::map<uint8_t, std::string> setBootRestartCause{
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_POWERED_UP, "Powered Up"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_HARD_RESET, "Hard Reset"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_WARM_RESET, "Warm Reset"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_MANUAL_HARD_RESET, "Manual Hard Reset"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_MANUAL_WARM_RESET, "Manual Warm Reset"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_SYSTEM_RESTART, "System Restart"},
+    {PLDM_STATE_SET_BOOT_RESTART_CAUSE_WATCHDOG_TIMEOUT, "Watchdog Timeout"}};
+
+static const std::map<uint8_t, std::string> setHealthState{
+    {PLDM_STATE_SET_HEALTH_STATE_NORMAL, "Normal"},
+    {PLDM_STATE_SET_HEALTH_STATE_NON_CRITICAL, "Non-Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_CRITICAL, "Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_FATAL, "Fatal"},
+    {PLDM_STATE_SET_HEALTH_STATE_UPPER_NON_CRITICAL, "Upper Non-Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_LOWER_NON_CRITICAL, "Lower Non-Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_UPPER_CRITICAL, "Upper Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_LOWER_CRITICAL, "Lower Critical"},
+    {PLDM_STATE_SET_HEALTH_STATE_UPPER_FATAL, "Upper Fatal"},
+    {PLDM_STATE_SET_HEALTH_STATE_LOWER_FATAL, "Lower Fatal"}};
+
+static const std::map<uint8_t, std::string> setOperationalRunningState{
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STARTING, "Starting"},
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STOPPING, "Stopping"},
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STOPPED, "Stopped"},
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_IN_SERVICE, "In Service"},
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_ABORTED, "Aborted"},
+    {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_DORMANT, "Dormant"}};
+
+static const std::map<uint8_t, std::string> setPowerDeviceState{
+    {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_UNKNOWN, "Unknown"},
+    {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_FULLY_ON, "Fully-On"},
+    {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_INTERMEDIATE_1,
+     "Intermediate State-1"},
+    {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_INTERMEDIATE_2,
+     "Intermediate State-2"},
+    {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_OFF, "Off"}};
+
+static const std::map<uint8_t, std::string> setACPIPowerState{
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S0, "S0"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S1, "S1"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S2, "S2"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S3, "S3"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S4, "S4"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_S5, "S5"},
+    {PLDM_STATE_SET_ACPI_POWER_STATE_G3, "G3"}};
+
+static const std::map<uint16_t, const std::map<uint8_t, std::string>>
+    populatePStateMaps{
+        {PLDM_STATE_SET_THERMAL_TRIP, setThermalTrip},
+        {PLDM_STATE_SET_IDENTIFY_STATE, setIdentifyState},
+        {PLDM_STATE_SET_BOOT_PROGRESS, setBootProgressState},
+        {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS, setOpFaultStatus},
+        {PLDM_STATE_SET_SYSTEM_POWER_STATE, setSysPowerState},
+        {PLDM_STATE_SET_SW_TERMINATION_STATUS, setSWTerminationStatus},
+        {PLDM_STATE_SET_AVAILABILITY, setAvailability},
+        {PLDM_STATE_SET_PREDICTIVE_CONDITION, setPredictiveCondition},
+        {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS, setOperationalStressStatus},
+        {PLDM_STATE_SET_PRESENCE, setPresence},
+        {PLDM_STATE_SET_CONFIGURATION_STATE, setConfigurationState},
+        {PLDM_STATE_SET_CHANGED_CONFIGURATION, setChangedConfiguration},
+        {PLDM_STATE_SET_VERSION, setVersion},
+        {PLDM_STATE_SET_LINK_STATE, setLinkState},
+        {PLDM_STATE_SET_COMM_LEASH_STATUS, setCommunicationLeashStatus},
+        {PLDM_STATE_SET_BOOT_RESTART_CAUSE, setBootRestartCause},
+        {PLDM_STATE_SET_HEALTH_STATE, setHealthState},
+        {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS, setOperationalRunningState},
+        {PLDM_STATE_SET_DEVICE_POWER_STATE, setPowerDeviceState},
+        {PLDM_STATE_SET_ACPI_POWER_STATE, setACPIPowerState},
+    };
+
+std::vector<std::string> getStateSetPossibleStateNames(
+    uint16_t stateId, const std::vector<uint8_t>& value)
+{
+    std::vector<std::string> data{};
+
+    for (const auto& s : value)
+    {
+        std::map<uint8_t, std::string> stateNameMaps;
+        auto pstr = std::to_string(s);
+
+#ifdef OEM_IBM
+        if (stateId >= PLDM_OEM_STATE_SET_ID_START &&
+            stateId < PLDM_OEM_STATE_SET_ID_END)
+        {
+            if (populateOemIBMStateMaps.contains(stateId))
+            {
+                const std::map<uint8_t, std::string> stateNames =
+                    populateOemIBMStateMaps.at(stateId);
+                stateNameMaps.insert(stateNames.begin(), stateNames.end());
+            }
+        }
+#endif
+        if (populatePStateMaps.contains(stateId))
+        {
+            const std::map<uint8_t, std::string> stateNames =
+                populatePStateMaps.at(stateId);
+            stateNameMaps.insert(stateNames.begin(), stateNames.end());
+        }
+        if (stateNameMaps.contains(s))
+        {
+            data.push_back(stateNameMaps.at(s) + "(" + pstr + ")");
+        }
+        else
+        {
+            data.push_back(pstr);
+        }
+    }
+    return data;
+}
+
 class GetPDR : public CommandInterface
 {
   public:
@@ -687,247 +955,6 @@
         {PLDM_OEM_PDR, "OEM PDR"},
     };
 
-    static inline const std::map<uint8_t, std::string> setThermalTrip{
-        {PLDM_STATE_SET_THERMAL_TRIP_STATUS_NORMAL, "Normal"},
-        {PLDM_STATE_SET_THERMAL_TRIP_STATUS_THERMAL_TRIP, "Thermal Trip"}};
-
-    static inline const std::map<uint8_t, std::string> setIdentifyState{
-        {PLDM_STATE_SET_IDENTIFY_STATE_UNASSERTED, "Identify State Unasserted"},
-        {PLDM_STATE_SET_IDENTIFY_STATE_ASSERTED, "Identify State Asserted"}};
-
-    static inline const std::map<uint8_t, std::string> setBootProgressState{
-        {PLDM_STATE_SET_BOOT_PROG_STATE_NOT_ACTIVE, "Boot Not Active"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_COMPLETED, "Boot Completed"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_MEM_INITIALIZATION,
-         "Memory Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_HARD_DISK_INITIALIZATION,
-         "Hard-Disk Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_SEC_PROC_INITIALIZATION,
-         "Secondary Processor(s) Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_USER_AUTHENTICATION,
-         "User Authentication"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_USER_INITIATED_SYSTEM_SETUP,
-         "User-Initiated System Setup"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_USB_RESOURCE_CONFIG,
-         "USB Resource Configuration"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_PCI_RESOURCE_CONFIG,
-         "PCI Resource Configuration"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_OPTION_ROM_INITIALIZATION,
-         "Option ROM Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_VIDEO_INITIALIZATION,
-         "Video Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_CACHE_INITIALIZATION,
-         "Cache Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_SM_BUS_INITIALIZATION,
-         "SM Bus Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_KEYBOARD_CONTROLLER_INITIALIZATION,
-         "Keyboard Controller Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_EC_MC_INITIALIZATION,
-         "Embedded Controller/Management Controller Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_DOCKING_STATION_ATTACHEMENT,
-         "Docking Station Attachment"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_ENABLING_DOCKING_STATION,
-         "Enabling Docking Station"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_DOCKING_STATION_EJECTION,
-         "Docking Station Ejection"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_DISABLING_DOCKING_STATION,
-         "Disabling Docking Station"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_OSSTART,
-         "Calling Operating System Wake-Up Vector"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_STARTING_OP_SYS,
-         "Starting Operating System Boot Process"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_BASE_BOARD_INITIALIZATION,
-         "Baseboard or Motherboard Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_FLOPPY_INITIALIZATION,
-         "Floppy Initialization"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_KEYBOARD_TEST, "Keyboard Test"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_POINTING_DEVICE_TEST,
-         "Pointing Device Test"},
-        {PLDM_STATE_SET_BOOT_PROG_STATE_PRIMARY_PROC_INITIALIZATION,
-         "Primary Processor Initialization"}};
-
-    static inline const std::map<uint8_t, std::string> setOpFaultStatus{
-        {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_NORMAL, "Normal"},
-        {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_ERROR, "Error"},
-        {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS_NON_RECOVERABLE_ERROR,
-         "Non Recoverable Error"}};
-
-    static inline const std::map<uint8_t, std::string> setSysPowerState{
-        {PLDM_STATE_SET_SYS_POWER_STATE_ON, "On"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_HIBERNATE, "Hibernate (off-soft)"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_SLEEP_LIGHT, "Sleep – Light"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_SLEEP_DEEP, "Sleep – Deep"},
-        {PLDM_STATE_SET_SYS_POWER_CYCLE_SOFT, "Power Cycle Soft"},
-        {PLDM_STATE_SET_SYS_POWER_CYCLE_HARD, "Power Cycle Hard"},
-        {PLDM_STATE_SET_SYS_POWER_CYCLE_OFF_SOFT_GRACEFUL,
-         "Power Cycle Off-Soft Graceful"},
-        {PLDM_STATE_SET_SYS_POWER_CYCLE_OFF_HARD_GRACEFUL,
-         "Power Cycle Off-Hard Graceful"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL, "Off-Soft Graceful"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_OFF_HARD_GRACEFUL, "Off-Hard Graceful"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_MASTER_BUS_RESET, "Master Bus Reset"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_MASTER_BUS_RESET_GRACEFUL,
-         "Master Bus Reset (Graceful)"},
-        {PLDM_STATE_SET_SYS_POWER_STATE_NMI, "Diagnostic Interrupt (NMI)"}};
-
-    static inline const std::map<uint8_t, std::string> setSWTerminationStatus{
-        {PLDM_SW_TERM_NORMAL, "Normal"},
-        {PLDM_SW_TERM_SOFTWARE_TERMINATION_DETECTED,
-         "Software Termination Detected"},
-        {PLDM_SW_TERM_CRITICAL_STOP_DURING_LOAD_INITIALIZATION,
-         "Critical Stop during Load/Initialization"},
-        {PLDM_SW_TERM_RUN_TIME_CRITICAL_STOP, "Run-time Critical Stop"},
-        {PLDM_SW_TERM_GRACEFUL_SHUTDOWN_REQUESTED,
-         "Graceful Shutdown Requested"},
-        {PLDM_SW_TERM_GRACEFUL_RESTART_REQUESTED, "Graceful Restart Requested"},
-        {PLDM_SW_TERM_GRACEFUL_SHUTDOWN, "Graceful Shutdown"},
-        {PLDM_SW_TERM_TERMINATION_REQUEST_FAILED,
-         "Termination Request Failed"}};
-
-    static inline const std::map<uint8_t, std::string> setAvailability{
-        {PLDM_STATE_SET_AVAILABILITY_ENABLED, "Enabled"},
-        {PLDM_STATE_SET_AVAILABILITY_DISABLED, "Disabled"},
-        {PLDM_STATE_SET_AVAILABILITY_SHUTDOWN, "Shutdown"},
-        {PLDM_STATE_SET_AVAILABILITY_OFFLINE, "Offline"},
-        {PLDM_STATE_SET_AVAILABILITY_IN_TEST, "In Test"},
-        {PLDM_STATE_SET_AVAILABILITY_DEFERRED, "Deferred"},
-        {PLDM_STATE_SET_AVAILABILITY_QUIESCENT, "Quiescent"},
-        {PLDM_STATE_SET_AVAILABILITY_REBOOTING, "Rebooting"},
-        {PLDM_STATE_SET_AVAILABILITY_RESETTING, "Resetting"},
-        {PLDM_STATE_SET_AVAILABILITY_FAILED, "Failed"},
-        {PLDM_STATE_SET_AVAILABILITY_NOT_INSTALLED, "Not Installed"},
-        {PLDM_STATE_SET_AVAILABILITY_POWER_SAVE_MODE, "Power Save Mode"},
-        {PLDM_STATE_SET_AVAILABILITY_PAUSED, "Paused"},
-        {PLDM_STATE_SET_AVAILABILITY_SHUTTING_DOWN, "Shutting Down"},
-        {PLDM_STATE_SET_AVAILABILITY_STARTING, "Starting"},
-        {PLDM_STATE_SET_AVAILABILITY_NOT_RESPONDING, "Not Responding"}};
-
-    static inline const std::map<uint8_t, std::string> setPredictiveCondition{
-        {PLDM_STATE_SET_PREDICTIVE_CONDITION_NORMAL, "Normal"},
-        {PLDM_STATE_SET_PREDICTIVE_CONDITION_PREDICTIVE_FAILURE,
-         "Predictive Failure"}};
-
-    static inline const std::map<uint8_t, std::string>
-        setOperationalStressStatus{
-            {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS_NORMAL, "Normal"},
-            {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS_STRESSED, "Stressed"}};
-
-    static inline const std::map<uint8_t, std::string> setPresence{
-        {PLDM_STATE_SET_PRESENCE_PRESENT, "Present"},
-        {PLDM_STATE_SET_PRESENCE_NOT_PRESENT, "Not Present"}};
-
-    static inline const std::map<uint8_t, std::string> setConfigurationState{
-        {PLDM_STATE_SET_CONFIGURATION_STATE_VALID_CONFIGURATION,
-         "Valid Configuration"},
-        {PLDM_STATE_SET_CONFIGURATION_STATE_INVALID_CONFIGURATION,
-         "Invalid Configuration"},
-        {PLDM_STATE_SET_CONFIGURATION_STATE_NOT_CONFIGURED, "Not Configured"},
-        {PLDM_STATE_SET_CONFIGURATION_STATE_MISSING_CONFIGURATION,
-         "Missing Configuration"}};
-
-    static inline const std::map<uint8_t, std::string> setChangedConfiguration{
-        {PLDM_STATE_SET_CHANGED_CONFIGURATION_NORMAL, "Normal"},
-        {PLDM_STATE_SET_CHANGED_CONFIGURATION_CONFIGURATION_CHANGE_DETECTED,
-         "Configuration Change Detected"}};
-
-    static inline const std::map<uint8_t, std::string> setVersion{
-        {PLDM_STATE_SET_VERSION_NORMAL, "Normal"},
-        {PLDM_STATE_SET_VERSION_VERSION_CHANGE_DETECTED_COMPATIBLE,
-         "Version Change Detected – Compatible"},
-        {PLDM_STATE_SET_VERSION_VERSION_CHANGE_DETECTED_INCOMPATIBLE,
-         "Version Change Detected – Incompatible"},
-        {PLDM_STATE_SET_VERSION_VERSION_CHANGE_PENDING,
-         "Version Change Pending"}};
-
-    static inline const std::map<uint8_t, std::string> setLinkState{
-        {PLDM_STATE_SET_LINK_STATE_CONNECTED, "Connected"},
-        {PLDM_STATE_SET_LINK_STATE_DISCONNECTED, "Disconnected"}};
-
-    static inline const std::map<uint8_t, std::string>
-        setCommunicationLeashStatus{
-            {PLDM_STATE_SET_COMMUNICATION_LEASH_STATUS_LEASH_CONNECTED,
-             "Leash Connected"},
-            {PLDM_STATE_SET_COMMUNICATION_LEASH_STATUS_LEASH_DISCONNECTED,
-             "Leash Disconnected"}};
-
-    static inline const std::map<uint8_t, std::string> setBootRestartCause{
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_POWERED_UP, "Powered Up"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_HARD_RESET, "Hard Reset"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_WARM_RESET, "Warm Reset"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_MANUAL_HARD_RESET,
-         "Manual Hard Reset"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_MANUAL_WARM_RESET,
-         "Manual Warm Reset"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_SYSTEM_RESTART, "System Restart"},
-        {PLDM_STATE_SET_BOOT_RESTART_CAUSE_WATCHDOG_TIMEOUT,
-         "Watchdog Timeout"}};
-
-    static inline const std::map<uint8_t, std::string> setHealthState{
-        {PLDM_STATE_SET_HEALTH_STATE_NORMAL, "Normal"},
-        {PLDM_STATE_SET_HEALTH_STATE_NON_CRITICAL, "Non-Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_CRITICAL, "Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_FATAL, "Fatal"},
-        {PLDM_STATE_SET_HEALTH_STATE_UPPER_NON_CRITICAL, "Upper Non-Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_LOWER_NON_CRITICAL, "Lower Non-Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_UPPER_CRITICAL, "Upper Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_LOWER_CRITICAL, "Lower Critical"},
-        {PLDM_STATE_SET_HEALTH_STATE_UPPER_FATAL, "Upper Fatal"},
-        {PLDM_STATE_SET_HEALTH_STATE_LOWER_FATAL, "Lower Fatal"}};
-
-    static inline const std::map<uint8_t, std::string>
-        setOperationalRunningState{
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STARTING, "Starting"},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STOPPING, "Stopping"},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_STOPPED, "Stopped"},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_IN_SERVICE,
-             "In Service"},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_ABORTED, "Aborted"},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_DORMANT, "Dormant"}};
-
-    static inline const std::map<uint8_t, std::string> setPowerDeviceState{
-        {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_UNKNOWN, "Unknown"},
-        {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_FULLY_ON, "Fully-On"},
-        {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_INTERMEDIATE_1,
-         "Intermediate State-1"},
-        {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_INTERMEDIATE_2,
-         "Intermediate State-2"},
-        {PLDM_STATE_SET_ACPI_DEVICE_POWER_STATE_OFF, "Off"}};
-
-    static inline const std::map<uint8_t, std::string> setACPIPowerState{
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S0, "S0"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S1, "S1"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S2, "S2"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S3, "S3"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S4, "S4"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_S5, "S5"},
-        {PLDM_STATE_SET_ACPI_POWER_STATE_G3, "G3"}};
-
-    static inline const std::map<uint16_t, const std::map<uint8_t, std::string>>
-        populatePStateMaps{
-            {PLDM_STATE_SET_THERMAL_TRIP, setThermalTrip},
-            {PLDM_STATE_SET_IDENTIFY_STATE, setIdentifyState},
-            {PLDM_STATE_SET_BOOT_PROGRESS, setBootProgressState},
-            {PLDM_STATE_SET_OPERATIONAL_FAULT_STATUS, setOpFaultStatus},
-            {PLDM_STATE_SET_SYSTEM_POWER_STATE, setSysPowerState},
-            {PLDM_STATE_SET_SW_TERMINATION_STATUS, setSWTerminationStatus},
-            {PLDM_STATE_SET_AVAILABILITY, setAvailability},
-            {PLDM_STATE_SET_PREDICTIVE_CONDITION, setPredictiveCondition},
-            {PLDM_STATE_SET_OPERATIONAL_STRESS_STATUS,
-             setOperationalStressStatus},
-            {PLDM_STATE_SET_PRESENCE, setPresence},
-            {PLDM_STATE_SET_CONFIGURATION_STATE, setConfigurationState},
-            {PLDM_STATE_SET_CHANGED_CONFIGURATION, setChangedConfiguration},
-            {PLDM_STATE_SET_VERSION, setVersion},
-            {PLDM_STATE_SET_LINK_STATE, setLinkState},
-            {PLDM_STATE_SET_COMM_LEASH_STATUS, setCommunicationLeashStatus},
-            {PLDM_STATE_SET_BOOT_RESTART_CAUSE, setBootRestartCause},
-            {PLDM_STATE_SET_HEALTH_STATE, setHealthState},
-            {PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS,
-             setOperationalRunningState},
-            {PLDM_STATE_SET_DEVICE_POWER_STATE, setPowerDeviceState},
-            {PLDM_STATE_SET_ACPI_POWER_STATE, setACPIPowerState},
-        };
-
     const std::map<std::string, uint8_t> strToPdrType = {
         {"terminuslocator", PLDM_TERMINUS_LOCATOR_PDR},
         {"statesensor", PLDM_STATE_SENSOR_PDR},
@@ -1131,46 +1158,6 @@
         }
     }
 
-    std::vector<std::string> getStateSetPossibleStateNames(
-        uint16_t stateId, const std::vector<uint8_t>& value)
-    {
-        std::vector<std::string> data{};
-
-        for (const auto& s : value)
-        {
-            std::map<uint8_t, std::string> stateNameMaps;
-            auto pstr = std::to_string(s);
-
-#ifdef OEM_IBM
-            if (stateId >= PLDM_OEM_STATE_SET_ID_START &&
-                stateId < PLDM_OEM_STATE_SET_ID_END)
-            {
-                if (populateOemIBMStateMaps.contains(stateId))
-                {
-                    const std::map<uint8_t, std::string> stateNames =
-                        populateOemIBMStateMaps.at(stateId);
-                    stateNameMaps.insert(stateNames.begin(), stateNames.end());
-                }
-            }
-#endif
-            if (populatePStateMaps.contains(stateId))
-            {
-                const std::map<uint8_t, std::string> stateNames =
-                    populatePStateMaps.at(stateId);
-                stateNameMaps.insert(stateNames.begin(), stateNames.end());
-            }
-            if (stateNameMaps.contains(s))
-            {
-                data.push_back(stateNameMaps.at(s) + "(" + pstr + ")");
-            }
-            else
-            {
-                data.push_back(pstr);
-            }
-        }
-        return data;
-    }
-
     std::string getPDRType(uint8_t type)
     {
         auto typeString = std::to_string(type);
@@ -2218,6 +2205,9 @@
                         "Each bit location in this field corresponds to a "
                         "particular sensor")
             ->required();
+        app->add_option(
+            "-s, --state_set_id", stateSetId,
+            "State Set ID that should be used for data interpretation");
     }
 
     std::pair<int, std::vector<uint8_t>> createRequestMsg() override
@@ -2261,12 +2251,21 @@
                 output.emplace(("sensorOpState[" + std::to_string(i) + "]"),
                                sensorOpState.at(stateField[i].sensor_op_state));
             }
+
+            std::vector<uint8_t> values = {stateField[i].present_state,
+                                           stateField[i].previous_state,
+                                           stateField[i].event_state};
+            std::vector<std::string> value_strings =
+                getStateSetPossibleStateNames(stateSetId, values);
+
             output.emplace(("presentState[" + std::to_string(i) + "]"),
-                           std::to_string(stateField[i].present_state));
+                           value_strings.at(0));
+
             output.emplace(("previousState[" + std::to_string(i) + "]"),
-                           std::to_string(stateField[i].previous_state));
+                           value_strings.at(1));
+
             output.emplace(("eventState[" + std::to_string(i) + "]"),
-                           std::to_string(stateField[i].event_state));
+                           value_strings.at(2));
         }
 
         pldmtool::helper::DisplayInJson(output);
@@ -2275,6 +2274,7 @@
   private:
     uint16_t sensorId;
     uint8_t sensorRearm;
+    uint16_t stateSetId;
 };
 
 class GetSensorReading : public CommandInterface