xref: /openbmc/pldm/pldmd/dbus_impl_pdr.hpp (revision 16c2a0a03e5daac77e204eb99e00711490fb6e26)
1  #pragma once
2  
3  #include "xyz/openbmc_project/PLDM/PDR/server.hpp"
4  
5  #include <libpldm/pdr.h>
6  #include <libpldm/platform.h>
7  
8  #include <sdbusplus/bus.hpp>
9  #include <sdbusplus/server/object.hpp>
10  
11  #include <vector>
12  
13  namespace pldm
14  {
15  namespace dbus_api
16  {
17  
18  using PdrIntf = sdbusplus::server::object_t<
19      sdbusplus::xyz::openbmc_project::PLDM::server::PDR>;
20  
21  /** @class Pdr
22   *  @brief OpenBMC PLDM.PDR Implementation
23   *  @details A concrete implementation for the
24   *  xyz.openbmc_project.PLDM.PDR DBus APIs.
25   */
26  class Pdr : public PdrIntf
27  {
28    public:
29      Pdr() = delete;
30      Pdr(const Pdr&) = delete;
31      Pdr& operator=(const Pdr&) = delete;
32      Pdr(Pdr&&) = delete;
33      Pdr& operator=(Pdr&&) = delete;
34      virtual ~Pdr() = default;
35  
36      /** @brief Constructor to put object onto bus at a dbus path.
37       *  @param[in] bus - Bus to attach to.
38       *  @param[in] path - Path to attach at.
39       *  @param[in] repo - pointer to BMC's primary PDR repo
40       */
Pdr(sdbusplus::bus_t & bus,const std::string & path,const pldm_pdr * repo)41      Pdr(sdbusplus::bus_t& bus, const std::string& path, const pldm_pdr* repo) :
42          PdrIntf(bus, path.c_str()), pdrRepo(repo) {};
43  
44      /** @brief Implementation for PdrIntf.FindStateEffecterPDR
45       *  @param[in] tid - PLDM terminus ID.
46       *  @param[in] entityID - entity that can be associated with PLDM State set.
47       *  @param[in] stateSetId - value that identifies PLDM State set.
48       */
49      std::vector<std::vector<uint8_t>> findStateEffecterPDR(
50          uint8_t tid, uint16_t entityID, uint16_t stateSetId) override;
51  
52      /** @brief Implementation for PdrIntf.FindStateSensorPDR
53       *  @param[in] tid - PLDM terminus ID.
54       *  @param[in] entityID - entity that can be associated with PLDM State set.
55       *  @param[in] stateSetId - value that identifies PLDM State set.
56       */
57      std::vector<std::vector<uint8_t>> findStateSensorPDR(
58          uint8_t tid, uint16_t entityID, uint16_t stateSetId) override;
59  
60    private:
61      /** @brief pointer to BMC's primary PDR repo */
62      const pldm_pdr* pdrRepo;
63  };
64  
65  } // namespace dbus_api
66  } // namespace pldm
67