1 #pragma once 2 3 #include "manager.hpp" 4 namespace openpower 5 { 6 namespace pels 7 { 8 9 using PELEntryIface = sdbusplus::org::open_power::Logging::PEL::server::Entry; 10 using PropertiesVariant = PELEntryIface::PropertiesVariant; 11 12 class PELEntry : public PELEntryIface 13 { 14 15 public: 16 PELEntry() = delete; 17 PELEntry(const PELEntry&) = delete; 18 PELEntry& operator=(const PELEntry&) = delete; 19 PELEntry(PELEntry&&) = delete; 20 PELEntry& operator=(PELEntry&&) = delete; 21 virtual ~PELEntry() = default; 22 23 /** @brief Constructor to put an object onto the bus at a dbus path. 24 * @param[in] bus - Bus to attach to. 25 * @param[in] path - Path to attach at. 26 * @param[in] prop - Default property values to be set when this interface 27 * is added to the bus. 28 * @param[in] id - obmc id for this instance. 29 * @param[in] repo - Repository pointer to lookup PEL to set appropriate 30 * attributes. 31 */ 32 33 PELEntry(sdbusplus::bus::bus& bus, const std::string& path, 34 const std::map<std::string, PropertiesVariant>& prop, uint32_t id, 35 Repository* repo) : 36 PELEntryIface(bus, path.c_str(), prop), 37 _obmcId(id), _repo(repo) 38 { 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 */ 50 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