1691668feSPatrick Williams /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 280223236SRashmica Gupta #ifndef LIBPLDM_SRC_TRANSPORT_TRANSPORT_H 380223236SRashmica Gupta #define LIBPLDM_SRC_TRANSPORT_TRANSPORT_H 4c1b66f42SRashmica Gupta 5*efb40069SAndrew Jeffery #include <libpldm/base.h> 6*efb40069SAndrew Jeffery #include <libpldm/pldm.h> 7c1b66f42SRashmica Gupta struct pollfd; 8c1b66f42SRashmica Gupta 9c1b66f42SRashmica Gupta /** 10c1b66f42SRashmica Gupta * @brief Generic PLDM transport struct 11c1b66f42SRashmica Gupta * 12c1b66f42SRashmica Gupta * @var name - name of the transport 13c1b66f42SRashmica Gupta * @var version - version of transport to use 14c1b66f42SRashmica Gupta * @var recv - pointer to the transport specific function to receive a message 15c1b66f42SRashmica Gupta * @var send - pointer to the transport specific function to send a message 16c1b66f42SRashmica Gupta * @var init_pollfd - pointer to the transport specific init_pollfd function 17c1b66f42SRashmica Gupta */ 18c1b66f42SRashmica Gupta struct pldm_transport { 19c1b66f42SRashmica Gupta const char *name; 20c1b66f42SRashmica Gupta uint8_t version; 21c1b66f42SRashmica Gupta pldm_requester_rc_t (*recv)(struct pldm_transport *transport, 2224576290SRashmica Gupta pldm_tid_t *tid, void **pldm_resp_msg, 23f1ebde49SRashmica Gupta size_t *msg_len); 24c1b66f42SRashmica Gupta pldm_requester_rc_t (*send)(struct pldm_transport *transport, 25f1ebde49SRashmica Gupta pldm_tid_t tid, const void *pldm_msg, 26f1ebde49SRashmica Gupta size_t msg_len); 27c1b66f42SRashmica Gupta int (*init_pollfd)(struct pldm_transport *transport, 28c1b66f42SRashmica Gupta struct pollfd *pollfd); 29c1b66f42SRashmica Gupta }; 30c1b66f42SRashmica Gupta 3180223236SRashmica Gupta #endif // LIBPLDM_SRC_TRANSPORT_TRANSPORT_H 32