# 2.11BSD#431 - /usr/src/usr.bin/uucp/aculib/vad.c

##### Functions

    vadcls            X
    vadopn            X

       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: 1366 |