summaryrefslogtreecommitdiffstats
path: root/sensordatahandler.hpp
diff options
context:
space:
mode:
authorDhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>2017-07-12 06:35:20 -0500
committerDhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>2017-08-04 13:23:46 -0500
commite0af7209c748794b867bce6901f834d10d47773f (patch)
tree4b658091ac50d581faf8cb458375e6fe3c40c717 /sensordatahandler.hpp
parent84b3a08074b87dfd15127849ad5e0e6de6a7de2b (diff)
downloadphosphor-host-ipmid-e0af7209c748794b867bce6901f834d10d47773f.zip
phosphor-host-ipmid-e0af7209c748794b867bce6901f834d10d47773f.tar.gz
IPMI: Virtual sensor support in host ipmid
Resolves openbmc/openbmc#1608 Change-Id: Id76446061fd0fa6dc3dead702538e424293af7ce Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
Diffstat (limited to 'sensordatahandler.hpp')
-rw-r--r--sensordatahandler.hpp150
1 files changed, 150 insertions, 0 deletions
diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
new file mode 100644
index 0000000..fa74235
--- /dev/null
+++ b/sensordatahandler.hpp
@@ -0,0 +1,150 @@
+#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<Assertion, Deassertion>;
+
+using Service = std::string;
+using Path = std::string;
+using Interface = std::string;
+
+using ServicePath = std::pair<Path, Service>;
+
+using Interfaces = std::vector<Interface>;
+
+using MapperResponseType = std::map<Path, std::map<Service, Interfaces>>;
+
+/** @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(const 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
OpenPOWER on IntegriCloud