On 2003-01-15 18:26, [EMAIL PROTECTED] (Paul Hamilton) wrote: > I have been trying to monitor the serial CTS line. I would like to > log the fact that the CTS has changed state (active/non-active). > > I have been trying to adapt some Linux programs, but am having > problems with adapting the POSIX TIOCMGET function. > > Is there a FreeBSD way?
You'd have to poll using ioctl(fd, TIOCMGET, &int) and detect CTS changes by checking the TIOCM_CTS bit in the returned value. The following (untested) sample program should be easy to adapt to your needs. When TIOCM_CTS changes from on to off or vice versa, the program should print the change. #include <sys/ioctl.h> #include <stdio.h> #include <unistd.h> int main(void) { int bits; int last; if (ioctl(0, TIOCMGET, &bits) == -1) err(1, "ioctl"); last = bits & TIOCM_CTS; printf("CTS %s.\n", last ? "on" : "off"); while (1) { if (ioctl(0, TIOCMGET, &bits) == -1) err(1, "ioctl"); if ((last ^ (bits & TIOCM_CTS)) != 0) { last = bits & TIOCM_CTS; printf("CTS %s.\n", last ? "on" : "off"); } usleep(100000); } return (0); } To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-questions" in the body of the message