/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ #include "compiler.h" #include "libmctp.h" #include "libmctp-serial.h" #include <assert.h> #include <err.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/poll.h> #include <sys/socket.h> static void rx_message(uint8_t eid __unused, bool tag_owner __unused, uint8_t msg_tag __unused, void *data __unused, void *msg, size_t len) { ssize_t rc; rc = write(STDOUT_FILENO, msg, len); if (rc < 0) warn("Write failed"); else if ((size_t)rc < len) warnx("Short write of length %zd, requested %zd", rc, len); } int main(void) { struct mctp_binding_serial *serial; struct mctp *mctp; int rc; mctp = mctp_init(); assert(mctp); serial = mctp_serial_init(); assert(serial); mctp_serial_open_fd(serial, STDIN_FILENO); mctp_register_bus(mctp, mctp_binding_serial_core(serial), 8); mctp_set_rx_all(mctp, rx_message, NULL); for (;;) { rc = mctp_serial_read(serial); if (rc) break; } return EXIT_SUCCESS; }