#include <stdio.h>
#include <curses.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>


/* TIOCM_CAR, TIOCM_RTS, TIOCM_DTR, TIOCM_RNG, TIOCM_DSR, TIOCM_CTS */


main()
{
   unsigned int modem_info;
   int fd;
   char tmp[80];

   initscr();
   noecho();
   keypad(stdscr, TRUE);
   nodelay(stdscr, TRUE);

   fd = open("/dev/ttyS3", O_RDWR | O_NONBLOCK);
   if (fd == -1) {
       addstr("Error opening serial port\n");
       refresh();
       endwin();
       exit(1);
   }

   while (1) {
       move(1, 1);
       if (ioctl(fd, TIOCMGET, &modem_info) == -1)
           sprintf(tmp, "IOCTL error");
       else
           sprintf(tmp, "CD: %d  DSR: %d  CTS: %d",
                   (modem_info & TIOCM_CD) >> 6,
                   (modem_info & TIOCM_DSR) >> 8,
                   (modem_info & TIOCM_CTS) >> 5);
       addstr(tmp);
       refresh();
       if(getch() != ERR)
           break;
   }

   close(fd);
   endwin();
   exit(0);
}