More changes to support JEDEC format VPD

Change-Id: I7d8e4b0508bc1f92c3f6fd1a924a153ebe23f17e
Signed-off-by: jinuthomas <jinu.joy.thomas@in.ibm.com>
diff --git a/vpd-parser/isdimm_vpd_parser.cpp b/vpd-parser/isdimm_vpd_parser.cpp
index c7d4a52..334a2a3 100644
--- a/vpd-parser/isdimm_vpd_parser.cpp
+++ b/vpd-parser/isdimm_vpd_parser.cpp
@@ -139,7 +139,7 @@
             iterator[SPD_JEDEC_DDR4_SDRAM_ADDR_OFFSET],
             iterator[SPD_JEDEC_DDR4_DRAM_PRI_PACKAGE_OFFSET],
             iterator[SPD_JEDEC_DDR4_DRAM_MODULE_ORG_OFFSET] & 0x0F);
-    std::string partNumber(tmpPN, sizeof(tmpPN));
+    std::string partNumber(tmpPN, sizeof(tmpPN) - 1);
     return partNumber;
 }
 
@@ -153,7 +153,7 @@
             iterator[SPD_JEDEC_DDR4_SN_BYTE1_OFFSET],
             iterator[SPD_JEDEC_DDR4_SN_BYTE2_OFFSET],
             iterator[SPD_JEDEC_DDR4_SN_BYTE3_OFFSET]);
-    std::string serialNumber(tmpSN, sizeof(tmpSN));
+    std::string serialNumber(tmpSN, sizeof(tmpSN) - 1);
     return serialNumber;
 }
 
@@ -270,55 +270,45 @@
     if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
         constants::SPD_DRAM_TYPE_DDR5)
     {
-        auto dimmSize = getDDR5DimmCapacity(iterator);
+        size_t dimmSize = getDDR5DimmCapacity(iterator);
         if (!dimmSize)
         {
             std::cerr << "Error: Calculated dimm size is 0.";
         }
-        else if (dimmSize < constants::CONVERT_MB_TO_KB)
-        {
-            keywordValueMap.emplace("MemorySizeInMB", dimmSize);
-        }
         else
         {
-            size_t dimmCapacityInGB = dimmSize / constants::CONVERT_MB_TO_KB;
-            keywordValueMap.emplace("MemorySizeInGB", dimmCapacityInGB);
+            keywordValueMap.emplace("MemorySizeInKB", dimmSize);
         }
         auto partNumber = getDDR5PartNumber(iterator);
-        keywordValueMap.emplace("PN", move(partNumber));
         auto fruNumber = getDDR5FruNumber(partNumber);
         keywordValueMap.emplace("FN", move(fruNumber));
         auto serialNumber = getDDR5SerialNumber(iterator);
         keywordValueMap.emplace("SN", move(serialNumber));
         auto ccin = getDDR5CCIN(partNumber);
         keywordValueMap.emplace("CC", move(ccin));
+        keywordValueMap.emplace("PN", move(partNumber));
     }
     else if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
              constants::SPD_DRAM_TYPE_DDR4)
     {
-        auto dimmSize = getDDR4DimmCapacity(iterator);
+        size_t dimmSize = getDDR4DimmCapacity(iterator);
         if (!dimmSize)
         {
             std::cerr << "Error: Calculated dimm size is 0.";
         }
-        else if (dimmSize < constants::CONVERT_MB_TO_KB)
-        {
-            keywordValueMap.emplace("MemorySizeInMB", dimmSize);
-        }
         else
         {
-            size_t dimmCapacityInGB = dimmSize / constants::CONVERT_MB_TO_KB;
-            keywordValueMap.emplace("MemorySizeInGB", dimmCapacityInGB);
+            keywordValueMap.emplace("MemorySizeInKB",
+                                    (dimmSize * constants::CONVERT_MB_TO_KB));
         }
-        size_t dimmCapacityInGB = dimmSize / constants::CONVERT_MB_TO_KB;
-        keywordValueMap.emplace("MemorySizeInGB", dimmCapacityInGB);
+
         auto partNumber = getDDR4PartNumber(iterator);
-        keywordValueMap.emplace("PN", move(partNumber));
         auto fruNumber = getDDR4FruNumber(partNumber);
-        keywordValueMap.emplace("FN", move(fruNumber));
         auto serialNumber = getDDR4SerialNumber(iterator);
-        keywordValueMap.emplace("SN", move(serialNumber));
         auto ccin = getDDR4CCIN(partNumber);
+        keywordValueMap.emplace("PN", move(partNumber));
+        keywordValueMap.emplace("FN", move(fruNumber));
+        keywordValueMap.emplace("SN", move(serialNumber));
         keywordValueMap.emplace("CC", move(ccin));
     }
     return keywordValueMap;