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

Reply via email to