gcc41: update README.DELETED
[dragonfly.git] / usr.sbin / i4b / isdnphone / isdn.c
blobd2870f7d14616e9c7b8b73454b92bb4492999bf3
1 /*
2 * Copyright (c) 1999 Hellmuth Michaelis. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
25 *---------------------------------------------------------------------------
27 * isdnphone - isdn (i4b) handling
28 * ===============================
30 * $Id: isdn.c,v 1.4 1999/12/13 21:25:26 hm Exp $
32 * $FreeBSD: src/usr.sbin/i4b/isdnphone/isdn.c,v 1.1.2.1 2001/08/01 17:45:06 obrien Exp $
33 * $DragonFly: src/usr.sbin/i4b/isdnphone/isdn.c,v 1.2 2003/06/17 04:29:55 dillon Exp $
35 * last edit-date: [Mon Dec 13 21:53:05 1999]
37 *---------------------------------------------------------------------------*/
39 #include "defs.h"
41 /*---------------------------------------------------------------------------*
42 * dialer init
43 *---------------------------------------------------------------------------*/
44 int
45 init_dial(char *device)
47 int ret;
49 if((ret = open(device, O_RDWR)) < 0)
51 fprintf(stderr, "unable to open %s: %s\n", device, strerror(errno));
52 return(-1);
54 return(ret);
57 /*---------------------------------------------------------------------------*
58 * i4bteld data available handler
59 *---------------------------------------------------------------------------*/
60 void
61 dial_hdlr(void)
63 char result;
65 if((read (dialerfd, &result, 1) < 0))
67 fatal("read failed: %s", strerror(errno));
70 switch(result)
72 case RSP_CONN:
73 newstate(ST_ACTIVE);
74 message("connected to remote!");
75 break;
77 case RSP_BUSY:
78 message("remote is busy!");
79 break;
81 case RSP_HUP:
82 newstate(ST_IDLE);
83 message("disconnected from remote!");
84 break;
86 case RSP_NOA:
87 message("no answer from remote!");
88 break;
90 default:
91 message("unknown response = 0x%2x!", result);
92 break;
96 /*---------------------------------------------------------------------------*
97 * telephone init
98 *---------------------------------------------------------------------------*/
99 int
100 init_tel(char *device)
102 int ret;
103 int format;
105 if(play_fmt == AFMT_MU_LAW)
106 format = CVT_ALAW2ULAW;
107 else
108 format = CVT_NONE;
110 if((ret = open(device, O_RDWR)) < 0)
111 fatal("unable to open %s: %s\n", device, strerror(errno));
113 if((ioctl(ret, I4B_TEL_SETAUDIOFMT, &format)) < 0)
114 fatal("ioctl I4B_TEL_SETAUDIOFMT failed: %s", strerror(errno));
116 return(ret);
119 /*---------------------------------------------------------------------------*
120 * dial number
121 *---------------------------------------------------------------------------*/
122 void
123 do_dial(char *number)
125 char commandbuffer[80];
126 sprintf(commandbuffer, "D%s", number);
128 if((write(dialerfd, commandbuffer, strlen(commandbuffer))) < 0)
130 fatal("write commandbuffer failed: %s", strerror(errno));
134 /*---------------------------------------------------------------------------*
135 * hangup
136 *---------------------------------------------------------------------------*/
137 void
138 do_hangup(void)
140 char commandbuffer[80];
142 if(state == ST_IDLE)
144 message("tried hangup while ST_IDLE");
145 return;
148 sprintf(commandbuffer, "H");
150 if((write(dialerfd, commandbuffer, strlen(commandbuffer))) < 0)
152 fatal("write commandbuffer failed: %s", strerror(errno));
156 /*---------------------------------------------------------------------------*
157 * i4btel speech data available handler
158 *---------------------------------------------------------------------------*/
159 void
160 tel_hdlr(void)
162 unsigned char buffer[BCH_MAX_DATALEN];
163 int ret;
165 ret = read(telfd, buffer, BCH_MAX_DATALEN);
167 if(ret < 0)
169 fatal("read telfd failed: %s", strerror(errno));
172 debug("tel_hdlr: read %d bytes\n", ret);
174 if(ret > 0)
176 audiowrite(ret, buffer);
180 /*---------------------------------------------------------------------------*
181 * write audio data to ISDN
182 *---------------------------------------------------------------------------*/
183 void
184 telwrite(int len, unsigned char *buf)
186 if((write(telfd, buf, len)) < 0)
188 fatal("write tel failed: %s", strerror(errno));
192 /* EOF */