|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)va212.c 4.2 (Berkeley) 6/23/85"; ! 3: #endif ! 4: ! 5: #include "../condevs.h" ! 6: ! 7: #ifdef VA212 ! 8: va212opn(telno, flds, dev) ! 9: char *telno; ! 10: char *flds[]; ! 11: struct Devices *dev; ! 12: { ! 13: int dh = -1; ! 14: int i, ok, er = 0, delay; ! 15: extern errno; ! 16: char dcname[20]; ! 17: ! 18: sprintf(dcname, "/dev/%s", dev->D_line); ! 19: if (setjmp(Sjbuf)) { ! 20: DEBUG(1, "timeout va212 open\n", 0); ! 21: logent("va212 open", "TIMEOUT"); ! 22: if (dh >= 0) ! 23: close(dh); ! 24: delock(dev->D_line); ! 25: return CF_NODEV; ! 26: } ! 27: signal(SIGALRM, alarmtr); ! 28: getnextfd(); ! 29: alarm(10); ! 30: dh = open(dcname, 2); ! 31: alarm(0); ! 32: ! 33: /* modem is open */ ! 34: next_fd = -1; ! 35: if (dh < 0) { ! 36: DEBUG (4, errno == 4 ? "%s: no carrier\n" : "%s: can't open\n", ! 37: dcname); ! 38: delock(dev->D_line); ! 39: return errno == 4 ? CF_DIAL : CF_NODEV; ! 40: } ! 41: fixline(dh, dev->D_speed); ! 42: ! 43: /* translate - to K for Vadic */ ! 44: DEBUG(4, "calling %s -> ", telno); ! 45: delay = 0; ! 46: for (i = 0; i < strlen(telno); ++i) { ! 47: switch(telno[i]) { ! 48: case '=': /* await dial tone */ ! 49: case '-': /* delay */ ! 50: case '<': ! 51: telno[i] = 'K'; ! 52: delay += 5; ! 53: break; ! 54: } ! 55: } ! 56: DEBUG(4, "%s\n", telno); ! 57: for(i = 0; i < TRYCALLS; ++i) { /* make TRYCALLS tries */ ! 58: /* wake up Vadic */ ! 59: sendthem("\005\\d", dh); ! 60: DEBUG(4, "wanted * ", CNULL); ! 61: ok = expect("*", dh); ! 62: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 63: if (ok != 0) ! 64: continue; ! 65: ! 66: sendthem("D\\d", dh); /* "D" (enter number) command */ ! 67: DEBUG(4, "wanted NUMBER? ", CNULL); ! 68: ok = expect("NUMBER?", dh); ! 69: if (ok == 0) ! 70: ok = expect("\n", dh); ! 71: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 72: if (ok != 0) ! 73: continue; ! 74: ! 75: /* send telno, send \r */ ! 76: sendthem(telno, dh); ! 77: DEBUG(4, "wanted %s ", telno); ! 78: ok = expect(telno, dh); ! 79: if (ok == 0) ! 80: ok = expect("\n", dh); ! 81: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 82: if (ok != 0) ! 83: continue; ! 84: ! 85: sendthem("", dh); /* confirm number */ ! 86: DEBUG(4, "wanted %s ", "DIALING..."); ! 87: ok = expect("DIALING...", dh); ! 88: if (ok == 0) { ! 89: ok = expect("\n", dh); ! 90: DEBUG(4, "wanted ANSWER TONE", CNULL); ! 91: ok = expect("ANSWER TONE", dh); ! 92: if (ok == 0) ! 93: ok = expect("\n", dh); ! 94: } ! 95: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 96: if (ok == 0) ! 97: break; ! 98: } ! 99: ! 100: if (ok == 0) { ! 101: DEBUG(4, "wanted ON LINE\\r\\n ", CNULL); ! 102: ok = expect("ON LINE\r\n", dh); ! 103: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 104: } ! 105: ! 106: if (ok != 0) { ! 107: sendthem("I\\d", dh); /* back to idle */ ! 108: if (dh > 2) ! 109: close(dh); ! 110: DEBUG(4, "vadDial failed\n", CNULL); ! 111: delock(dev->D_line); ! 112: return CF_DIAL; ! 113: } ! 114: DEBUG(4, "va212 ok\n", 0); ! 115: return dh; ! 116: } ! 117: ! 118: va212cls(fd) ! 119: { ! 120: if (fd > 0) { ! 121: close(fd); ! 122: sleep(5); ! 123: delock(devSel); ! 124: } ! 125: } ! 126: #endif VA212
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.