30#if defined(linux) || defined(_IBMR2) || \
31 (defined(__APPLE__) && defined(__MACH__)) || \
32 defined(__NetBSD__) || defined(__FreeBSD__)
42#include <sys/termiox.h>
50#define CRTSCTS CNEW_RTSCTS
100 for (bptr = btable; bptr->speed; bptr++)
101 if (bptr->speed == speed)
104 fprintf(stderr,
"Cannot match selected speed %d\n", speed);
112 printf(
"using %s...\n", dev);
117#define seteuid(a) setresuid(-1, a, -1)
124 if ((fd = open(dev, O_RDWR |
O_NOCTTY, 0)) < 0) {
129 perror(
"seteuid back");
133 printf(
"open done\n");
135 ioctl(fd, TIOCEXCL, (
char *) 0);
137 fprintf(stderr,
"WARNING: opened %s non-exclusive!\n", dev);
140 memset(&ti, 0,
sizeof(
struct termios));
141 ti.c_cflag = CS8 | HUPCL | CLOCAL | CREAD;
142#if defined(sun) || defined(linux) || defined(__sgi) || \
143 (defined(__APPLE__) && defined(__MACH__)) || \
144 defined(__NetBSD__) || defined(__FreeBSD__)
145 ti.c_cflag |= CRTSCTS;
146 ti.c_iflag = IGNBRK | IGNPAR;
150 cfsetispeed(&ti, baud);
151 cfsetospeed(&ti, baud);
153 if (tcsetattr(fd, TCSADRAIN, &ti) < 0)
154 perror(
"tcsetattr TCSADRAIN");
157 bzero(&tx,
sizeof(
struct termiox));
158 tx.x_hflag = RTSXOFF | CTSXON;
159 if (ioctl(fd, TCSETXW, &tx) < 0)
163 ioctl(fd, TXDELCD,
"dtr");
164 ioctl(fd, TXDELCD,
"xon");
165 ioctl(fd, TXADDCD,
"rts");
177 ioctl(fd, TIOCNXCL, (
char *) 0);
179 if (tcgetattr(fd, &ti) < 0)
181 ti.c_cflag &= ~CRTSCTS;
182 if (tcsetattr(fd, TCSANOW, &ti) < 0)
int init_serial(const char *dev, int speed, int debug)