xref: /openbmc/libmctp/utils/mctp-in.c (revision f967c709)
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