# HG changeset patch # User Mychaela Falconia # Date 1506039581 0 # Node ID ab8410d06ca73c3a03a07b9da6133e6d6db0fe2b # Parent 6984b76f3deff30d064d35acf10496533c287e75 libserial-newlnx: new way implemented, compiles diff -r 6984b76f3def -r ab8410d06ca7 libserial-newlnx/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libserial-newlnx/Makefile Fri Sep 22 00:19:41 2017 +0000 @@ -0,0 +1,13 @@ +CC= gcc +CFLAGS= -O2 +OBJS= baudtab.o nonblock.o openport.o setbaud.o setbyname.o +LIB= libserial.a + +all: ${LIB} + +${LIB}: ${OBJS} + ar rcu $@ ${OBJS} + ranlib $@ + +clean: + rm -f *.[oa] errs diff -r 6984b76f3def -r ab8410d06ca7 libserial-newlnx/baudrate.h --- a/libserial-newlnx/baudrate.h Fri Sep 22 00:09:37 2017 +0000 +++ b/libserial-newlnx/baudrate.h Fri Sep 22 00:19:41 2017 +0000 @@ -3,5 +3,6 @@ struct baudrate { char *name; int termios_code; + int nonstd_speed; int bootrom_code; }; diff -r 6984b76f3def -r ab8410d06ca7 libserial-newlnx/baudtab.c --- a/libserial-newlnx/baudtab.c Fri Sep 22 00:09:37 2017 +0000 +++ b/libserial-newlnx/baudtab.c Fri Sep 22 00:19:41 2017 +0000 @@ -7,25 +7,21 @@ #include #include #include -#include +#include #include "baudrate.h" struct baudrate baud_rate_table[] = { /* the first listed rate will be our default */ - {"115200", B115200, 0}, - {"57600", B57600, 1}, - {"38400", B38400, 2}, - {"19200", B19200, 4}, - /* - * Non-standard high baud rates remapped by CP2102 EEPROM programming - * or by a hacky patch to the ftdi_sio Linux kernel driver to work - * with FTDI adapters. - */ - {"812500", B921600, -1}, - {"406250", B460800, -1}, - {"203125", B230400, -1}, + {"115200", B115200, 0, 0}, + {"57600", B57600, 0, 1}, + {"38400", B38400, 0, 2}, + {"19200", B19200, 0, 4}, + /* Non-standard high baud rates */ + {"812500", BOTHER, 812500, -1}, + {"406250", BOTHER, 406250, -1}, + {"203125", BOTHER, 203125, -1}, /* table search terminator */ - {NULL, B0, -1}, + {NULL, B0, 0, -1}, }; struct baudrate * diff -r 6984b76f3def -r ab8410d06ca7 libserial-newlnx/setbaud.c --- a/libserial-newlnx/setbaud.c Fri Sep 22 00:09:37 2017 +0000 +++ b/libserial-newlnx/setbaud.c Fri Sep 22 00:19:41 2017 +0000 @@ -4,7 +4,8 @@ #include #include -#include +#include +#include #include #include #include @@ -17,18 +18,18 @@ set_serial_baudrate(br) struct baudrate *br; { - struct termios target_termios; + struct termios2 target_termios; target_termios.c_iflag = IGNBRK; target_termios.c_oflag = 0; - target_termios.c_cflag = CLOCAL|HUPCL|CREAD|CS8; + target_termios.c_cflag = br->termios_code | 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->termios_code); - cfsetospeed(&target_termios, br->termios_code); - if (tcsetattr(target_fd, TCSAFLUSH, &target_termios) < 0) { - perror("tcsetattr"); + target_termios.c_ispeed = br->nonstd_speed; + target_termios.c_ospeed = br->nonstd_speed; + if (ioctl(target_fd, TCSETSF2, &target_termios) < 0) { + perror("TCSETSF2"); exit(1); } current_baud_rate = br;