Add support for dbus parameter

Added support for parameter type dbus sensor and utility functions
to read dbus sensor value.

Signed-off-by: Vijay Khemka <vijaykhemka@fb.com>
Change-Id: I04db0016f312edea095442a693500c3b4e571d6c
diff --git a/virtualSensor.cpp b/virtualSensor.cpp
index ef8543f..501d9cd 100644
--- a/virtualSensor.cpp
+++ b/virtualSensor.cpp
@@ -39,6 +39,9 @@
         case constParam:
             return value;
             break;
+        case dbusParam:
+            return dbusSensor->getSensorValue();
+            break;
         default:
             throw std::invalid_argument("param type not supported");
     }
@@ -92,7 +95,30 @@
         }
     }
 
-    /* TODO: Check for dbus parameter */
+    /* Check for dbus parameter */
+    auto dbusParams = params.value("DbusParam", empty);
+    if (!dbusParams.empty())
+    {
+        for (auto& j : dbusParams)
+        {
+            /* Get parameter dbus sensor descriptor */
+            auto desc = j.value("Desc", empty);
+            if ((!desc.empty()) && (j.find("ParamName") != j.end()))
+            {
+                std::string sensorType = desc.value("SensorType", "");
+                std::string name = desc.value("Name", "");
+
+                if (!sensorType.empty() && !name.empty())
+                {
+                    std::string objPath(sensorDbusPath);
+                    objPath += sensorType + "/" + name;
+
+                    auto paramPtr = std::make_unique<SensorParam>(bus, objPath);
+                    paramMap.emplace(j["ParamName"], std::move(paramPtr));
+                }
+            }
+        }
+    }
 
     /* Print all parameters for debug purpose only */
     if (DEBUG)