Annotation of 43BSD/usr.bin/uucp/aculib/hys24.c, revision 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.