1 #include "oem_ibm_handler.hpp"
2 
3 #include "libpldm/entity.h"
4 
5 namespace pldm
6 {
7 
8 namespace responder
9 {
10 
11 namespace oem_ibm_platform
12 {
13 
14 int pldm::responder::oem_ibm_platform::Handler::
15     getOemStateSensorReadingsHandler(
16         EntityType entityType, EntityInstance entityInstance,
17         StateSetId stateSetId, CompositeCount compSensorCnt,
18         std::vector<get_sensor_state_field>& stateField)
19 {
20     int rc = PLDM_SUCCESS;
21     stateField.clear();
22 
23     for (size_t i = 0; i < compSensorCnt; i++)
24     {
25         uint8_t sensorOpState{};
26         if (entityType == PLDM_ENTITY_VIRTUAL_MACHINE_MANAGER &&
27             stateSetId == PLDM_OEM_IBM_BOOT_STATE)
28         {
29             sensorOpState = fetchBootSide(entityInstance, codeUpdate);
30         }
31         else
32         {
33             rc = PLDM_PLATFORM_INVALID_STATE_VALUE;
34             break;
35         }
36         stateField.push_back({PLDM_SENSOR_ENABLED, PLDM_SENSOR_UNKNOWN,
37                               PLDM_SENSOR_UNKNOWN, sensorOpState});
38     }
39     return rc;
40 }
41 
42 int pldm::responder::oem_ibm_platform::Handler::
43     oemSetStateEffecterStatesHandler(
44         EntityType entityType, EntityInstance entityInstance,
45         StateSetId stateSetId, CompositeCount compEffecterCnt,
46         const std::vector<set_effecter_state_field>& stateField)
47 {
48     int rc = PLDM_SUCCESS;
49 
50     for (uint8_t currState = 0; currState < compEffecterCnt; ++currState)
51     {
52         if (stateField[currState].set_request == PLDM_REQUEST_SET)
53         {
54             if (entityType == PLDM_ENTITY_VIRTUAL_MACHINE_MANAGER &&
55                 stateSetId == PLDM_OEM_IBM_BOOT_STATE)
56             {
57                 rc = setBootSide(entityInstance, currState, stateField,
58                                  codeUpdate);
59             }
60             else
61             {
62                 rc = PLDM_PLATFORM_SET_EFFECTER_UNSUPPORTED_SENSORSTATE;
63             }
64         }
65         if (rc != PLDM_SUCCESS)
66         {
67             break;
68         }
69     }
70     return rc;
71 }
72 
73 void pldm::responder::oem_ibm_platform::Handler::setPlatformHandler(
74     pldm::responder::platform::Handler* handler)
75 {
76     platformHandler = handler;
77 }
78 
79 } // namespace oem_ibm_platform
80 
81 } // namespace responder
82 
83 } // namespace pldm
84