1/*	$NetBSD: ibcs2_termios.h,v 1.3 1994/10/26 02:53:07 cgd Exp $	*/
2
3/*
4 * Copyright (c) 1994 Scott Bartram
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 *    must display the following acknowledgement:
17 *      This product includes software developed by Scott Bartram.
18 * 4. The name of the author may not be used to endorse or promote products
19 *    derived from this software without specific prior written permission
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#ifndef	_IBCS2_TERMIOS_H
34#define	_IBCS2_TERMIOS_H	1
35
36#include <compat/ibcs2/ibcs2_types.h>
37
38#define IBCS2_NCC	8
39#define IBCS2_NCCS	13
40
41typedef u_short	ibcs2_tcflag_t;
42typedef u_char	ibcs2_cc_t;
43typedef u_long	ibcs2_speed_t;
44
45struct ibcs2_termio {
46	u_short	c_iflag;
47	u_short	c_oflag;
48	u_short	c_cflag;
49	u_short	c_lflag;
50	char	c_line;
51	u_char	c_cc[IBCS2_NCC];
52};
53
54struct ibcs2_termios {
55	ibcs2_tcflag_t	c_iflag;
56	ibcs2_tcflag_t	c_oflag;
57	ibcs2_tcflag_t	c_cflag;
58	ibcs2_tcflag_t	c_lflag;
59	char		c_line;
60	ibcs2_cc_t	c_cc[IBCS2_NCCS];
61	char		c_ispeed;
62	char		c_ospeed;
63};
64
65#define IBCS2_VINTR		0
66#define IBCS2_VQUIT		1
67#define IBCS2_VERASE		2
68#define IBCS2_VKILL		3
69#define IBCS2_VEOF		4
70#define IBCS2_VEOL		5
71#define IBCS2_VEOL2		6
72#define IBCS2_VMIN		4
73#define IBCS2_VTIME		5
74#define IBCS2_VSWTCH		7
75#define IBCS2_VSUSP		10
76#define IBCS2_VSTART		11
77#define IBCS2_VSTOP		12
78
79#define IBCS2_CNUL		0
80#define IBCS2_CDEL		0377
81#define IBCS2_CESC		'\\'
82#define IBCS2_CINTR		0177
83#define IBCS2_CQUIT		034
84#define IBCS2_CERASE		'#'
85#define IBCS2_CKILL		'@'
86#define IBCS2_CSTART		021
87#define IBCS2_CSTOP		023
88#define IBCS2_CSWTCH		032
89#define IBCS2_CNSWTCH		0
90#define IBCS2_CSUSP		032
91
92#define IBCS2_IGNBRK		0000001
93#define IBCS2_BRKINT		0000002
94#define IBCS2_IGNPAR		0000004
95#define IBCS2_PARMRK		0000010
96#define IBCS2_INPCK		0000020
97#define IBCS2_ISTRIP		0000040
98#define IBCS2_INLCR		0000100
99#define IBCS2_IGNCR		0000200
100#define IBCS2_ICRNL		0000400
101#define IBCS2_IUCLC		0001000
102#define IBCS2_IXON		0002000
103#define IBCS2_IXANY		0004000
104#define IBCS2_IXOFF		0010000
105#define IBCS2_IMAXBEL		0020000
106#define IBCS2_DOSMODE		0100000
107
108#define IBCS2_OPOST		0000001
109#define IBCS2_OLCUC		0000002
110#define IBCS2_ONLCR		0000004
111#define IBCS2_OCRNL		0000010
112#define IBCS2_ONOCR		0000020
113#define IBCS2_ONLRET		0000040
114#define IBCS2_OFILL		0000100
115#define IBCS2_OFDEL		0000200
116#define IBCS2_NLDLY		0000400
117#define IBCS2_NL0		0000000
118#define IBCS2_NL1		0000400
119#define IBCS2_CRDLY		0003000
120#define IBCS2_CR0		0000000
121#define IBCS2_CR1		0001000
122#define IBCS2_CR2		0002000
123#define IBCS2_CR3		0003000
124#define IBCS2_TABDLY		0014000
125#define IBCS2_TAB0		0000000
126#define IBCS2_TAB1		0004000
127#define IBCS2_TAB2		0010000
128#define IBCS2_TAB3		0014000
129#define IBCS2_BSDLY		0020000
130#define IBCS2_BS0		0000000
131#define IBCS2_BS1		0020000
132#define IBCS2_VTDLY		0040000
133#define IBCS2_VT0		0000000
134#define IBCS2_VT1		0040000
135#define IBCS2_FFDLY		0100000
136#define IBCS2_FF0		0000000
137#define IBCS2_FF1		0100000
138
139#define IBCS2_CBAUD		0000017
140#define IBCS2_CSIZE		0000060
141#define IBCS2_CS5		0000000
142#define IBCS2_CS6		0000020
143#define IBCS2_CS7		0000040
144#define IBCS2_CS8		0000060
145#define IBCS2_CSTOPB		0000100
146#define IBCS2_CREAD		0000200
147#define IBCS2_PARENB		0000400
148#define IBCS2_PARODD		0001000
149#define IBCS2_HUPCL		0002000
150#define IBCS2_CLOCAL		0004000
151#define IBCS2_RCV1EN		0010000
152#define IBCS2_XMT1EN		0020000
153#define IBCS2_LOBLK		0040000
154#define IBCS2_XCLUDE		0100000
155
156#define IBCS2_ISIG		0000001
157#define IBCS2_ICANON		0000002
158#define IBCS2_XCASE		0000004
159#define IBCS2_ECHO		0000010
160#define IBCS2_ECHOE		0000020
161#define IBCS2_ECHOK		0000040
162#define IBCS2_ECHONL		0000100
163#define IBCS2_NOFLSH		0000200
164#define IBCS2_IEXTEN		0000400
165#define IBCS2_TOSTOP		0001000
166
167#define IBCS2_XIOC		(('i'<<24)|('X'<<16))
168#define IBCS2_XCGETA  		(IBCS2_XIOC|1)
169#define IBCS2_XCSETA  		(IBCS2_XIOC|2)
170#define IBCS2_XCSETAW 		(IBCS2_XIOC|3)
171#define IBCS2_XCSETAF 		(IBCS2_XIOC|4)
172
173#define IBCS2_OXIOC		('x'<<8)
174#define IBCS2_OXCGETA  		(IBCS2_OXIOC|1)
175#define IBCS2_OXCSETA  		(IBCS2_OXIOC|2)
176#define IBCS2_OXCSETAW 		(IBCS2_OXIOC|3)
177#define IBCS2_OXCSETAF 		(IBCS2_OXIOC|4)
178
179#define IBCS2_TIOC		('T'<<8)
180#define IBCS2_TCGETA  		(IBCS2_TIOC|1)
181#define IBCS2_TCSETA  		(IBCS2_TIOC|2)
182#define IBCS2_TCSETAW 		(IBCS2_TIOC|3)
183#define IBCS2_TCSETAF 		(IBCS2_TIOC|4)
184#define IBCS2_TCSBRK  		(IBCS2_TIOC|5)
185#define IBCS2_TCXONC  		(IBCS2_TIOC|6)
186#define IBCS2_TCFLSH  		(IBCS2_TIOC|7)
187
188#define IBCS2_TCGETSC		(IBCS2_TIOC|34)
189#define IBCS2_TCSETSC		(IBCS2_TIOC|35)
190
191#define IBCS2_TIOCSWINSZ	(IBCS2_TIOC|103)
192#define IBCS2_TIOCGWINSZ	(IBCS2_TIOC|104)
193#define IBCS2_TIOCSPGRP		(IBCS2_TIOC|118)
194#define IBCS2_TIOCGPGRP		(IBCS2_TIOC|119)
195
196#define IBCS2_TCSANOW		IBCS2_XCSETA
197#define IBCS2_TCSADRAIN		IBCS2_XCSETAW
198#define IBCS2_TCSAFLUSH		IBCS2_XCSETAF
199#define IBCS2_TCSADFLUSH	IBCS2_XCSETAF
200
201#define IBCS2_TCIFLUSH		0
202#define IBCS2_TCOFLUSH		1
203#define IBCS2_TCIOFLUSH		2
204
205#define IBCS2_TCOOFF		0
206#define IBCS2_TCOON		1
207#define IBCS2_TCIOFF		2
208#define IBCS2_TCION		3
209
210#define IBCS2_B0		0
211#define IBCS2_B50		1
212#define IBCS2_B75		2
213#define IBCS2_B110		3
214#define IBCS2_B134		4
215#define IBCS2_B150		5
216#define IBCS2_B200		6
217#define IBCS2_B300		7
218#define IBCS2_B600		8
219#define IBCS2_B1200		9
220#define IBCS2_B1800		10
221#define IBCS2_B2400		11
222#define IBCS2_B4800		12
223#define IBCS2_B9600		13
224#define IBCS2_B19200		14
225#define IBCS2_B38400		15
226
227struct ibcs2_winsize {
228        u_short ws_row;
229        u_short ws_col;
230        u_short ws_xpixel;
231        u_short ws_ypixel;
232};
233
234#define	IBCS2_GHUPCL		0x0001
235#define	IBCS2_GXTABS		0x0002
236#define	IBCS2_GLCASE		0x0004
237#define	IBCS2_GECHO		0x0008
238#define	IBCS2_GCRMOD		0x0010
239#define	IBCS2_GRAW		0x0020
240#define	IBCS2_GODDP		0x0040
241#define	IBCS2_GEVENP		0x0080
242#define	IBCS2_GANYP		0x00C0
243#define	IBCS2_GNLDELAY		0x0300
244#define	IBCS2_GTBDELAY		0x0400
245#define	IBCS2_GCRDELAY		0x3000
246#define	IBCS2_GVTDELAY		0x4000
247#define	IBCS2_GBSDELAY		0x8000
248#define	IBCS2_GALLDELAY		0xFF00
249
250struct ibcs2_sgttyb {
251	char sg_ispeed;
252	char sg_ospeed;
253	char sg_erase;
254	char sg_kill;
255	int sg_flags;
256};
257
258#endif /* _IBCS2_H_ */
259