changeset 253:6f078c4a5506

rvinterf and friends converted to use libserial
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 21 Sep 2017 23:45:05 +0000
parents d27a89068280
children 6984b76f3def
files rvinterf/lowlevel/Makefile rvinterf/lowlevel/openport.c rvinterf/lowlevel/rvifmain.c rvinterf/lowlevel/rvtdump.c rvinterf/lowlevel/tfc139.c
diffstat 5 files changed, 24 insertions(+), 103 deletions(-) [+]
line wrap: on
line diff
--- a/rvinterf/lowlevel/Makefile	Thu Sep 21 23:30:53 2017 +0000
+++ b/rvinterf/lowlevel/Makefile	Thu Sep 21 23:45:05 2017 +0000
@@ -2,26 +2,26 @@
 CFLAGS=	-O2
 PROGS=	rvtdump rvinterf tfc139
 INSTBIN=/opt/freecalypso/bin
-LIBG23=	../libg23/libg23.a
+LIBS=	../../libserial/libserial.a ../libg23/libg23.a
 
-RVTDUMP_OBJS=	format.o format_fc.o openport.o output.o packetrx.o rvtdump.o
+RVTDUMP_OBJS=	format.o format_fc.o output.o packetrx.o rvtdump.o
 
 RVINTERF_OBJS=	clientcmd.o format.o format_fc.o localsock.o logsent.o \
-		openport.o output.o packetrx.o packettx.o pktfwd.o rviflcd.o \
+		output.o packetrx.o packettx.o pktfwd.o rviflcd.o \
 		rvifmain.o
 
-TFC139_OBJS=	format.o openport.o output.o packetrx.o packettx.o tfc139.o
+TFC139_OBJS=	format.o output.o packetrx.o packettx.o tfc139.o
 
 all:	${PROGS}
 
-rvtdump:	${RVTDUMP_OBJS} ${LIBG23}
-	${CC} ${CFLAGS} -o $@ ${RVTDUMP_OBJS} ${LIBG23}
+rvtdump:	${RVTDUMP_OBJS} ${LIBS}
+	${CC} ${CFLAGS} -o $@ ${RVTDUMP_OBJS} ${LIBS}
 
-rvinterf:	${RVINTERF_OBJS} ${LIBG23}
-	${CC} ${CFLAGS} -o $@ ${RVINTERF_OBJS} ${LIBG23}
+rvinterf:	${RVINTERF_OBJS} ${LIBS}
+	${CC} ${CFLAGS} -o $@ ${RVINTERF_OBJS} ${LIBS}
 
-tfc139:		${TFC139_OBJS} ${LIBG23}
-	${CC} ${CFLAGS} -o $@ ${TFC139_OBJS} ${LIBG23}
+tfc139:		${TFC139_OBJS} ${LIBS}
+	${CC} ${CFLAGS} -o $@ ${TFC139_OBJS} ${LIBS}
 
 install:	${PROGS}
 	mkdir -p ${INSTBIN}
--- a/rvinterf/lowlevel/openport.c	Thu Sep 21 23:30:53 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * This module takes care of opening the serial port and setting the
- * proper "raw" termios modes, including the baud rate.
- */
-
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#include <termios.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <unistd.h>
-
-int target_fd;
-char *baudrate_name = "115200";
-
-static struct baudrate {
-	char	*name;
-	speed_t	termios_code;
-} baud_rate_table[] = {
-	{"19200",	B19200},
-	{"38400",	B38400},
-	{"57600",	B57600},
-	{"115200",	B115200},
-	/* non-standard high baud rates "remapped" by CP2102 usb2serial IC */
-	{"203125",	B230400},
-	{"406250",	B460800},
-	{"812500",	B921600},
-	/* table search terminator */
-	{NULL,		B0}
-};
-
-static speed_t
-get_baud_rate()
-{
-	struct baudrate *br;
-
-	for (br = baud_rate_table; br->name; br++)
-		if (!strcmp(br->name, baudrate_name))
-			break;
-	if (!br->name) {
-		fprintf(stderr, "baud rate \"%s\" unknown/unsupported\n",
-			baudrate_name);
-		exit(1);
-	}
-	return br->termios_code;
-}
-
-open_target_serial(ttydev)
-	char *ttydev;
-{
-	struct termios target_termios;
-	speed_t br_code;
-
-	br_code = get_baud_rate();
-	target_fd = open(ttydev, O_RDWR|O_NONBLOCK);
-	if (target_fd < 0) {
-		perror(ttydev);
-		exit(1);
-	}
-	target_termios.c_iflag = IGNBRK;
-	target_termios.c_oflag = 0;
-	target_termios.c_cflag = CLOCAL|HUPCL|CREAD|CS8;
-	target_termios.c_lflag = 0;
-	target_termios.c_cc[VMIN] = 1;
-	target_termios.c_cc[VTIME] = 0;
-	cfsetispeed(&target_termios, br_code);
-	cfsetospeed(&target_termios, br_code);
-	if (tcsetattr(target_fd, TCSAFLUSH, &target_termios) < 0) {
-		perror("initial tcsetattr on target");
-		exit(1);
-	}
-	ioctl(target_fd, TIOCEXCL);
-	return 0;
-}
-
-set_serial_nonblock(state)
-	int state;
-{
-	ioctl(target_fd, FIONBIO, &state);
-}
--- a/rvinterf/lowlevel/rvifmain.c	Thu Sep 21 23:30:53 2017 +0000
+++ b/rvinterf/lowlevel/rvifmain.c	Thu Sep 21 23:45:05 2017 +0000
@@ -16,7 +16,6 @@
 #include "client.h"
 
 extern int target_fd, listener;
-extern char *baudrate_name;
 extern char *extlcd_program;
 extern u_char extlcd_invert;
 
@@ -36,6 +35,8 @@
 
 int wakeup_after_sec = 7;
 
+static char *baudrate = "115200";
+
 static char keepalive_msg[] =
 	"Received keepalive query, responding with keepalive answer";
 static u_char keepalive_answer[2] = {RVT_KEEPALIVE_HEADER, 'A'};
@@ -58,7 +59,7 @@
 			no_output++;
 			continue;
 		case 'B':
-			baudrate_name = optarg;
+			baudrate = optarg;
 			continue;
 		case 'd':
 			target_fd = atoi(optarg);
@@ -90,7 +91,8 @@
 	if (target_fd <= 0) {
 		if (argc - optind != 1)
 			goto usage;
-		open_target_serial(argv[optind]);
+		open_serial_port(argv[optind]);
+		set_fixed_baudrate(baudrate);
 	}
 	max_fd = target_fd;
 	if (extlcd_program)
--- a/rvinterf/lowlevel/rvtdump.c	Thu Sep 21 23:30:53 2017 +0000
+++ b/rvinterf/lowlevel/rvtdump.c	Thu Sep 21 23:45:05 2017 +0000
@@ -12,7 +12,6 @@
 #include "../include/pktmux.h"
 
 extern int target_fd;
-extern char *baudrate_name;
 
 extern u_char rxpkt[];
 extern size_t rxpkt_len;
@@ -23,6 +22,8 @@
 int background;
 int no_output;	/* for output.c */
 
+static char *baudrate = "115200";
+
 static char keepalive_msg[] =
 	"Received keepalive query, unable to respond, please run rvinterf";
 
@@ -41,7 +42,7 @@
 			no_output++;	/* for output.c */
 			continue;
 		case 'B':
-			baudrate_name = optarg;
+			baudrate = optarg;
 			continue;
 		case 'd':
 			target_fd = atoi(optarg);
@@ -62,7 +63,8 @@
 	if (target_fd <= 0) {
 		if (argc - optind != 1)
 			goto usage;
-		open_target_serial(argv[optind]);
+		open_serial_port(argv[optind]);
+		set_fixed_baudrate(baudrate);
 	}
 
 	set_serial_nonblock(0);
--- a/rvinterf/lowlevel/tfc139.c	Thu Sep 21 23:30:53 2017 +0000
+++ b/rvinterf/lowlevel/tfc139.c	Thu Sep 21 23:45:05 2017 +0000
@@ -22,7 +22,6 @@
 #include "../include/limits.h"
 
 extern int target_fd;
-extern char *baudrate_name;
 
 extern u_char rxpkt[];
 extern size_t rxpkt_len;
@@ -61,6 +60,7 @@
 static int breakin_in_progress;
 
 static char *target_tty_port;
+static char *baudrate = "57600";
 
 static void
 send_compal_memwrite(addr, payload, payload_len)
@@ -139,14 +139,13 @@
 	int c;
 	fd_set fds;
 
-	baudrate_name = "57600";	/* what C139 firmware uses */
 	while ((c = getopt(argc, argv, "a:AB:l:ms:w:")) != EOF)
 		switch (c) {
 		case 'a':
 			shellcode_load_addr = strtoul(optarg, 0, 16);
 			continue;
 		case 'B':
-			baudrate_name = optarg;
+			baudrate = optarg;
 			continue;
 		case 'l':
 			logfname = optarg;
@@ -177,8 +176,9 @@
 		fprintf(stderr, "usage error: -a option required with -s\n");
 		exit(1);
 	}
-	open_target_serial(argv[optind]);
+	open_serial_port(argv[optind]);
 	target_tty_port = argv[optind];
+	set_fixed_baudrate(baudrate);
 
 	set_serial_nonblock(0);
 	setlinebuf(stdout);