#include "platform_oem_ibm.h" | |
#include "platform.h" | |
#include <string.h> | |
int encode_bios_attribute_update_event_req(uint8_t instance_id, | |
uint8_t format_version, uint8_t tid, | |
uint8_t num_handles, | |
const uint8_t *list_of_handles, | |
size_t payload_length, | |
struct pldm_msg *msg) | |
{ | |
if (format_version != 1) { | |
return PLDM_ERROR_INVALID_DATA; | |
} | |
if (msg == NULL || list_of_handles == NULL) { | |
return PLDM_ERROR_INVALID_DATA; | |
} | |
if (num_handles == 0) { | |
return PLDM_ERROR_INVALID_DATA; | |
} | |
if (payload_length != | |
(PLDM_PLATFORM_EVENT_MESSAGE_MIN_REQ_BYTES + sizeof(num_handles) + | |
(num_handles * sizeof(uint16_t)))) { | |
return PLDM_ERROR_INVALID_LENGTH; | |
} | |
struct pldm_header_info header = {0}; | |
header.msg_type = PLDM_REQUEST; | |
header.instance = instance_id; | |
header.pldm_type = PLDM_PLATFORM; | |
header.command = PLDM_PLATFORM_EVENT_MESSAGE; | |
uint8_t rc = pack_pldm_header(&header, &(msg->hdr)); | |
if (rc != PLDM_SUCCESS) { | |
return rc; | |
} | |
struct pldm_bios_attribute_update_event_req *request = | |
(struct pldm_bios_attribute_update_event_req *)msg->payload; | |
request->format_version = format_version; | |
request->tid = tid; | |
request->event_class = PLDM_EVENT_TYPE_OEM_EVENT_BIOS_ATTRIBUTE_UPDATE; | |
request->num_handles = num_handles; | |
memcpy(request->bios_attribute_handles, list_of_handles, | |
num_handles * sizeof(uint16_t)); | |
return PLDM_SUCCESS; | |
} |