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