Update FormFactor property on DIMM interface

The patch adds the `FormFactor` property on DIMM interface.
BMC parses the SMBIOS Type 17 records and assigns the DIMM
FormFactor.

Tested:
[1] busctl get-property xyz.openbmc_project.Smbios.MDR_V2 xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1 xyz.openbmc_project.Inventory.Item.Dimm FormFactor s "xyz.openbmc_project.Inventory.Item.Dimm.FormFactor.Die"

Change-Id: I14b7f0ea0a51e58306c117fcde1b268da798cd36
Signed-off-by: Prithvi Pai <ppai@nvidia.com>
diff --git a/src/dimm.cpp b/src/dimm.cpp
index ce63f4f..f6228c9 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -99,6 +99,7 @@
     dimmType(memoryInfo->memoryType);
     dimmTypeDetail(memoryInfo->typeDetail);
     maxMemorySpeedInMhz(memoryInfo->speed);
+    updateFormFactor(memoryInfo->formFactor);
     dimmManufacturer(memoryInfo->manufacturer, memoryInfo->length, dataIn);
     dimmSerialNum(memoryInfo->serialNum, memoryInfo->length, dataIn);
     dimmPartNum(memoryInfo->partNum, memoryInfo->length, dataIn);
@@ -465,6 +466,22 @@
         OperationalStatus::functional(value);
 }
 
+void Dimm::updateFormFactor(const uint8_t formFactorKey)
+{
+    std::map<uint8_t, FormFactor>::const_iterator it =
+        dimmFormFactorMap.find(formFactorKey);
+    if (it != dimmFormFactorMap.end())
+    {
+        formFactor(it->second);
+    }
+}
+
+FormFactor Dimm::formFactor(FormFactor value)
+{
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
+        formFactor(value);
+}
+
 Json Dimm::parseConfigFile()
 {
     std::ifstream memoryLocationFile(filename);