brad@looking.UUCP (Brad Templeton) (12/08/83)
I have written line turnaround code for Unix system III that should work on a binary licence machine. It works when I test it with my own code, but fails with UUCP. The documentation I have on the tty driver is scant, so I was wondering if anybody could help. Once I get it working, I'll post to the net if people are interested. I am using an Onyx C8002, Unix release 3.0.1 The idea is to replace the getty for the modem line with a special modem control process. This is done in /etc/inittab. My process forks off a getty caller. The getty caller loops forking off getty on the dialin line. It also opens the line, and when it gets a carrier detect, it creates the uucp LCK..dialout file. It then waits for getty to terminate with a wait(0) call. It then unlinks the LCK file and loops back. The parent process is the modem dialer. It listens to named pipe /dev/dialer, and expects a phone number of the sort uucp writes to the ACU when you use a line of the form ACU dialout dialer 1200 in the L-devices file. When it gets the phone number, it kills its child, thus removing the getty from the line. It then dials the number, in this case using HAYES Smartmodem dial codes. This is the tricky part, because you must write to the modem without carrier present. To do this I first open it with O_NDELAY, and then set CLOCAL in the tty driver. I then open without O_NDELAY (using fcntl to turn this bit off does not seem to work) and use this channel to dial the phone. I turn CLOCAL off and close the files. This all works fine. If you write a phone number to /dev/dialer, it dials the phone, and then you can open the modem and talk to the dialed site. But uucp refuses to work. If you do a uucico, it does everything fine up to forking and writing to the ACU, but then just stops. The open of the modem never returns, in spite of the fact that carrier detect arrives when the connection completes. The last thing it prints is ACU write ok, and then it hangs until timeout. The setting of CLOCAL in the dialer seems to be part of the problem. Just what does CLOCAL do? The documents I have say one line about ignoring modem control. If this is the case, then why doesn't uucp's open return immediately (and print dcf is xx as it does with direct lines or when the /dev/dialer is not doing fancy stuff). Anybody know? -- Brad Templeton - Waterloo, Ontario (519) 886-7304