xref: /openbmc/pldm/pldmd/dbus_impl_pdr.hpp (revision c453e164)
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      */
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>>
50         findStateEffecterPDR(uint8_t tid, uint16_t entityID,
51                              uint16_t stateSetId) override;
52 
53     /** @brief Implementation for PdrIntf.FindStateSensorPDR
54      *  @param[in] tid - PLDM terminus ID.
55      *  @param[in] entityID - entity that can be associated with PLDM State set.
56      *  @param[in] stateSetId - value that identifies PLDM State set.
57      */
58     std::vector<std::vector<uint8_t>>
59         findStateSensorPDR(uint8_t tid, uint16_t entityID,
60                            uint16_t stateSetId) override;
61 
62   private:
63     /** @brief pointer to BMC's primary PDR repo */
64     const pldm_pdr* pdrRepo;
65 };
66 
67 } // namespace dbus_api
68 } // namespace pldm
69