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