diff options
-rw-r--r-- | sensordatahandler.cpp | 36 | ||||
-rw-r--r-- | sensordatahandler.hpp | 10 | ||||
-rw-r--r-- | sensorhandler.h | 11 |
3 files changed, 57 insertions, 0 deletions
diff --git a/sensordatahandler.cpp b/sensordatahandler.cpp index 231822b..aca81c7 100644 --- a/sensordatahandler.cpp +++ b/sensordatahandler.cpp @@ -154,6 +154,42 @@ GetSensorResponse assertion(const Info& sensorInfo) sensorInfo.sensorInterface); } +GetSensorResponse eventdata2(const Info& sensorInfo) +{ + sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()}; + GetSensorResponse response {}; + auto responseData = reinterpret_cast<GetReadingResponse*>(response.data()); + + auto service = ipmi::getService(bus, + sensorInfo.sensorInterface, + sensorInfo.sensorPath); + + const auto& interfaceList = sensorInfo.propertyInterfaces; + + for (const auto& interface : interfaceList) + { + for (const auto& property : interface.second) + { + auto propValue = ipmi::getDbusProperty(bus, + service, + sensorInfo.sensorPath, + interface.first, + property.first); + + for (const auto& value : property.second) + { + if (propValue == value.second.assert) + { + setReading(value.first, responseData); + break; + } + } + } + } + + return response; +} + } //namespace get namespace set diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp index 3a66f48..010772d 100644 --- a/sensordatahandler.hpp +++ b/sensordatahandler.hpp @@ -71,6 +71,16 @@ GetSensorResponse mapDbusToAssertion(const Info& sensorInfo, */ GetSensorResponse assertion(const Info& sensorInfo); +/** + * @brief Maps the Dbus info to the reading field in the Get sensor reading + * command response. + * + * @param[in] sensorInfo - Dbus info related to sensor. + * + * @return Response for get sensor reading command. + */ +GetSensorResponse eventdata2(const Info& sensorInfo); + } //namespace get namespace set diff --git a/sensorhandler.h b/sensorhandler.h index 576c803..a078693 100644 --- a/sensorhandler.h +++ b/sensorhandler.h @@ -499,6 +499,17 @@ inline void setOffset(uint8_t offset, ipmi::sensor::GetReadingResponse* resp) } } +/** + * @brief Set the reading field in the response. + * + * @param[in] offset - offset number. + * @param[in/out] resp - get sensor reading response. + */ +inline void setReading(uint8_t value, ipmi::sensor::GetReadingResponse* resp) +{ + resp->reading = value; +} + } // namespace sensor } // namespace ipmi |