117786Sralph #ifndef lint 2*25158Sbloom static char sccsid[] = "@(#)vent.c 4.2 (Berkeley) 10/10/85"; 317786Sralph #endif 417786Sralph 517786Sralph #include "../condevs.h" 617786Sralph #ifdef VENTEL 717786Sralph 817786Sralph ventopn(telno, flds, dev) 917786Sralph char *flds[], *telno; 1017786Sralph struct Devices *dev; 1117786Sralph { 1217786Sralph int dh; 1317786Sralph int i, ok = -1; 1417786Sralph char dcname[20]; 1517786Sralph 1617786Sralph sprintf(dcname, "/dev/%s", dev->D_line); 1717786Sralph if (setjmp(Sjbuf)) { 1817786Sralph DEBUG(1, "timeout ventel open\n", ""); 1917786Sralph logent("ventel open", "TIMEOUT"); 2017786Sralph if (dh >= 0) 2117786Sralph close(dh); 2217786Sralph delock(dev->D_line); 2317786Sralph return CF_NODEV; 2417786Sralph } 2517786Sralph signal(SIGALRM, alarmtr); 2617786Sralph getnextfd(); 2717786Sralph alarm(10); 2817786Sralph dh = open(dcname, 2); 2917786Sralph next_fd = -1; 30*25158Sbloom alarm(0); 3117786Sralph if (dh < 0) { 3217786Sralph DEBUG(4,"%s\n", errno == 4 ? "no carrier" : "can't open modem"); 3317786Sralph delock(dev->D_line); 3417786Sralph return errno == 4 ? CF_DIAL : CF_NODEV; 3517786Sralph } 3617786Sralph 3717786Sralph /* modem is open */ 3817786Sralph fixline(dh, dev->D_speed); 3917786Sralph 4017786Sralph /* translate - to % and = to & for VenTel */ 4117786Sralph DEBUG(4, "calling %s -> ", telno); 4217786Sralph for (i = 0; i < strlen(telno); ++i) { 4317786Sralph switch(telno[i]) { 4417786Sralph case '-': /* delay */ 4517786Sralph telno[i] = '%'; 4617786Sralph break; 4717786Sralph case '=': /* await dial tone */ 4817786Sralph telno[i] = '&'; 4917786Sralph break; 5017786Sralph case '<': 5117786Sralph telno[i] = '%'; 5217786Sralph break; 5317786Sralph } 5417786Sralph } 5517786Sralph DEBUG(4, "%s\n", telno); 5617786Sralph sleep(1); 5717786Sralph for(i = 0; i < 5; ++i) { /* make up to 5 tries */ 5817786Sralph slowrite(dh, "\r\r");/* awake, thou lowly VenTel! */ 5917786Sralph 6017786Sralph DEBUG(4, "wanted %s ", "$"); 6117786Sralph ok = expect("$", dh); 6217786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 6317786Sralph if (ok != 0) 6417786Sralph continue; 6517786Sralph slowrite(dh, "K"); /* "K" (enter number) command */ 6617786Sralph DEBUG(4, "wanted %s ", "DIAL: "); 6717786Sralph ok = expect("DIAL: ", dh); 6817786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 6917786Sralph if (ok == 0) 7017786Sralph break; 7117786Sralph } 7217786Sralph 7317786Sralph if (ok == 0) { 7417786Sralph slowrite(dh, telno); /* send telno, send \r */ 7517786Sralph slowrite(dh, "\r"); 7617786Sralph DEBUG(4, "wanted %s ", "ONLINE"); 7717786Sralph ok = expect("ONLINE!", dh); 7817786Sralph DEBUG(4, "got %s\n", ok ? "?" : "that"); 7917786Sralph } 8017786Sralph if (ok != 0) { 8117786Sralph if (dh > 2) 8217786Sralph close(dh); 8317786Sralph DEBUG(4, "venDial failed\n", ""); 8417786Sralph return CF_DIAL; 8517786Sralph } 8617786Sralph else 8717786Sralph DEBUG(4, "venDial ok\n", ""); 8817786Sralph return dh; 8917786Sralph } 9017786Sralph 9117786Sralph ventcls(fd) 9217786Sralph int fd; 9317786Sralph { 9417786Sralph if (fd > 0) { 9517786Sralph close(fd); 9617786Sralph sleep(5); 9717786Sralph delock(devSel); 9817786Sralph } 9917786Sralph } 10017786Sralph #endif VENTEL 101