1: #ifndef lint
   2: static char sccsid[] = "@(#)vad.c	4.2 (Berkeley) 10/10/85";
   3: #endif
   4: 
   5: #include "../condevs.h"
   6: #ifdef VADIC
   7: 
   8: /*
   9:  *	vadopn: establish dial-out connection through a Racal-Vadic 3450.
  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: 
  15: vadopn(telno, flds, dev)
  16: char *telno;
  17: char *flds[];
  18: struct Devices *dev;
  19: {
  20:     int dh = -1;
  21:     int i, ok, er = 0, delay;
  22:     extern errno;
  23:     char dcname[20];
  24: 
  25:     sprintf(dcname, "/dev/%s", dev->D_line);
  26:     if (setjmp(Sjbuf)) {
  27:         DEBUG(1, "timeout vadic open\n", "");
  28:         logent("vadic open", "TIMEOUT");
  29:         if (dh >= 0)
  30:             close(dh);
  31:         delock(dev->D_line);
  32:         return CF_NODEV;
  33:     }
  34:     signal(SIGALRM, alarmtr);
  35:     getnextfd();
  36:     alarm(10);
  37:     dh = open(dcname, 2);
  38:     alarm(0);
  39: 
  40:     /* modem is open */
  41:     next_fd = -1;
  42:     if (dh < 0) {
  43:         delock(dev->D_line);
  44:         return CF_NODEV;
  45:     }
  46:     fixline(dh, dev->D_speed);
  47: 
  48:     DEBUG(4, "calling %s -> ", telno);
  49:     if (dochat(dev, flds, dh)) {
  50:         logent(dcname, "CHAT FAILED");
  51:         close(dh);
  52:         return CF_DIAL;
  53:     }
  54:     delay = 0;
  55:     for (i = 0; i < strlen(telno); ++i) {
  56:         switch(telno[i]) {
  57:         case '=':   /* await dial tone */
  58:         case '-':
  59:         case ',':
  60:         case '<':
  61:         case 'K':
  62:             telno[i] = 'K';
  63:             delay += 5;
  64:             break;
  65:         }
  66:     }
  67:     DEBUG(4, "%s\n", telno);
  68:     for(i = 0; i < 5; ++i) {    /* make 5 tries */
  69:         /* wake up Vadic */
  70:         write(dh, "\005", 1);
  71:         sleep(1);
  72:         write(dh, "\r", 1);
  73:         DEBUG(4, "wanted * ", CNULL);
  74:         ok = expect("*~5", dh);
  75:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  76:         if (ok != 0)
  77:             continue;
  78: 
  79:         write(dh, "D\r", 2); /* "D" (enter number) command */
  80:         DEBUG(4, "wanted NUMBER?\\r\\n ", CNULL);
  81:         ok = expect("NUMBER?\r\n~5", dh);
  82:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  83:         if (ok != 0)
  84:             continue;
  85: 
  86:         /* send telno, send \r */
  87:         write(dh, telno, strlen(telno));
  88:         sleep(1);
  89:         write(dh, "\r", 1);
  90:         DEBUG(4, "wanted %s ", telno);
  91:         ok = expect(telno, dh);
  92:         if (ok == 0)
  93:             ok = expect("\r\n", dh);
  94:         DEBUG(4, "got %s\n", ok ? "?" : "that");
  95:         if (ok != 0)
  96:             continue;
  97: 
  98:         write(dh, "\r", 1); /* confirm number */
  99:         DEBUG(4, "wanted DIALING: ", CNULL);
 100:         ok = expect("DIALING: ", dh);
 101:         DEBUG(4, "got %s\n", ok ? "?" : "that");
 102:         if (ok == 0)
 103:             break;
 104:     }
 105: 
 106:     if (ok == 0) {
 107:         sleep(10 + delay);  /* give vadic some time */
 108:         DEBUG(4, "wanted ON LINE\\r\\n ", CNULL);
 109:         ok = expect("ON LINE\r\n", dh);
 110:         DEBUG(4, "got %s\n", ok ? "?" : "that");
 111:     }
 112: 
 113:     if (ok != 0) {
 114:         if (dh > 2)
 115:             close(dh);
 116:         DEBUG(4, "vadDial failed\n", CNULL);
 117:         delock(dev->D_line);
 118:         return CF_DIAL;
 119:     }
 120:     DEBUG(4, "vadic ok\n", CNULL);
 121:     return dh;
 122: }
 123: 
 124: vadcls(fd)
 125: {
 126:     if (fd > 0) {
 127:         close(fd);
 128:         sleep(5);
 129:         delock(devSel);
 130:     }
 131: }
 132: #endif VADIC

Defined functions

vadcls defined in line 124; never used
vadopn defined in line 15; 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: 3081
Valid CSS Valid XHTML 1.0 Strict