xref: /openbmc/pldm/pldmd/dbus_impl_pdr.hpp (revision f47694ff)
1 #pragma once
2 
3 #include "libpldm/pdr.h"
4 #include "libpldm/platform.h"
5 
6 #include "xyz/openbmc_project/PLDM/PDR/server.hpp"
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::object<
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::bus& bus, const std::string& path,
42         const pldm_pdr* repo) :
43         PdrIntf(bus, path.c_str()),
44         pdrRepo(repo){};
45 
46     /** @brief Implementation for PdrIntf.FindStateEffecterPDR
47      *  @param[in] tid - PLDM terminus ID.
48      *  @param[in] entityID - entity that can be associated with PLDM State set.
49      *  @param[in] stateSetId - value that identifies PLDM State set.
50      */
51     std::vector<std::vector<uint8_t>>
52         findStateEffecterPDR(uint8_t tid, uint16_t entityID,
53                              uint16_t stateSetId) override;
54 
55     /** @brief Implementation for PdrIntf.FindStateSensorPDR
56      *  @param[in] tid - PLDM terminus ID.
57      *  @param[in] entityID - entity that can be associated with PLDM State set.
58      *  @param[in] stateSetId - value that identifies PLDM State set.
59      */
60     std::vector<std::vector<uint8_t>>
61         findStateSensorPDR(uint8_t tid, uint16_t entityID,
62                            uint16_t stateSetId) override;
63 
64   private:
65     /** @brief pointer to BMC's primary PDR repo */
66     const pldm_pdr* pdrRepo;
67 };
68 
69 } // namespace dbus_api
70 } // namespace pldm
71