1 #pragma once
2 
3 #include "common/types.hpp"
4 #include "common/utils.hpp"
5 #include "pldmd/handler.hpp"
6 
7 namespace pldm
8 {
9 
10 namespace responder
11 {
12 
13 namespace oem_platform
14 {
15 
16 class Handler : public CmdHandler
17 {
18   public:
19     Handler(const pldm::utils::DBusHandler* dBusIntf) : dBusIntf(dBusIntf)
20     {}
21 
22     /** @brief Interface to get the state sensor readings requested by pldm
23      *  requester for OEM types. Each specific type should implement a handler
24      *  of it's own
25      *
26      *  @param[in] entityType - entity type corresponding to the sensor
27      *  @param[in] entityInstance - entity instance number
28      *  @param[in] stateSetId - state set id
29      *  @param[in] compSensorCnt - composite sensor count
30      *  @param[out] stateField - The state field data for each of the states,
31      *                           equal to composite sensor count in number
32      *
33      *  @return - Success or failure in getting the states. Returns failure in
34      *            terms of PLDM completion codes if fetching atleast one state
35      *            fails
36      */
37     virtual int getOemStateSensorReadingsHandler(
38         EntityType entityType, pldm::pdr::EntityInstance entityInstance,
39         pldm::pdr::StateSetId stateSetId,
40         pldm::pdr::CompositeCount compSensorCnt,
41         std::vector<get_sensor_state_field>& stateField) = 0;
42 
43     /** @brief Interface to set the effecter requested by pldm requester
44      *         for OEM types. Each individual oem type should implement
45      *         it's own handler.
46      *
47      *  @param[in] entityType - entity type corresponding to the effecter id
48      *  @param[in] entityInstance - entity instance
49      *  @param[in] stateSetId - state set id
50      *  @param[in] compEffecterCnt - composite effecter count
51      *  @param[in] stateField - The state field data for each of the states,
52      *                         equal to compEffecterCnt in number
53      *  @param[in] effecterId - Effecter id
54      *
55      *  @return - Success or failure in setting the states.Returns failure in
56      *            terms of PLDM completion codes if atleast one state fails to
57      *            be set
58      */
59     virtual int oemSetStateEffecterStatesHandler(
60         uint16_t entityType, uint16_t entityInstance, uint16_t stateSetId,
61         uint8_t compEffecterCnt,
62         std::vector<set_effecter_state_field>& stateField,
63         uint16_t effecterId) = 0;
64 
65     /** @brief Interface to generate the OEM PDRs
66      *
67      * @param[in] repo - instance of concrete implementation of Repo
68      */
69     virtual void buildOEMPDR(pdr_utils::Repo& repo) = 0;
70 
71     virtual ~Handler() = default;
72 
73   protected:
74     const pldm::utils::DBusHandler* dBusIntf;
75 };
76 
77 } // namespace oem_platform
78 
79 } // namespace responder
80 
81 } // namespace pldm
82