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