monitor: Move tach sensor template function to header

The `readPropertyFromMessage` template function should be in the tach
sensor header file.

Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Change-Id: I931d8f2a4b5eafbd05aeeef6f4127db2cdd6819e
diff --git a/monitor/tach_sensor.hpp b/monitor/tach_sensor.hpp
index 76a800d..88c8547 100644
--- a/monitor/tach_sensor.hpp
+++ b/monitor/tach_sensor.hpp
@@ -105,6 +105,37 @@
                const sdeventplus::Event& event);
 
     /**
+     * @brief Reads a property from the input message and stores it in value.
+     *        T is the value type.
+     *
+     *        Note: This can only be called once per message.
+     *
+     * @param[in] msg - the dbus message that contains the data
+     * @param[in] interface - the interface the property is on
+     * @param[in] propertName - the name of the property
+     * @param[out] value - the value to store the property value in
+     */
+    template <typename T>
+    static void readPropertyFromMessage(sdbusplus::message::message& msg,
+                                        const std::string& interface,
+                                        const std::string& propertyName,
+                                        T& value)
+    {
+        std::string sensor;
+        std::map<std::string, std::variant<T>> data;
+        msg.read(sensor, data);
+
+        if (sensor.compare(interface) == 0)
+        {
+            auto propertyMap = data.find(propertyName);
+            if (propertyMap != data.end())
+            {
+                value = std::get<T>(propertyMap->second);
+            }
+        }
+    }
+
+    /**
      * @brief Returns the target speed value
      */
     uint64_t getTarget() const;