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 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), 36 _obmcId(id), _repo(repo) 37 {} 38 39 /** @brief Update managementSystemAck flag. 40 * @param[in] value - A true value says HMC acknowledged the PEL. 41 * @returns New property value 42 */ 43 bool managementSystemAck(bool value) override; 44 45 /** 46 * @brief Returns OpenBMC event log ID associated with this interface. 47 */ 48 uint32_t getMyId(void) const 49 { 50 return _obmcId; 51 } 52 53 private: 54 /** 55 * @brief Corresponding OpenBMC event log id of this interface. 56 */ 57 uint32_t _obmcId; 58 59 /** 60 * @brief Repository pointer to look for updating PEL fields. 61 */ 62 Repository* _repo; 63 }; 64 65 } // namespace pels 66 } // namespace openpower 67