1*7184805aSJagpal Singh Gill #pragma once 2*7184805aSJagpal Singh Gill 3*7184805aSJagpal Singh Gill #include <sdbusplus/async.hpp> 4*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/Sensor/Value/client.hpp> 5*7184805aSJagpal Singh Gill 6*7184805aSJagpal Singh Gill namespace phosphor::modbus::events 7*7184805aSJagpal Singh Gill { 8*7184805aSJagpal Singh Gill 9*7184805aSJagpal Singh Gill using SensorValueIntf = 10*7184805aSJagpal Singh Gill sdbusplus::client::xyz::openbmc_project::sensor::Value<>; 11*7184805aSJagpal Singh Gill 12*7184805aSJagpal Singh Gill enum class EventLevel 13*7184805aSJagpal Singh Gill { 14*7184805aSJagpal Singh Gill critical, 15*7184805aSJagpal Singh Gill warning 16*7184805aSJagpal Singh Gill }; 17*7184805aSJagpal Singh Gill 18*7184805aSJagpal Singh Gill class Events 19*7184805aSJagpal Singh Gill { 20*7184805aSJagpal Singh Gill public: 21*7184805aSJagpal Singh Gill Events() = delete; 22*7184805aSJagpal Singh Gill Events(sdbusplus::async::context & ctx)23*7184805aSJagpal Singh Gill explicit Events(sdbusplus::async::context& ctx) : ctx(ctx) {} 24*7184805aSJagpal Singh Gill 25*7184805aSJagpal Singh Gill auto generateSensorReadingEvent(sdbusplus::message::object_path objectPath, 26*7184805aSJagpal Singh Gill EventLevel level, double value, 27*7184805aSJagpal Singh Gill SensorValueIntf::Unit unit, bool asserted) 28*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>; 29*7184805aSJagpal Singh Gill 30*7184805aSJagpal Singh Gill auto generateSensorFailureEvent(sdbusplus::message::object_path objectPath, 31*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>; 32*7184805aSJagpal Singh Gill 33*7184805aSJagpal Singh Gill auto generateControllerFailureEvent( 34*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, std::string additionalInfo, 35*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>; 36*7184805aSJagpal Singh Gill 37*7184805aSJagpal Singh Gill auto generatePowerFaultEvent(sdbusplus::message::object_path objectPath, 38*7184805aSJagpal Singh Gill std::string additionalInfo, bool asserted) 39*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>; 40*7184805aSJagpal Singh Gill 41*7184805aSJagpal Singh Gill auto generateFilterFailureEvent(sdbusplus::message::object_path objectPath, 42*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>; 43*7184805aSJagpal Singh Gill 44*7184805aSJagpal Singh Gill auto generatePumpFailureEvent(sdbusplus::message::object_path objectPath, 45*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>; 46*7184805aSJagpal Singh Gill 47*7184805aSJagpal Singh Gill auto generateFanFailureEvent(sdbusplus::message::object_path objectPath, 48*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>; 49*7184805aSJagpal Singh Gill 50*7184805aSJagpal Singh Gill auto generateLeakDetectedEvent(sdbusplus::message::object_path objectPath, 51*7184805aSJagpal Singh Gill EventLevel level, bool asserted) 52*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>; 53*7184805aSJagpal Singh Gill 54*7184805aSJagpal Singh Gill // Button Pressed 55*7184805aSJagpal Singh Gill 56*7184805aSJagpal Singh Gill private: 57*7184805aSJagpal Singh Gill /** @brief Map type for event name to log event object path */ 58*7184805aSJagpal Singh Gill using event_map_t = std::map<std::string, sdbusplus::message::object_path>; 59*7184805aSJagpal Singh Gill 60*7184805aSJagpal Singh Gill sdbusplus::async::context& ctx; 61*7184805aSJagpal Singh Gill event_map_t pendingEvents; 62*7184805aSJagpal Singh Gill }; 63*7184805aSJagpal Singh Gill 64*7184805aSJagpal Singh Gill } // namespace phosphor::modbus::events 65