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