#include "types.hpp" #include "host-ipmid/ipmid-api.h" namespace ipmi { namespace sensor { using Assertion = uint16_t; using Deassertion = uint16_t; using AssertionSet = std::pair; using Service = std::string; using Path = std::string; using Interface = std::string; using ServicePath = std::pair; using Interfaces = std::vector; using MapperResponseType = std::map>; /** @brief get the D-Bus service and service path * @param[in] bus - The Dbus bus object * @param[in] interface - interface to the service * @param[in] path - interested path in the list of objects * @return pair of service path and service */ ServicePath getServiceAndPath(sdbusplus::bus::bus& bus, const std::string& interface, const std::string& path = std::string()); /** @brief Make assertion set from input data * @param[in] cmdData - Input sensor data * @return pair of assertion and deassertion set */ AssertionSet getAssertionSet(const SetSensorReadingReq& cmdData); /** @brief send the message to DBus * @param[in] msg - message to send * @return failure status in IPMI error code */ ipmi_ret_t updateToDbus(IpmiUpdateData& msg); namespace set { /** @brief Make a DBus message for a Dbus call * @param[in] updateInterface - Interface name * @param[in] sensorPath - Path of the sensor * @param[in] command - command to be executed * @param[in] sensorInterface - DBus interface of sensor * @return a dbus message */ IpmiUpdateData makeDbusMsg(const std::string& updateInterface, const std::string& sensorPath, const std::string& command, const std::string& sensorInterface); /** @brief Create a message for IPMI assertion * @param[in] msg - Message to add the values * @param[in] interface - sensor interface * @param[in] sensorPath - Path of the sensor * @param[in] cmdData - input sensor data * @return a IPMI error code */ ipmi_ret_t appendAssertion(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, const std::string& sensorPath, const SetSensorReadingReq& cmdData); /** @brief Create a message for discrete signal * @param[in] msg - Message to add the values * @param[in] interface - sensor interface * @param[in] data - input discrete sensor data * @return a IPMI error code */ ipmi_ret_t appendDiscreteSignalData(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, uint8_t data); /** @brief Create a message for reading data * @param[in] msg - Message to add the values * @param[in] interface - sensor interface * @param[in] data - input sensor data * @return a IPMI error code */ ipmi_ret_t appendReadingData(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, const Value& data); }//namespace set namespace notify { /** @brief Make a DBus message for a Dbus call * @param[in] updateInterface - Interface name * @param[in] sensorPath - Path of the sensor * @param[in] command - command to be executed * @param[in] sensorInterface - DBus interface of sensor * @return a dbus message */ IpmiUpdateData makeDbusMsg(const std::string& updateInterface, const std::string& sensorPath, const std::string& command, const std::string& sensorInterface); /** @brief Create a message for IPMI discrete signal * @param[in] msg - Message to add the values * @param[in] interfaceMap - sensor interface * @param[in] sensorPath - Path of the sensor * @param[in] cmdData - input sensor data * @return a IPMI error code */ inline ipmi_ret_t appendDiscreteSignalData(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, uint8_t data) { return IPMI_CC_OK; } /** @brief Create a message for reading data * @param[in] msg - Message to add the values * @param[in] interfaceMap - sensor interface * @param[in] data - input sensor data * @return a IPMI error code */ inline ipmi_ret_t appendReadingData(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, const Value &data) { return IPMI_CC_OK; } /** @brief Create a message for IPMI asserting * @param[in] msg - Message to add the values * @param[in] interfaceMap - sensor interface * @param[in] sensorPath - Path of the sensor * @param[in] cmdData - input sensor data * @return a IPMI error code */ ipmi_ret_t appendAssertion(IpmiUpdateData& msg, const DbusInterfaceMap& interfaceMap, const std::string& sensorPath, const SetSensorReadingReq& cmdData); }//namespace notify }//namespace sensor }//namespace ipmi