/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ #ifndef LIBPLDM_TRANSPORT_TEST_H #define LIBPLDM_TRANSPORT_TEST_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif enum pldm_transport_test_element { PLDM_TRANSPORT_TEST_ELEMENT_MSG_SEND, PLDM_TRANSPORT_TEST_ELEMENT_MSG_RECV, PLDM_TRANSPORT_TEST_ELEMENT_LATENCY, }; struct pldm_transport_test_msg_send { pldm_tid_t dst; const void *msg; size_t len; }; struct pldm_transport_test_msg_recv { pldm_tid_t src; const void *msg; size_t len; }; struct pldm_transport_test_descriptor { enum pldm_transport_test_element type; union { struct pldm_transport_test_msg_send send_msg; struct pldm_transport_test_msg_recv recv_msg; struct itimerspec latency; }; }; struct pldm_transport_test; int pldm_transport_test_init(struct pldm_transport_test **ctx, const struct pldm_transport_test_descriptor *seq, size_t count); void pldm_transport_test_destroy(struct pldm_transport_test *ctx); struct pldm_transport * pldm_transport_test_core(struct pldm_transport_test *ctx); #if PLDM_HAS_POLL struct pollfd; int pldm_transport_test_init_pollfd(struct pldm_transport *ctx, struct pollfd *pollfd); #endif #ifdef __cplusplus } #endif #endif