Initialize the on-board-modem and voice lines (obminit)
Lenny Tropiano
lenny at icus.ICUS.COM
Sun Sep 9 00:20:31 AEST 1990
obminit was written by Roger Florkowski <...!cs.utexas.edu!taliesin!roger>
to make setting up the on-board-modem and voice lines (ph0, ph1) a little
easier and more understandable. The original way most people are used to
is the /etc/phupd program. This program passed with the correct number of
YES's and NO's and the line and type (VOICE or DATA) will set the phone
lines to whatever you specified. Since the trend for everyone is to
move away from the UA and UA-type programs, this becomes increasing more
cryptic.
Roger, like any hacker/programmer, came up with this solution. Basically
it has all the functionality as /etc/phupd, but uses getopt() to handle
arguments!! It's usage is quite a bit clearer.
All the information regarding what bits to tweek, can be found in
/usr/include/phone.h.
Since Roger doesn't have immediate posting access to the net, I'm posting
this on his behalf. The README, Makefile and manual page were written by:
Lenny Tropiano <lenny at icus.ICUS.COM>
-- cut here -- -- cut here -- -- cut here -- -- cut here -- -- cut here --
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: README obminit.1 Makefile obminit.c
# Wrapped by lenny at icus on Sat Sep 8 10:19:05 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(1000 characters\)
sed "s/^X//" >README <<'END_OF_README'
X
Xobminit was written by Roger Florkowski <...!cs.utexas.edu!taliesin!roger>
Xto make setting up the on-board-modem and voice lines (ph0, ph1) a little
Xeasier and more understandable. The original way most people are used to
Xis the /etc/phupd program. This program passed with the correct number of
XYES's and NO's and the line and type (VOICE or DATA) will set the phone
Xlines to whatever you specified. Since the trend for everyone is to
Xmove away from the UA and UA-type programs, this becomes increasing more
Xcryptic.
X
XRoger, like any hacker/programmer, came up with this solution. Basically
Xit has all the functionality as /etc/phupd, but uses getopt() to handle
Xarguments!! It's usage is quite a bit clearer.
X
XAll the information regarding what bits to tweek, can be found in
X/usr/include/phone.h.
X
XSince Roger doesn't have immediate posting access to the net, I'm posting
Xthis on his behalf. The README, Makefile and manual page were written by:
XLenny Tropiano <lenny at icus.ICUS.COM>
X
END_OF_README
if test 1000 -ne `wc -c <README`; then
echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f obminit.1 -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"obminit.1\"
else
echo shar: Extracting \"obminit.1\" \(928 characters\)
sed "s/^X//" >obminit.1 <<'END_OF_obminit.1'
X.TH OBMINIT 1L LOCAL
X.SH NAME
Xobminit \- UNIX PC initialize on-board modem and voice lines
X.SH SYNOPSIS
X.B obminit
X[-kw] [-l line[0|1]] [-m mode[v|d]] [-u dial[p|t]]
X.SH DESCRIPTION
X.B obminit
Xwill initialize the phone lines to their proper state, this should be
Xcalled on bootup, in replacement for the /etc/phupd program
X.RE
X.SH OPTIONS
Xobminit can be run with the following options.
X.TP
X-l 0|1 (line)
XSets which line you are setting, ph0=0, ph1=1.
X.TP
X-m v|d (mode)
XSets the mode of the line to either voice=v, or data=d.
X.TP
X-u p|t (dialmode)
XSets the dialing mode to either pulse=p, or tone=t.
X.TP
X-k
XSet the line for a keyset (lighted) phone.
X.TP
X-w
XSet the line to say it has the message-waiting (call-waiting) feature.
X.RE
X.SH FILES
X.nf
X/dev/ph0 Telephone Line 0
X/dev/ph1 Telephone Line 1
X.fi
X.SH AUTHOR
X.RS
X.PP
XRoger Florkowski <...!cs.utexas.edu!taliesin!roger>
XManual by Lenny Tropiano <lenny at icus.ICUS.COM>
X.RE
END_OF_obminit.1
if test 928 -ne `wc -c <obminit.1`; then
echo shar: \"obminit.1\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f Makefile -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"Makefile\"
else
echo shar: Extracting \"Makefile\" \(653 characters\)
sed "s/^X//" >Makefile <<'END_OF_Makefile'
X#
X# Makefile to compile obminit.c (initialize the phone lines)
X# Program by Roger Florkowski <...!cs.utexas.edu!taliesin!roger>
X# Makefile & Manual Page by Lenny Tropiano <lenny at icus.ICUS.COM>
X#
XCFLAGS=-v -O
XLDFLAGS=-s
XLIBS=/lib/crt0s.o /lib/shlib.ifile
XMAN=/usr/man/man1
XBIN=/usr/lbin
X#
Xobminit: obminit.o
X @echo "Loading ..."
X $(LD) $(LDFLAGS) -o obminit obminit.o $(LIBS)
X#
Xinstall: obminit
X cp obminit.1 $(MAN)/
X chown bin $(MAN)/obminit.1
X chgrp bin $(MAN)/obminit.1
X chmod 644 $(MAN)/obminit.1
X cp obminit $(BIN)/
X chown root $(BIN)/obminit
X chgrp bin $(BIN)/obminit
X chmod 750 $(BIN)/obminit
X#
Xclean:
X rm -f obminit *.o core
END_OF_Makefile
if test 653 -ne `wc -c <Makefile`; then
echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f obminit.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"obminit.c\"
else
echo shar: Extracting \"obminit.c\" \(2962 characters\)
sed "s/^X//" >obminit.c <<'END_OF_obminit.c'
X
X/*
X * OBMinit. Set initial OBM parameters.
X * Usage:
X * obminit -l[0|1] -m[v|d] -u[p|t] -wk
X * where:
X * -l [0 == ph0, 1 == ph1]
X * -m [v == voice, d == data]
X * -u [p == pulse, t == tone]
X * -w == message waiting
X * -k == keyset
X */
X
X#include <stdio.h>
X#include <sys/phone.h>
X#include <fcntl.h>
X
Xextern char *optarg;
Xchar *prog_name;
X
Xmain (argc,argv)
Xint argc;
Xchar *argv[];
X{
X int fd, i;
X short line, key, mess_wait, mode, dial_out;
X char *device[10];
X struct updata tud;
X
X /* defaults. ph0, voice, pulse, no keyset, no message waiting */
X line = key = mess_wait = 0;
X mode = O_RDONLY;
X dial_out = PULSE;
X prog_name = argv[0];
X while ((i = getopt(argc, argv, "l:m:u:kw")) != EOF) {
X switch (i) {
X /* line. 0 == ph0, 1 == ph1 */
X case 'l':
X line = atoi(optarg);
X if (line < 0 || line > 1)
X Usage();
X break;
X
X /* mode. v == voice, d == data */
X case 'm':
X if (*optarg == 'v')
X mode = O_RDONLY;
X else if (*optarg == 'd')
X mode = O_RDWR | O_NDELAY;
X else
X Usage();
X break;
X
X /* dial_out. p == pulse, t == tone */
X case 'u':
X if (*optarg == 't')
X dial_out = DTMF;
X else if (*optarg == 'p')
X dial_out = PULSE;
X else
X Usage();
X break;
X
X /* keyset line */
X case 'k':
X key = USEALEAD;
X break;
X
X /* message waiting feature */
X case 'w':
X mess_wait = MSGWAIT;
X break;
X default:
X Usage();
X }
X }
X sprintf (device, "/dev/ph%d", line);
X
X /* check args */
X#if 0
X /* do I really care? b/c the open() will fail */
X /* failures are as such:
X * if no getty's are running, then all combinations work.
X * if a (uu)getty is on /dev/ph1, then ph1 can only be set
X * in data mode, and ph0 can only be set in voice mode.
X * if a (uu)getty is on /dev/ph0, then ph0 can only be set
X * in data mode, and ph1 can only be set in voice mode.
X * But what does setting ph1 in voice mode mean?
X */
X if (line == 1 && mode == O_RDONLY) {
X fprintf (stderr, "%s: DATA mode only\n", device);
X Usage();
X }
X#endif
X
X if ((fd = open (device, mode)) < 0) {
X fprintf (stderr, "%s: \"%s\" can not be opened.\n", prog_name, device);
X Usage();
X }
X
X /* put handset on the line if call_type is voice on ph0.
X * What would happen if we attached the handset to line 1?
X * the relay happily clicks ...
X */
X if (line == 0 && mode == O_RDONLY)
X ioctl (fd, PIOCLINESEL, 0);
X
X /* get current settings */
X ioctl (fd, PIOCGETP, &tud);
X
X /* reset modes */
X tud.c_lineparam &= ~(DTMF);
X tud.c_lineparam &= ~(PULSE);
X tud.c_lineparam &= ~(MSGWAIT);
X tud.c_lineparam &= ~(USEALEAD);
X
X /* set new modes */
X tud.c_lineparam |= (dial_out | key | mess_wait);
X
X ioctl (fd,PIOCSETP, &tud);
X
X close (fd);
X exit (0);
X}
X
XUsage()
X{
X fprintf (stderr, "usage: %s -l[0|1] -m[voice|data] -u[pulse|tone] -wk\n",
X prog_name);
X exit (1);
X}
END_OF_obminit.c
if test 2962 -ne `wc -c <obminit.c`; then
echo shar: \"obminit.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
--
| Lenny Tropiano ICUS Software Systems lenny at icus.ICUS.COM |
| {ames,pacbell,decuac,sbcs,hombre,rayssd}!icus!lenny attmail!icus!lenny |
+------ ICUS Software Systems -- PO Box 1; Islip Terrace, NY 11752 ------+
More information about the Comp.sys.att
mailing list