1: #ifndef lint
   2: static char sccsid[] = "@(#)cds224.c	1.1 (Berkeley) 1/13/86";
   3: #endif !lint
   4: 
   5: #include "../condevs.h"
   6: #ifdef CDS224
   7: 
   8: /*
   9:  *	conopn: establish dial-out connection through a Concord CDS 224.
  10:  *	Returns descriptor open to tty for reading and writing.
  11:  *	Negative values (-1...-7) denote errors in connmsg.
  12:  *	Be sure to disconnect tty when done, via HUPCL or stty 0.
  13:  */
  14: #define TRYS 5  /* number of trys */
  15: 
  16: cdsopn224(telno, flds, dev)
  17: char *telno;
  18: char *flds[];
  19: struct Devices *dev;
  20: {
  21:     int dh = -1;
  22:     int i, ok, er = 0, delay;
  23:     extern errno;
  24:     char dcname[20];
  25:     char *tempbuf[20];
  26: 
  27:     sprintf(dcname, "/dev/%s", dev->D_line);
  28:     if (setjmp(Sjbuf)) {
  29:         DEBUG(1, "timeout concord open\n", "");
  30:         logent("concord open", "TIMEOUT");
  31:         if (dh >= 0)
  32:             cdscls224(dh);
  33:         delock(dev->D_line);
  34:         return CF_NODEV;
  35:     }
  36:     signal(SIGALRM, alarmtr);
  37:     getnextfd();
  38:     alarm(10);
  39:     dh = open(dcname, 2);
  40:     alarm(0);
  41: 
  42:     /* modem is open */
  43:     next_fd = -1;
  44:     if (dh < 0) {
  45:         delock(dev->D_line);
  46:         return CF_NODEV;
  47:     }
  48:     fixline(dh, dev->D_speed);
  49: 
  50:     DEBUG(4, "calling %s -> ", telno);
  51:     if (dochat(dev, flds, dh)) {
  52:         logent(dcname, "CHAT FAILED");
  53:         cdscls224(dh);
  54:         return CF_DIAL;
  55:     }
  56:     for(i = 0; i < TRYS; ++i) {
  57:         /* wake up Concord */
  58:         write(dh, "\r\r", 2);
  59:         DEBUG(4, "wanted CDS >", CNULL);
  60:         ok = expect("CDS >", dh);
  61:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  62:         if (ok != 0)
  63:             continue;
  64: 
  65:         write(dh, "\r", 2);
  66:         DEBUG(4, "wanted CDS >", CNULL);
  67:         ok = expect("CDS >", dh);
  68:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  69:         if (ok != 0)
  70:             continue;
  71: 
  72:         /* send telno \r */
  73:         sprintf(tempbuf,"D%s\r",telno);
  74:         write(dh, tempbuf, strlen(tempbuf));
  75: 
  76:         DEBUG(4, "wanted DIALING ", CNULL);
  77:         ok = expect("DIALING ", dh);
  78:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  79:         if (ok == 0)
  80:             break;
  81:     }
  82: 
  83:     if (ok == 0) {
  84:         sleep(10);  /* give concord some time */
  85:         DEBUG(4, "wanted INITIATING " , CNULL);
  86:         ok = expect("INITIATING", dh);
  87:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  88:     }
  89: 
  90:     if (ok != 0) {
  91:         if (dh > 2)
  92:             close(dh);
  93:         DEBUG(4, "conDial failed\n", CNULL);
  94:         delock(dev->D_line);
  95:         return CF_DIAL;
  96:     }
  97:     DEBUG(4, "concord ok\n", CNULL);
  98:     return dh;
  99: }
 100: 
 101: cdscls224(fd)
 102: {
 103: 
 104:     if (fd > 0) {
 105:         close(fd);
 106:         sleep(5);
 107:         delock(devSel);
 108:     }
 109: }
 110: #endif CDS224

Defined functions

cdscls224 defined in line 101; used 2 times
cdsopn224 defined in line 16; never used

Defined variables

sccsid defined in line 2; never used

Defined macros

TRYS defined in line 14; used 1 times
  • in line 56
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1391
Valid CSS Valid XHTML 1.0 Strict