xref: /openbmc/libpldm/src/transport/transport.h (revision efb400697eede42f14ad6290660a4aecbc314141)
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