[comp.sys.sun] Is The Modem Still Connected

rohit@uunet.uu.net (Rohit Mehrotra) (10/08/90)

Sometime back I had posted in just about all the news groups asking if
some one knew as to how to find out if the modem is still connected on the
other end or how to find out the state of the carrier detect signal.

I received a lot of replies showing interest in this query, but none
actually helping with specific ioctl calls, to find out.

I then contacted Mr Tony Vincent and Mr Ray Jang in Sun Technical support,
and they helped me finally in providing the correct solution.  

I want to thank Mr Tony Vincent for actually providing the correct code,
and Mr Ray Jang for taking the time to find out the correct environment in
which the program provided by Tony would work.

PLATFORM:

This solution works ONLY on SunOS4.1 and has been tested on SS1.  If any
one can help on any other platform please EMAIL me the response and I
would test it and then post it in another summary.

SOLUTION:

Only the software carrier detect should be enabled. If the hardware
carrier detect is enabled then the program would not only hang but also
give errors like: Device Not Found etc.  This is an undocumented feature
in SunOS 4.1. The ttytab entry should have the status as : off local
secure.  This ensures that only software carrier detect signal is used.

/**********************  Cut Here  ******************************/

/* check is carier is on */
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/ttycom.h>
#include <fcntl.h>
#include <errno.h>

main(c,v)
int c;
char *v[];
{
	char p[16];
	int  st;
	int fd;

	if(c < 1)
	{
		printf("usage: %s ttyport\n",v[0]);
		exit(1);
	}
	sprintf(p,"/dev/%s\0",v[1]);
	printf("Port to be opened %s\n",p);
	fd=open(p,O_RDWR|O_NDELAY,0666);
	fflush(stdout);
	if(fd < 0)
	{
		printf("Can't open %s %d\n",p,errno);
		perror(p);
	        fflush(stdout);
		exit(1);
	}

	ioctl(fd,TIOCMGET,&st);
	if(st & TIOCM_CD) printf("carrier on\n");
	else printf("carrier off\n");
	close(fd);
}
-- 
Rohit Mehrotra
Fleet Credit Corporation
8325 NW 53rd St, Miami, Fl 33166.
E-MAIL Address uunet!dmdev!rohit VOICE 1-(305)-477-0390 Ext 469