From: ian Date: Sun, 1 May 2005 22:06:50 +0000 (+0000) Subject: know how really to set/clear RTS: use TIOCM*; see /usr/include/asm/termios.h for... X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=2d9068287cd56e34f57c8371597fa5a511643990;p=trains.git know how really to set/clear RTS: use TIOCM*; see /usr/include/asm/termios.h for values TIOCM_RTS etc. --- diff --git a/parport/serial-tcflow.c b/parport/serial-tcflow.c index 1011ff5..e8b8ded 100644 --- a/parport/serial-tcflow.c +++ b/parport/serial-tcflow.c @@ -4,18 +4,31 @@ #include #include #include +#include +#include int main(int argc, const char *const *argv) { - int op, r; + int op, r, v=0, *vp=0, v0; switch (argv[1][0]) { case 'N': op= TCOOFF; break; case 'Y': op= TCOON; break; case 'n': op= TCIOFF; break; case 'y': op= TCION; break; + case 'g': op= TIOCMGET; vp=&v; break; + case 's': op= TIOCMSET; vp=&v; v=atoi(argv[1]+1); break; + case 'C': op= TIOCMBIC; vp=&v; v=atoi(argv[1]+1); break; + case 'S': op= TIOCMBIS; vp=&v; v=atoi(argv[1]+1); break; default: abort(); } - r= tcflow(3,op); - fprintf(stderr,"r=%d e=%s\n",r,strerror(errno)); + errno= 0; + v0= v; + if (!vp) { + v= 0; + r= tcflow(3,op); + } else { + r= ioctl(3,op,vp); + } + fprintf(stderr,"v0=0x%02x r=%d v=0x%02x e=%s\n",v0,r,v,strerror(errno)); return 0; }