sensor: Map dbus info to sensor's reading field

Change-Id: I3e35bf78260b1fa29e992b00279f2dd166cd2fe1
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
index ba496e7..1b05342 100644
--- a/sensordatahandler.hpp
+++ b/sensordatahandler.hpp
@@ -115,6 +115,43 @@
     return response;
 }
 
+/** @brief Map the Dbus info to the reading field in the Get sensor reading
+ *         command response
+ *
+ *  @tparam T - type of the dbus property related to sensor.
+ *  @param[in] sensorInfo - Dbus info related to sensor.
+ *
+ *  @return Response for get sensor reading command.
+ */
+template<typename T>
+GetSensorResponse readingData(const Info& sensorInfo)
+{
+    sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
+    GetSensorResponse response {};
+    auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
+
+    enableScanning(responseData);
+
+    auto service = ipmi::getService(bus,
+                                    sensorInfo.sensorInterface,
+                                    sensorInfo.sensorPath);
+
+    auto propValue = ipmi::getDbusProperty(
+            bus,
+            service,
+            sensorInfo.sensorPath,
+            sensorInfo.propertyInterfaces.begin()->first,
+            sensorInfo.propertyInterfaces.begin()->second.begin()->first);
+
+    auto value = static_cast<uint8_t>(
+            (propValue.get<T>() - sensorInfo.scaledOffset) /
+            (sensorInfo.coefficientM ? sensorInfo.coefficientM : 1));
+
+    setReading(value, responseData);
+
+    return response;
+}
+
 } //namespace get
 
 namespace set