From 295f17e5257774f11d6c05ed6e00e28cb4039dbf Mon Sep 17 00:00:00 2001 From: Tom Joseph Date: Thu, 7 Sep 2017 00:09:46 +0530 Subject: sensor: Add function to support sensor with readingAssertion type readingAssertion is special type where the entire assert bitfield serves as the value or reading. Change-Id: Iaddbe846e04d2a53cff69d71670a96ccc66636a8 Signed-off-by: Tom Joseph --- sensordatahandler.hpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'sensordatahandler.hpp') diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp index 010772d..ba496e7 100644 --- a/sensordatahandler.hpp +++ b/sensordatahandler.hpp @@ -1,6 +1,8 @@ #pragma once +#include "sensorhandler.h" #include "types.hpp" +#include "utils.hpp" #include "host-ipmid/ipmid-api.h" namespace ipmi @@ -81,6 +83,38 @@ GetSensorResponse assertion(const Info& sensorInfo); */ GetSensorResponse eventdata2(const Info& sensorInfo); +/** + * @brief readingAssertion is a case where the entire assertion state field + * serves as the sensor value. + * + * @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 +GetSensorResponse readingAssertion(const Info& sensorInfo) +{ + sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()}; + GetSensorResponse response {}; + auto responseData = reinterpret_cast(response.data()); + + 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); + + setAssertionBytes(static_cast(propValue.get()), responseData); + + return response; +} + } //namespace get namespace set -- cgit v1.2.1