view rvinterf/rvtdump.c @ 128:789a9a95533f

nuc-fw: more minor preparations for the big transition
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Fri, 01 Nov 2013 01:31:39 +0000
parents f4f0c8738dcb
children 56b53c289785
line wrap: on
line source

/*
 * This program reads bytes from a serial port, parses them assuming
 * TI's RVT MUX format, and prints every decoded packet.
 */

#include <sys/types.h>
#include <sys/errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

extern int target_fd;
extern char *baudrate_name;

main(argc, argv)
	char **argv;
{
	extern char *optarg;
	extern int optind;
	int c;
	fd_set fds;

	while ((c = getopt(argc, argv, "b:d:")) != EOF)
		switch (c) {
		case 'b':
			baudrate_name = optarg;
			continue;
		case 'd':
			target_fd = atoi(optarg);
			continue;
		case '?':
		default:
usage:			fprintf(stderr,
			"usage: %s [-b baudrate] ttyport\n", argv[0]);
			exit(1);
		}
	if (target_fd <= 0) {
		if (argc - optind != 1)
			goto usage;
		open_target_serial(argv[optind]);
	}

	set_serial_nonblock(0);
	setlinebuf(stdout);
	for (;;) {
		FD_ZERO(&fds);
		FD_SET(target_fd, &fds);
		c = select(target_fd+1, &fds, 0, 0, 0);
		if (c < 0) {
			if (errno == EINTR)
				continue;
			perror("select");
			exit(1);
		}
		if (FD_ISSET(target_fd, &fds))
			process_serial_rx();
	}
}

handle_rx_packet()
{
	print_rx_packet();
}