Annotation of 43BSD/usr.bin/uucp/aculib/hys24.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)hys24.c    1.1 (Berkeley) 1/13/86";
                      3: #endif !lint
                      4: 
                      5: #include "../condevs.h"
                      6: 
                      7: #ifdef HAYES2400
                      8: /*
                      9:  *     hyspopn24(telno, flds, dev) connect to hayes smartmodem (pulse call)
                     10:  *     hystopn24(telno, flds, dev) connect to hayes smartmodem (tone call)
                     11:  *     char *flds[], *dev[];
                     12:  *
                     13:  *     return codes:
                     14:  *             >0  -  file number  -  ok
                     15:  *             CF_DIAL,CF_DEVICE  -  failed
                     16:  */
                     17: 
                     18: hyspopn24(telno, flds, dev)
                     19: char *telno, *flds[];
                     20: struct Devices *dev;
                     21: {
                     22:        return hysopn24(telno, flds, dev, 0);
                     23: }
                     24: 
                     25: hystopn24(telno, flds, dev)
                     26: char *telno, *flds[];
                     27: struct Devices *dev;
                     28: {
                     29:        return hysopn24(telno, flds, dev, 1);
                     30: }
                     31: 
                     32: /* ARGSUSED */
                     33: hysopn24(telno, flds, dev, toneflag)
                     34: char *telno;
                     35: char *flds[];
                     36: struct Devices *dev;
                     37: int toneflag;
                     38: {
                     39:        int     dh = -1;
                     40:        char *ii;
                     41:        extern errno;
                     42:        char dcname[20];
                     43: 
                     44:        sprintf(dcname, "/dev/%s", dev->D_line);
                     45:        DEBUG(4, "dc - %s\n", dcname);
                     46:        if (setjmp(Sjbuf)) {
                     47:                logent(dcname, "TIMEOUT");
                     48:                if (dh >= 0)
                     49:                        hyscls24(dh);
                     50:                return CF_DIAL;
                     51:        }
                     52:        signal(SIGALRM, alarmtr);
                     53:        getnextfd();
                     54:        alarm(10);
                     55:        dh = open(dcname, 2); /* read/write */
                     56:        alarm(0);
                     57: 
                     58:        for (ii = telno; *ii; ii++)
                     59:                if (*ii == '=')
                     60:                    *ii = ',';
                     61: 
                     62:        /* modem is open */
                     63:        next_fd = -1;
                     64:        if (dh >= 0) {
                     65:                fixline(dh, dev->D_speed);
                     66:                write(dh, "\rATZH\r", 6);
                     67:                sleep(2);
                     68:                if (dochat(dev, flds, dh)) {
                     69:                        logent(dcname, "CHAT FAILED");
                     70:                        hyscls24(dh);
                     71:                        return CF_DIAL;
                     72:                }
                     73:                write(dh, "AT&F&D3&C1E0X1\r", 15);
                     74:                if (expect("OK\r\n", dh) != 0) {
                     75:                        logent(dcname, "HSM not responding OK");
                     76:                        hyscls24(dh);
                     77:                        return CF_DIAL;
                     78:                }
                     79:                if (toneflag)
                     80:                        write(dh, "\rATDT", 5);
                     81:                else
                     82:                        write(dh, "\rATDP", 5);
                     83:                write(dh, telno, strlen(telno));
                     84:                write(dh, "\r", 1);
                     85: 
                     86:                if (expect("CONNECT", dh) != 0) {
                     87:                        logent("HSM no carrier", _FAILED);
                     88:                        strcpy(devSel, dev->D_line);
                     89:                        hyscls24(dh);
                     90:                        return CF_DIAL;
                     91:                }
                     92: 
                     93:        }
                     94:        if (dh < 0) {
                     95:                logent(dcname, "CAN'T OPEN");
                     96:                return dh;
                     97:        }
                     98:        DEBUG(4, "hayes ok\n", CNULL);
                     99:        return dh;
                    100: }
                    101: 
                    102: hyscls24(fd)
                    103: int fd;
                    104: {
                    105:        char dcname[20];
                    106: 
                    107:        if (fd > 0) {
                    108:                sprintf(dcname, "/dev/%s", devSel);
                    109:                DEBUG(4, "Hanging up fd = %d\n", fd);
                    110:                sleep(1);
                    111: /*
                    112:  * Since we have a getty sleeping on this line, when it wakes up it sends
                    113:  * all kinds of garbage to the modem.  Unfortunatly, the modem likes to
                    114:  * execute the previous command when it sees the garbage.  The previous
                    115:  * command was to dial the phone, so let's make the last command reset
                    116:  * the modem.
                    117:  */
                    118:                write(fd, "\r+++", 4);
                    119:                sleep(2);
                    120:                write(fd, "\rATH\rATZ\r", 9);
                    121:                sleep(2);
                    122:                close(fd);
                    123:                delock(devSel);
                    124:        }
                    125: }
                    126: #endif HAYES2400

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.