13d36ee2eSJeremy Kerr /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 24cdc200fSJeremy Kerr 34cdc200fSJeremy Kerr #ifndef _LIBMCTP_SERIAL_H 44cdc200fSJeremy Kerr #define _LIBMCTP_SERIAL_H 54cdc200fSJeremy Kerr 6b11ad2cfSDeepak Kodihalli #ifdef __cplusplus 7b11ad2cfSDeepak Kodihalli extern "C" { 8b11ad2cfSDeepak Kodihalli #endif 9b11ad2cfSDeepak Kodihalli 108682ef24SJeremy Kerr #include <libmctp.h> 114cdc200fSJeremy Kerr 124cdc200fSJeremy Kerr struct mctp_binding_serial; 134cdc200fSJeremy Kerr 144cdc200fSJeremy Kerr struct mctp_binding_serial *mctp_serial_init(void); 15f8b4749aSAndrew Jeffery void mctp_serial_destroy(struct mctp_binding_serial *serial); 16597b3697SJeremy Kerr 173b36d17cSJeremy Kerr struct mctp_binding *mctp_binding_serial_core(struct mctp_binding_serial *b); 18597b3697SJeremy Kerr 19597b3697SJeremy Kerr /* file-based IO */ 201111c6a5SAndrew Jeffery struct pollfd; 211111c6a5SAndrew Jeffery int mctp_serial_init_pollfd(struct mctp_binding_serial *serial, 221111c6a5SAndrew Jeffery struct pollfd *pollfd); 231111c6a5SAndrew Jeffery 244cdc200fSJeremy Kerr int mctp_serial_read(struct mctp_binding_serial *serial); 25ad7bbe73SAndrew Jeffery int mctp_serial_open_path(struct mctp_binding_serial *serial, const char *path); 264cdc200fSJeremy Kerr void mctp_serial_open_fd(struct mctp_binding_serial *serial, int fd); 274cdc200fSJeremy Kerr 28597b3697SJeremy Kerr /* direct function call IO */ 29*7c51d831SMatt Johnston typedef int 30*7c51d831SMatt Johnston __attribute__((warn_unused_result)) (*mctp_serial_tx_fn)(void *data, 31*7c51d831SMatt Johnston void *buf, 32*7c51d831SMatt Johnston size_t len); 33597b3697SJeremy Kerr void mctp_serial_set_tx_fn(struct mctp_binding_serial *serial, 34597b3697SJeremy Kerr mctp_serial_tx_fn fn, void *data); 35ad7bbe73SAndrew Jeffery int mctp_serial_rx(struct mctp_binding_serial *serial, const void *buf, 36ad7bbe73SAndrew Jeffery size_t len); 37597b3697SJeremy Kerr 38b11ad2cfSDeepak Kodihalli #ifdef __cplusplus 39b11ad2cfSDeepak Kodihalli } 40b11ad2cfSDeepak Kodihalli #endif 41b11ad2cfSDeepak Kodihalli 424cdc200fSJeremy Kerr #endif /* _LIBMCTP_SERIAL_H */ 43