1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 2 3 #include <assert.h> 4 #include <err.h> 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <unistd.h> 8 #include <sys/poll.h> 9 #include <sys/socket.h> 10 11 #include "libmctp.h" 12 #include "libmctp-serial.h" 13 14 static void rx_message(uint8_t eid, void *data, void *msg, size_t len) 15 { 16 ssize_t rc; 17 (void)eid; 18 (void)data; 19 20 rc = write(STDOUT_FILENO, msg, len); 21 if (rc < 0) 22 warn("Write failed"); 23 else if ((size_t)rc < len) 24 warnx("Short write of length %zd, requested %zd", rc, len); 25 } 26 27 int main(void) 28 { 29 struct mctp_binding_serial *serial; 30 struct mctp *mctp; 31 int rc; 32 33 mctp = mctp_init(); 34 assert(mctp); 35 36 serial = mctp_serial_init(); 37 assert(serial); 38 39 mctp_serial_open_fd(serial, STDIN_FILENO); 40 41 mctp_register_bus(mctp, mctp_binding_serial_core(serial), 8); 42 43 mctp_set_rx_all(mctp, rx_message, NULL); 44 45 for (;;) { 46 rc = mctp_serial_read(serial); 47 if (rc) 48 break; 49 } 50 51 return EXIT_SUCCESS; 52 53 } 54