1*17786Sralph #ifndef lint 2*17786Sralph static char sccsid[] = "@(#)vent.c 4.1 (Berkeley) 01/22/85"; 3*17786Sralph #endif 4*17786Sralph 5*17786Sralph #include "../condevs.h" 6*17786Sralph #ifdef VENTEL 7*17786Sralph 8*17786Sralph ventopn(telno, flds, dev) 9*17786Sralph char *flds[], *telno; 10*17786Sralph struct Devices *dev; 11*17786Sralph { 12*17786Sralph int dh; 13*17786Sralph int i, ok = -1; 14*17786Sralph char dcname[20]; 15*17786Sralph 16*17786Sralph sprintf(dcname, "/dev/%s", dev->D_line); 17*17786Sralph if (setjmp(Sjbuf)) { 18*17786Sralph DEBUG(1, "timeout ventel open\n", ""); 19*17786Sralph logent("ventel open", "TIMEOUT"); 20*17786Sralph if (dh >= 0) 21*17786Sralph close(dh); 22*17786Sralph delock(dev->D_line); 23*17786Sralph return CF_NODEV; 24*17786Sralph } 25*17786Sralph signal(SIGALRM, alarmtr); 26*17786Sralph getnextfd(); 27*17786Sralph alarm(10); 28*17786Sralph dh = open(dcname, 2); 29*17786Sralph next_fd = -1; 30*17786Sralph if (dh < 0) { 31*17786Sralph DEBUG(4,"%s\n", errno == 4 ? "no carrier" : "can't open modem"); 32*17786Sralph delock(dev->D_line); 33*17786Sralph return errno == 4 ? CF_DIAL : CF_NODEV; 34*17786Sralph } 35*17786Sralph 36*17786Sralph /* modem is open */ 37*17786Sralph fixline(dh, dev->D_speed); 38*17786Sralph 39*17786Sralph /* translate - to % and = to & for VenTel */ 40*17786Sralph DEBUG(4, "calling %s -> ", telno); 41*17786Sralph for (i = 0; i < strlen(telno); ++i) { 42*17786Sralph switch(telno[i]) { 43*17786Sralph case '-': /* delay */ 44*17786Sralph telno[i] = '%'; 45*17786Sralph break; 46*17786Sralph case '=': /* await dial tone */ 47*17786Sralph telno[i] = '&'; 48*17786Sralph break; 49*17786Sralph case '<': 50*17786Sralph telno[i] = '%'; 51*17786Sralph break; 52*17786Sralph } 53*17786Sralph } 54*17786Sralph DEBUG(4, "%s\n", telno); 55*17786Sralph sleep(1); 56*17786Sralph for(i = 0; i < 5; ++i) { /* make up to 5 tries */ 57*17786Sralph slowrite(dh, "\r\r");/* awake, thou lowly VenTel! */ 58*17786Sralph 59*17786Sralph DEBUG(4, "wanted %s ", "$"); 60*17786Sralph ok = expect("$", dh); 61*17786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 62*17786Sralph if (ok != 0) 63*17786Sralph continue; 64*17786Sralph slowrite(dh, "K"); /* "K" (enter number) command */ 65*17786Sralph DEBUG(4, "wanted %s ", "DIAL: "); 66*17786Sralph ok = expect("DIAL: ", dh); 67*17786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 68*17786Sralph if (ok == 0) 69*17786Sralph break; 70*17786Sralph } 71*17786Sralph 72*17786Sralph if (ok == 0) { 73*17786Sralph slowrite(dh, telno); /* send telno, send \r */ 74*17786Sralph slowrite(dh, "\r"); 75*17786Sralph DEBUG(4, "wanted %s ", "ONLINE"); 76*17786Sralph ok = expect("ONLINE!", dh); 77*17786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 78*17786Sralph } 79*17786Sralph if (ok != 0) { 80*17786Sralph if (dh > 2) 81*17786Sralph close(dh); 82*17786Sralph DEBUG(4, "venDial failed\n", ""); 83*17786Sralph return CF_DIAL; 84*17786Sralph } 85*17786Sralph else 86*17786Sralph DEBUG(4, "venDial ok\n", ""); 87*17786Sralph return dh; 88*17786Sralph } 89*17786Sralph 90*17786Sralph ventcls(fd) 91*17786Sralph int fd; 92*17786Sralph { 93*17786Sralph if (fd > 0) { 94*17786Sralph close(fd); 95*17786Sralph sleep(5); 96*17786Sralph delock(devSel); 97*17786Sralph } 98*17786Sralph } 99*17786Sralph #endif VENTEL 100