diff --git a/libpldm/platform.h b/libpldm/platform.h
index e1b5b23..ed175a9 100644
--- a/libpldm/platform.h
+++ b/libpldm/platform.h
@@ -120,11 +120,28 @@
 /** @brief PLDM PDR types
  */
 enum pldm_pdr_types {
+	PLDM_TERMINUS_LOCATOR_PDR = 1,
+	PLDM_NUMERIC_SENSOR_PDR = 2,
+	PLDM_NUMERIC_SENSOR_INITIALIZATION_PDR = 3,
 	PLDM_STATE_SENSOR_PDR = 4,
+	PLDM_STATE_SENSOR_INITIALIZATION_PDR = 5,
+	PLDM_SENSOR_AUXILIARY_NAMES_PDR = 6,
+	PLDM_OEM_UNIT_PDR = 7,
+	PLDM_OEM_STATE_SET_PDR = 8,
 	PLDM_NUMERIC_EFFECTER_PDR = 9,
+	PLDM_NUMERIC_EFFECTER_INITIALIZATION_PDR = 10,
 	PLDM_STATE_EFFECTER_PDR = 11,
+	PLDM_STATE_EFFECTER_INITIALIZATION_PDR = 12,
+	PLDM_EFFECTER_AUXILIARY_NAMES_PDR = 13,
+	PLDM_EFFECTER_OEM_SEMANTIC_PDR = 14,
 	PLDM_PDR_ENTITY_ASSOCIATION = 15,
+	PLDM_ENTITY_AUXILIARY_NAMES_PDR = 16,
+	PLDM_OEM_ENTITY_ID_PDR = 17,
+	PLDM_INTERRUPT_ASSOCIATION_PDR = 18,
+	PLDM_EVENT_LOG_PDR = 19,
 	PLDM_PDR_FRU_RECORD_SET = 20,
+	PLDM_OEM_DEVICE_PDR = 126,
+	PLDM_OEM_PDR = 127,
 };
 
 /** @brief PLDM effecter initialization schemes
diff --git a/pldmtool/pldm_platform_cmd.cpp b/pldmtool/pldm_platform_cmd.cpp
index 4f18a91..0e3cc58 100644
--- a/pldmtool/pldm_platform_cmd.cpp
+++ b/pldmtool/pldm_platform_cmd.cpp
@@ -110,6 +110,7 @@
         {PLDM_STATE_SET_SW_TERMINATION_STATUS, "Software Termination Status"},
         {PLDM_STATE_SET_BOOT_RESTART_CAUSE, "Boot/Restart Cause"},
         {PLDM_STATE_SET_BOOT_PROGRESS, "Boot Progress"},
+        {PLDM_STATE_SET_SYSTEM_POWER_STATE, "System Power State"},
     };
 
     const std::array<std::string_view, 4> sensorInit = {
@@ -118,6 +119,35 @@
     const std::array<std::string_view, 4> effecterInit = {
         "noInit", "useInitPDR", "enableEffecter", "disableEffecter"};
 
+    const std::map<uint8_t, std::string> pdrType = {
+        {PLDM_TERMINUS_LOCATOR_PDR, "Terminus Locator PDR"},
+        {PLDM_NUMERIC_SENSOR_PDR, "Numeric Sensor PDR"},
+        {PLDM_NUMERIC_SENSOR_INITIALIZATION_PDR,
+         "Numeric Sensor Initialization PDR"},
+        {PLDM_STATE_SENSOR_PDR, "State Sensor PDR"},
+        {PLDM_STATE_SENSOR_INITIALIZATION_PDR,
+         "State Sensor Initialization PDR"},
+        {PLDM_SENSOR_AUXILIARY_NAMES_PDR, "Sensor Auxiliary Names PDR"},
+        {PLDM_OEM_UNIT_PDR, "OEM Unit PDR"},
+        {PLDM_OEM_STATE_SET_PDR, "OEM State Set PDR"},
+        {PLDM_NUMERIC_EFFECTER_PDR, "Numeric Effecter PDR"},
+        {PLDM_NUMERIC_EFFECTER_INITIALIZATION_PDR,
+         "Numeric Effecter Initialization PDR"},
+        {PLDM_STATE_EFFECTER_PDR, "State Effecter PDR"},
+        {PLDM_STATE_EFFECTER_INITIALIZATION_PDR,
+         "State Effecter Initialization PDR"},
+        {PLDM_EFFECTER_AUXILIARY_NAMES_PDR, "Effecter Auxiliary Names PDR"},
+        {PLDM_EFFECTER_OEM_SEMANTIC_PDR, "Effecter OEM Semantic PDR"},
+        {PLDM_PDR_ENTITY_ASSOCIATION, "Entity Association PDR"},
+        {PLDM_ENTITY_AUXILIARY_NAMES_PDR, "Entity Auxiliary Names PDR"},
+        {PLDM_OEM_ENTITY_ID_PDR, "OEM Entity ID PDR"},
+        {PLDM_INTERRUPT_ASSOCIATION_PDR, "Interrupt Association PDR"},
+        {PLDM_EVENT_LOG_PDR, "PLDM Event Log PDR"},
+        {PLDM_PDR_FRU_RECORD_SET, "FRU Record Set PDR"},
+        {PLDM_OEM_DEVICE_PDR, "OEM Device PDR"},
+        {PLDM_OEM_PDR, "OEM PDR"},
+    };
+
     std::string getEntityName(pldm::pdr::EntityType type)
     {
         try
@@ -132,13 +162,27 @@
 
     std::string getStateSetName(uint16_t id)
     {
+        auto typeString = std::to_string(id);
         try
         {
-            return stateSet.at(id);
+            return stateSet.at(id) + "(" + typeString + ")";
         }
         catch (const std::out_of_range& e)
         {
-            return std::to_string(id);
+            return typeString;
+        }
+    }
+
+    std::string getPDRType(uint8_t type)
+    {
+        auto typeString = std::to_string(type);
+        try
+        {
+            return pdrType.at(type) + "(" + typeString + ")";
+        }
+        catch (const std::out_of_range& e)
+        {
+            return typeString;
         }
     }
 
@@ -147,7 +191,7 @@
         std::cout << "recordHandle: " << hdr->record_handle << std::endl;
         std::cout << "PDRHeaderVersion: " << unsigned(hdr->version)
                   << std::endl;
-        std::cout << "PDRType: " << unsigned(hdr->type) << std::endl;
+        std::cout << "PDRType: " << getPDRType(hdr->type) << std::endl;
         std::cout << "recordChangeNumber: " << hdr->record_change_num
                   << std::endl;
         std::cout << "dataLength: " << hdr->length << std::endl << std::endl;
