blob: 482efce8d3268e4a9b7d040fa8c59388b225198e [file] [log] [blame]
#pragma once
#include "manager.hpp"
namespace openpower
{
namespace pels
{
using PELEntryIface = sdbusplus::server::org::open_power::logging::pel::Entry;
using PropertiesVariant = PELEntryIface::PropertiesVariant;
class PELEntry : public PELEntryIface
{
public:
PELEntry() = delete;
PELEntry(const PELEntry&) = delete;
PELEntry& operator=(const PELEntry&) = delete;
PELEntry(PELEntry&&) = delete;
PELEntry& operator=(PELEntry&&) = delete;
virtual ~PELEntry() = default;
/** @brief Constructor to put an object onto the bus at a dbus path.
* @param[in] bus - Bus to attach to.
* @param[in] path - Path to attach at.
* @param[in] prop - Default property values to be set when this interface
* is added to the bus.
* @param[in] id - obmc id for this instance.
* @param[in] repo - Repository pointer to lookup PEL to set appropriate
* attributes.
*/
PELEntry(sdbusplus::bus_t& bus, const std::string& path,
const std::map<std::string, PropertiesVariant>& prop, uint32_t id,
Repository* repo) :
PELEntryIface(bus, path.c_str(), prop, true),
_obmcId(id), _repo(repo)
{}
/** @brief Update managementSystemAck flag.
* @param[in] value - A true value says HMC acknowledged the PEL.
* @returns New property value
*/
bool managementSystemAck(bool value) override;
/**
* @brief Returns OpenBMC event log ID associated with this interface.
*/
uint32_t getMyId(void) const
{
return _obmcId;
}
private:
/**
* @brief Corresponding OpenBMC event log id of this interface.
*/
uint32_t _obmcId;
/**
* @brief Repository pointer to look for updating PEL fields.
*/
Repository* _repo;
};
} // namespace pels
} // namespace openpower