1 #pragma once
2 
3 #include "manager.hpp"
4 namespace openpower
5 {
6 namespace pels
7 {
8 
9 using PELEntryIface = sdbusplus::server::org::open_power::logging::pel::Entry;
10 using PropertiesVariant = PELEntryIface::PropertiesVariant;
11 
12 class PELEntry : public PELEntryIface
13 {
14   public:
15     PELEntry() = delete;
16     PELEntry(const PELEntry&) = delete;
17     PELEntry& operator=(const PELEntry&) = delete;
18     PELEntry(PELEntry&&) = delete;
19     PELEntry& operator=(PELEntry&&) = delete;
20     virtual ~PELEntry() = default;
21 
22     /** @brief Constructor to put an object onto the bus at a dbus path.
23      *  @param[in] bus - Bus to attach to.
24      *  @param[in] path - Path to attach at.
25      *  @param[in] prop - Default property values to be set when this interface
26      * is added to the bus.
27      *  @param[in] id - obmc id for this instance.
28      *  @param[in] repo - Repository pointer to lookup PEL to set appropriate
29      * attributes.
30      */
31 
32     PELEntry(sdbusplus::bus_t& bus, const std::string& path,
33              const std::map<std::string, PropertiesVariant>& prop, uint32_t id,
34              Repository* repo) :
35         PELEntryIface(bus, path.c_str(), prop, true), _obmcId(id), _repo(repo)
36     {}
37 
38     /** @brief Update managementSystemAck flag.
39      *  @param[in] value - A true value says HMC acknowledged the PEL.
40      *  @returns New property value
41      */
42     bool managementSystemAck(bool value) override;
43 
44     /**
45      * @brief Returns OpenBMC event log ID associated with this interface.
46      */
47     uint32_t getMyId(void) const
48     {
49         return _obmcId;
50     }
51 
52   private:
53     /**
54      * @brief Corresponding OpenBMC event log id of this interface.
55      */
56     uint32_t _obmcId;
57 
58     /**
59      * @brief Repository pointer to look for updating PEL fields.
60      */
61     Repository* _repo;
62 };
63 
64 } // namespace pels
65 } // namespace openpower
66