xref: /openbmc/phosphor-modbus/common/events.hpp (revision 7184805ae4ede906935133e3e0f8ee2468bc781b)
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