1: #ifndef lint
   2: static char sccsid[] = "@(#)hys24.c	1.1 (Berkeley) 1/13/86";
   3: #endif !lint
   4: 
   5: #include "../condevs.h"
   6: 
   7: #ifdef HAYES2400
   8: /*
   9:  *	hyspopn24(telno, flds, dev) connect to hayes smartmodem (pulse call)
  10:  *	hystopn24(telno, flds, dev) connect to hayes smartmodem (tone call)
  11:  *	char *flds[], *dev[];
  12:  *
  13:  *	return codes:
  14:  *		>0  -  file number  -  ok
  15:  *		CF_DIAL,CF_DEVICE  -  failed
  16:  */
  17: 
  18: hyspopn24(telno, flds, dev)
  19: char *telno, *flds[];
  20: struct Devices *dev;
  21: {
  22:     return hysopn24(telno, flds, dev, 0);
  23: }
  24: 
  25: hystopn24(telno, flds, dev)
  26: char *telno, *flds[];
  27: struct Devices *dev;
  28: {
  29:     return hysopn24(telno, flds, dev, 1);
  30: }
  31: 
  32: /* ARGSUSED */
  33: hysopn24(telno, flds, dev, toneflag)
  34: char *telno;
  35: char *flds[];
  36: struct Devices *dev;
  37: int toneflag;
  38: {
  39:     int dh = -1;
  40:     char *ii;
  41:     extern errno;
  42:     char dcname[20];
  43: 
  44:     sprintf(dcname, "/dev/%s", dev->D_line);
  45:     DEBUG(4, "dc - %s\n", dcname);
  46:     if (setjmp(Sjbuf)) {
  47:         logent(dcname, "TIMEOUT");
  48:         if (dh >= 0)
  49:             hyscls24(dh);
  50:         return CF_DIAL;
  51:     }
  52:     signal(SIGALRM, alarmtr);
  53:     getnextfd();
  54:     alarm(10);
  55:     dh = open(dcname, 2); /* read/write */
  56:     alarm(0);
  57: 
  58:     for (ii = telno; *ii; ii++)
  59:         if (*ii == '=')
  60:             *ii = ',';
  61: 
  62:     /* modem is open */
  63:     next_fd = -1;
  64:     if (dh >= 0) {
  65:         fixline(dh, dev->D_speed);
  66:         write(dh, "\rATZH\r", 6);
  67:         sleep(2);
  68:         if (dochat(dev, flds, dh)) {
  69:             logent(dcname, "CHAT FAILED");
  70:             hyscls24(dh);
  71:             return CF_DIAL;
  72:         }
  73:         write(dh, "AT&F&D3&C1E0X1\r", 15);
  74:         if (expect("OK\r\n", dh) != 0) {
  75:             logent(dcname, "HSM not responding OK");
  76:             hyscls24(dh);
  77:             return CF_DIAL;
  78:         }
  79:         if (toneflag)
  80:             write(dh, "\rATDT", 5);
  81:         else
  82:             write(dh, "\rATDP", 5);
  83:         write(dh, telno, strlen(telno));
  84:         write(dh, "\r", 1);
  85: 
  86:         if (expect("CONNECT", dh) != 0) {
  87:             logent("HSM no carrier", _FAILED);
  88:             strcpy(devSel, dev->D_line);
  89:             hyscls24(dh);
  90:             return CF_DIAL;
  91:         }
  92: 
  93:     }
  94:     if (dh < 0) {
  95:         logent(dcname, "CAN'T OPEN");
  96:         return dh;
  97:     }
  98:     DEBUG(4, "hayes ok\n", CNULL);
  99:     return dh;
 100: }
 101: 
 102: hyscls24(fd)
 103: int fd;
 104: {
 105:     char dcname[20];
 106: 
 107:     if (fd > 0) {
 108:         sprintf(dcname, "/dev/%s", devSel);
 109:         DEBUG(4, "Hanging up fd = %d\n", fd);
 110:         sleep(1);
 111: /*
 112:  * Since we have a getty sleeping on this line, when it wakes up it sends
 113:  * all kinds of garbage to the modem.  Unfortunatly, the modem likes to
 114:  * execute the previous command when it sees the garbage.  The previous
 115:  * command was to dial the phone, so let's make the last command reset
 116:  * the modem.
 117:  */
 118:         write(fd, "\r+++", 4);
 119:         sleep(2);
 120:         write(fd, "\rATH\rATZ\r", 9);
 121:         sleep(2);
 122:         close(fd);
 123:         delock(devSel);
 124:     }
 125: }
 126: #endif HAYES2400

Defined functions

hyscls24 defined in line 102; used 4 times
hysopn24 defined in line 33; used 2 times
hyspopn24 defined in line 18; never used
hystopn24 defined in line 25; never used

Defined variables

sccsid defined in line 2; never used
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1275
Valid CSS Valid XHTML 1.0 Strict