blob: 944e7ae402db59c9bdd261eedfcffdc1621691d2 [file] [log] [blame]
Jim Wright7945dd22021-04-06 16:55:15 -05001#pragma once
2
Jim Wright930458c2022-01-24 14:37:27 -06003#include <sdbusplus/bus.hpp>
4
5#include <map>
6#include <string>
7
Jim Wright7945dd22021-04-06 16:55:15 -05008namespace phosphor::power::sequencer
9{
10
11/**
12 * @class PowerSequencerMonitor
13 * Define a base class for monitoring a power sequencer device.
14 */
15class PowerSequencerMonitor
16{
17 public:
Jim Wright930458c2022-01-24 14:37:27 -060018 PowerSequencerMonitor() = delete;
Jim Wright7945dd22021-04-06 16:55:15 -050019 PowerSequencerMonitor(const PowerSequencerMonitor&) = delete;
20 PowerSequencerMonitor& operator=(const PowerSequencerMonitor&) = delete;
21 PowerSequencerMonitor(PowerSequencerMonitor&&) = delete;
22 PowerSequencerMonitor& operator=(PowerSequencerMonitor&&) = delete;
23 virtual ~PowerSequencerMonitor() = default;
Jim Wright930458c2022-01-24 14:37:27 -060024
25 /**
26 * Create a base device object for power sequence monitoring.
27 * @param[in] bus D-Bus bus object
28 */
29 explicit PowerSequencerMonitor(sdbusplus::bus::bus& bus);
30
31 /**
32 * Logs an error using the D-Bus Create method.
33 * @param[in] message Message property of the error log entry
34 * @param[in] additionalData AdditionalData property of the error log entry
35 */
36 void logError(const std::string& message,
37 std::map<std::string, std::string>& additionalData);
38
39 /**
40 * Analyzes the device for errors when the device is
41 * known to be in an error state. A log will be created.
42 * @param[in] timeout if the failure state was determined by timing out
43 * @param[in] powerSupplyError The power supply error to log. A default
44 * std:string, i.e. empty string ("") is passed when there is no power
45 * supply error to log.
46 */
47 virtual void onFailure(bool timeout, const std::string& powerSupplyError);
48
49 protected:
50 /**
51 * The D-Bus bus object
52 */
53 sdbusplus::bus::bus& bus;
Jim Wright7945dd22021-04-06 16:55:15 -050054};
55
56} // namespace phosphor::power::sequencer