/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */

#ifndef _MCTP_TESTS_TEST_UTILS_H
#define _MCTP_TESTS_TEST_UTILS_H

#include <libmctp.h>
#include <container_of.h>

/* test binding implementation */

/* standard binding interface */
struct mctp_binding_test *mctp_binding_test_init(void);
void mctp_binding_test_destroy(struct mctp_binding_test *test);
void mctp_binding_test_register_bus(struct mctp_binding_test *binding,
				    struct mctp *mctp, mctp_eid_t eid);

/* internal test binding interface */
void mctp_binding_test_rx_raw(struct mctp_binding_test *test, void *buf,
			      size_t len);

/* gerneral utility functions */

/* create a MCTP stack, and add a test binding, using the specified EID */
void mctp_test_stack_init(struct mctp **mctp,
			  struct mctp_binding_test **binding, mctp_eid_t eid);

#endif /* _MCTP_TESTS_TEST_UTILS_H */
