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
diff --git a/sensorhandler.h b/sensorhandler.h
index 6ba5c34..ca30fb0 100644
--- a/sensorhandler.h
+++ b/sensorhandler.h
@@ -524,6 +524,16 @@
     resp->assertOffset8_14 = static_cast<uint8_t>(value >> 8);
 }
 
+/**
+ * @brief Set the scanning enabled bit in the response.
+ *
+ * @param[in/out] resp - get sensor reading response.
+ */
+inline void enableScanning(ipmi::sensor::GetReadingResponse* resp)
+{
+    resp->operation = 1 << 6;
+}
+
 } // namespace sensor
 
 } // namespace ipmi
