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;