/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ #ifndef _LIBMCTP_SERIAL_H #define _LIBMCTP_SERIAL_H #ifdef __cplusplus extern "C" { #endif #include struct mctp_binding_serial; struct mctp_binding_serial *mctp_serial_init(void); void mctp_serial_destroy(struct mctp_binding_serial *serial); struct mctp_binding *mctp_binding_serial_core(struct mctp_binding_serial *b); /* file-based IO */ struct pollfd; int mctp_serial_init_pollfd(struct mctp_binding_serial *serial, struct pollfd *pollfd); int mctp_serial_read(struct mctp_binding_serial *serial); int mctp_serial_open_path(struct mctp_binding_serial *serial, const char *path); void mctp_serial_open_fd(struct mctp_binding_serial *serial, int fd); /* direct function call IO */ typedef int (*mctp_serial_tx_fn)(void *data, void *buf, size_t len) __attribute__((warn_unused_result)); void mctp_serial_set_tx_fn(struct mctp_binding_serial *serial, mctp_serial_tx_fn fn, void *data); int mctp_serial_rx(struct mctp_binding_serial *serial, const void *buf, size_t len); #ifdef __cplusplus } #endif #endif /* _LIBMCTP_SERIAL_H */