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