common/pldm/pldm_base.c (48 lines of code) (raw):

#include "pldm.h" #include <logging/log.h> #include <string.h> #include <sys/printk.h> #include <sys/slist.h> #include <sys/util.h> #include <zephyr.h> LOG_MODULE_DECLARE(pldm); uint8_t set_tid(void *mctp_inst, uint8_t *buf, uint16_t len, uint8_t *resp, uint16_t *resp_len, void *ext_params) { if (!mctp_inst || !buf || !resp || !resp_len) return PLDM_ERROR; struct _set_tid_req *req_p = (struct _set_tid_req *)buf; struct _set_tid_resp *resp_p = (struct _set_tid_resp *)resp; *resp_len = 1; resp_p->completion_code = (sizeof(*req_p) != len) ? PLDM_BASE_CODES_ERROR_INVALID_LENGTH : PLDM_BASE_CODES_SUCCESS; return PLDM_SUCCESS; } uint8_t get_tid(void *mctp_inst, uint8_t *buf, uint16_t len, uint8_t *resp, uint16_t *resp_len, void *ext_params) { if (!mctp_inst || !buf || !resp || !resp_len) return PLDM_ERROR; struct _get_tid_resp *p = (struct _get_tid_resp *)resp; p->completion_code = PLDM_BASE_CODES_SUCCESS; p->tid = DEFAULT_TID; *resp_len = sizeof(*p); return PLDM_SUCCESS; } static pldm_cmd_handler pldm_base_cmd_tbl[] = { { PLDM_BASE_CMD_CODE_SETTID, set_tid }, { PLDM_BASE_CMD_CODE_GETTID, get_tid } }; uint8_t pldm_base_handler_query(uint8_t code, void **ret_fn) { if (!ret_fn) return PLDM_ERROR; pldm_cmd_proc_fn fn = NULL; uint8_t i; for (i = 0; i < ARRAY_SIZE(pldm_base_cmd_tbl); i++) { if (pldm_base_cmd_tbl[i].cmd_code == code) { fn = pldm_base_cmd_tbl[i].fn; break; } } *ret_fn = (void *)fn; return fn ? PLDM_SUCCESS : PLDM_ERROR; }