xref: /openbmc/pldm/pldmd/dbus_impl_pdr.hpp (revision 16c2a0a03e5daac77e204eb99e00711490fb6e26)
11521f6d1SDeepak Kodihalli #pragma once
21521f6d1SDeepak Kodihalli 
31521f6d1SDeepak Kodihalli #include "xyz/openbmc_project/PLDM/PDR/server.hpp"
41521f6d1SDeepak Kodihalli 
5c453e164SGeorge Liu #include <libpldm/pdr.h>
6c453e164SGeorge Liu #include <libpldm/platform.h>
7c453e164SGeorge Liu 
81521f6d1SDeepak Kodihalli #include <sdbusplus/bus.hpp>
91521f6d1SDeepak Kodihalli #include <sdbusplus/server/object.hpp>
101521f6d1SDeepak Kodihalli 
111521f6d1SDeepak Kodihalli #include <vector>
121521f6d1SDeepak Kodihalli 
131521f6d1SDeepak Kodihalli namespace pldm
141521f6d1SDeepak Kodihalli {
151521f6d1SDeepak Kodihalli namespace dbus_api
161521f6d1SDeepak Kodihalli {
171521f6d1SDeepak Kodihalli 
1884b790cbSPatrick Williams using PdrIntf = sdbusplus::server::object_t<
191521f6d1SDeepak Kodihalli     sdbusplus::xyz::openbmc_project::PLDM::server::PDR>;
201521f6d1SDeepak Kodihalli 
211521f6d1SDeepak Kodihalli /** @class Pdr
221521f6d1SDeepak Kodihalli  *  @brief OpenBMC PLDM.PDR Implementation
231521f6d1SDeepak Kodihalli  *  @details A concrete implementation for the
241521f6d1SDeepak Kodihalli  *  xyz.openbmc_project.PLDM.PDR DBus APIs.
251521f6d1SDeepak Kodihalli  */
261521f6d1SDeepak Kodihalli class Pdr : public PdrIntf
271521f6d1SDeepak Kodihalli {
281521f6d1SDeepak Kodihalli   public:
291521f6d1SDeepak Kodihalli     Pdr() = delete;
301521f6d1SDeepak Kodihalli     Pdr(const Pdr&) = delete;
311521f6d1SDeepak Kodihalli     Pdr& operator=(const Pdr&) = delete;
321521f6d1SDeepak Kodihalli     Pdr(Pdr&&) = delete;
331521f6d1SDeepak Kodihalli     Pdr& operator=(Pdr&&) = delete;
341521f6d1SDeepak Kodihalli     virtual ~Pdr() = default;
351521f6d1SDeepak Kodihalli 
361521f6d1SDeepak Kodihalli     /** @brief Constructor to put object onto bus at a dbus path.
371521f6d1SDeepak Kodihalli      *  @param[in] bus - Bus to attach to.
381521f6d1SDeepak Kodihalli      *  @param[in] path - Path to attach at.
391521f6d1SDeepak Kodihalli      *  @param[in] repo - pointer to BMC's primary PDR repo
401521f6d1SDeepak Kodihalli      */
Pdr(sdbusplus::bus_t & bus,const std::string & path,const pldm_pdr * repo)4184b790cbSPatrick Williams     Pdr(sdbusplus::bus_t& bus, const std::string& path, const pldm_pdr* repo) :
4284b790cbSPatrick Williams         PdrIntf(bus, path.c_str()), pdrRepo(repo) {};
431521f6d1SDeepak Kodihalli 
441521f6d1SDeepak Kodihalli     /** @brief Implementation for PdrIntf.FindStateEffecterPDR
451521f6d1SDeepak Kodihalli      *  @param[in] tid - PLDM terminus ID.
461521f6d1SDeepak Kodihalli      *  @param[in] entityID - entity that can be associated with PLDM State set.
471521f6d1SDeepak Kodihalli      *  @param[in] stateSetId - value that identifies PLDM State set.
481521f6d1SDeepak Kodihalli      */
49*16c2a0a0SPatrick Williams     std::vector<std::vector<uint8_t>> findStateEffecterPDR(
50*16c2a0a0SPatrick Williams         uint8_t tid, uint16_t entityID, uint16_t stateSetId) override;
511521f6d1SDeepak Kodihalli 
521521f6d1SDeepak Kodihalli     /** @brief Implementation for PdrIntf.FindStateSensorPDR
531521f6d1SDeepak Kodihalli      *  @param[in] tid - PLDM terminus ID.
541521f6d1SDeepak Kodihalli      *  @param[in] entityID - entity that can be associated with PLDM State set.
551521f6d1SDeepak Kodihalli      *  @param[in] stateSetId - value that identifies PLDM State set.
561521f6d1SDeepak Kodihalli      */
57*16c2a0a0SPatrick Williams     std::vector<std::vector<uint8_t>> findStateSensorPDR(
58*16c2a0a0SPatrick Williams         uint8_t tid, uint16_t entityID, uint16_t stateSetId) override;
591521f6d1SDeepak Kodihalli 
601521f6d1SDeepak Kodihalli   private:
611521f6d1SDeepak Kodihalli     /** @brief pointer to BMC's primary PDR repo */
621521f6d1SDeepak Kodihalli     const pldm_pdr* pdrRepo;
631521f6d1SDeepak Kodihalli };
641521f6d1SDeepak Kodihalli 
651521f6d1SDeepak Kodihalli } // namespace dbus_api
661521f6d1SDeepak Kodihalli } // namespace pldm
67