openenvutils/commandshell/shell/inc/termios.h
changeset 0 2e3d3ce01487
child 1 0fdb7f6b0309
equal deleted inserted replaced
-1:000000000000 0:2e3d3ce01487
       
     1 //termios.h
       
     2 //
       
     3 // © Portions Copyright (c) Symbian Software Ltd 2007. All rights reserved.
       
     4 //
       
     5 /*-
       
     6  * Copyright (c) 1988, 1989, 1993, 1994
       
     7  *	The Regents of the University of California.  All rights reserved.
       
     8  *
       
     9  * Redistribution and use in source and binary forms, with or without
       
    10  * modification, are permitted provided that the following conditions
       
    11  * are met:
       
    12  * 1. Redistributions of source code must retain the above copyright
       
    13  *    notice, this list of conditions and the following disclaimer.
       
    14  * 2. Redistributions in binary form must reproduce the above copyright
       
    15  *    notice, this list of conditions and the following disclaimer in the
       
    16  *    documentation and/or other materials provided with the distribution.
       
    17  * 4. Neither the name of the University nor the names of its contributors
       
    18  *    may be used to endorse or promote products derived from this software
       
    19  *    without specific prior written permission.
       
    20  *
       
    21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
       
    22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       
    24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
       
    25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       
    26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
       
    27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       
    28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
       
    29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
       
    30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
       
    31  * SUCH DAMAGE.
       
    32  *
       
    33  *	@(#)termios.h	8.3 (Berkeley) 3/28/94
       
    34  * $FreeBSD: src/sys/sys/termios.h,v 1.20 2005/01/07 02:29:24 imp Exp $
       
    35  */
       
    36 
       
    37 #ifndef _SYS_TERMIOS_H_
       
    38 #define _SYS_TERMIOS_H_
       
    39 
       
    40 /*
       
    41  * Special Control Characters
       
    42  *
       
    43  * Index into c_cc[] character array.
       
    44  *
       
    45  *	Name	     Subscript	Enabled by
       
    46  */
       
    47 #define	VEOF		0	/* ICANON */
       
    48 #define	VEOL		1	/* ICANON */
       
    49 #ifndef _POSIX_SOURCE
       
    50 #define	VEOL2		2	/* ICANON together with IEXTEN */
       
    51 #endif
       
    52 #define	VERASE		3	/* ICANON */
       
    53 #ifndef _POSIX_SOURCE
       
    54 #define VWERASE 	4	/* ICANON together with IEXTEN */
       
    55 #endif
       
    56 #define VKILL		5	/* ICANON */
       
    57 #ifndef _POSIX_SOURCE
       
    58 #define	VREPRINT 	6	/* ICANON together with IEXTEN */
       
    59 #define VERASE2 	7	/* ICANON */
       
    60 #endif
       
    61 /*			7	   ex-spare 1 */
       
    62 #define VINTR		8	/* ISIG */
       
    63 #define VQUIT		9	/* ISIG */
       
    64 #define VSUSP		10	/* ISIG */
       
    65 #ifndef _POSIX_SOURCE
       
    66 #define VDSUSP		11	/* ISIG together with IEXTEN */
       
    67 #endif
       
    68 #define VSTART		12	/* IXON, IXOFF */
       
    69 #define VSTOP		13	/* IXON, IXOFF */
       
    70 #ifndef _POSIX_SOURCE
       
    71 #define	VLNEXT		14	/* IEXTEN */
       
    72 #define	VDISCARD	15	/* IEXTEN */
       
    73 #endif
       
    74 #define VMIN		16	/* !ICANON */
       
    75 #define VTIME		17	/* !ICANON */
       
    76 #ifndef _POSIX_SOURCE
       
    77 #define VSTATUS		18	/* ICANON together with IEXTEN */
       
    78 /*			19	   spare 2 */
       
    79 #endif
       
    80 #define	NCCS		20
       
    81 
       
    82 #define	_POSIX_VDISABLE	0xff
       
    83 
       
    84 #ifndef _POSIX_SOURCE
       
    85 #define	CCEQ(val, c)	((c) == (val) ? (val) != _POSIX_VDISABLE : 0)
       
    86 #endif
       
    87 
       
    88 /*
       
    89  * Input flags - software input processing
       
    90  */
       
    91 #define	IGNBRK		0x00000001	/* ignore BREAK condition */
       
    92 #define	BRKINT		0x00000002	/* map BREAK to SIGINTR */
       
    93 #define	IGNPAR		0x00000004	/* ignore (discard) parity errors */
       
    94 #define	PARMRK		0x00000008	/* mark parity and framing errors */
       
    95 #define	INPCK		0x00000010	/* enable checking of parity errors */
       
    96 #define	ISTRIP		0x00000020	/* strip 8th bit off chars */
       
    97 #define	INLCR		0x00000040	/* map NL into CR */
       
    98 #define	IGNCR		0x00000080	/* ignore CR */
       
    99 #define	ICRNL		0x00000100	/* map CR to NL (ala CRMOD) */
       
   100 #define	IXON		0x00000200	/* enable output flow control */
       
   101 #define	IXOFF		0x00000400	/* enable input flow control */
       
   102 #ifndef _POSIX_SOURCE
       
   103 #define	IXANY		0x00000800	/* any char will restart after stop */
       
   104 #define IMAXBEL		0x00002000	/* ring bell on input queue full */
       
   105 #endif  /*_POSIX_SOURCE */
       
   106 
       
   107 /*
       
   108  * Output flags - software output processing
       
   109  */
       
   110 #define	OPOST		0x00000001	/* enable following output processing */
       
   111 #ifndef _POSIX_SOURCE
       
   112 #define ONLCR		0x00000002	/* map NL to CR-NL (ala CRMOD) */
       
   113 #define OXTABS		0x00000004	/* expand tabs to spaces */
       
   114 #define ONOEOT		0x00000008	/* discard EOT's (^D) on output) */
       
   115 #define OCRNL		0x00000010	/* map CR to NL on output */
       
   116 #define ONOCR		0x00000020	/* no CR output at column 0 */
       
   117 #define ONLRET		0x00000040	/* NL performs CR function */
       
   118 #endif  /*_POSIX_SOURCE */
       
   119 
       
   120 /*
       
   121  * Control flags - hardware control of terminal
       
   122  */
       
   123 #ifndef _POSIX_SOURCE
       
   124 #define	CIGNORE		0x00000001	/* ignore control flags */
       
   125 #endif
       
   126 #define CSIZE		0x00000300	/* character size mask */
       
   127 #define     CS5		    0x00000000	    /* 5 bits (pseudo) */
       
   128 #define     CS6		    0x00000100	    /* 6 bits */
       
   129 #define     CS7		    0x00000200	    /* 7 bits */
       
   130 #define     CS8		    0x00000300	    /* 8 bits */
       
   131 #define CSTOPB		0x00000400	/* send 2 stop bits */
       
   132 #define CREAD		0x00000800	/* enable receiver */
       
   133 #define PARENB		0x00001000	/* parity enable */
       
   134 #define PARODD		0x00002000	/* odd parity, else even */
       
   135 #define HUPCL		0x00004000	/* hang up on last close */
       
   136 #define CLOCAL		0x00008000	/* ignore modem status lines */
       
   137 #ifndef _POSIX_SOURCE
       
   138 #define CCTS_OFLOW	0x00010000	/* CTS flow control of output */
       
   139 #define CRTSCTS		(CCTS_OFLOW | CRTS_IFLOW)
       
   140 #define CRTS_IFLOW	0x00020000	/* RTS flow control of input */
       
   141 #define	CDTR_IFLOW	0x00040000	/* DTR flow control of input */
       
   142 #define CDSR_OFLOW	0x00080000	/* DSR flow control of output */
       
   143 #define	CCAR_OFLOW	0x00100000	/* DCD flow control of output */
       
   144 #define	MDMBUF		0x00100000	/* old name for CCAR_OFLOW */
       
   145 #endif
       
   146 
       
   147 
       
   148 /*
       
   149  * "Local" flags - dumping ground for other state
       
   150  *
       
   151  * Warning: some flags in this structure begin with
       
   152  * the letter "I" and look like they belong in the
       
   153  * input flag.
       
   154  */
       
   155 
       
   156 #ifndef _POSIX_SOURCE
       
   157 #define	ECHOKE		0x00000001	/* visual erase for line kill */
       
   158 #endif  /*_POSIX_SOURCE */
       
   159 #define	ECHOE		0x00000002	/* visually erase chars */
       
   160 #define	ECHOK		0x00000004	/* echo NL after line kill */
       
   161 #define ECHO		0x00000008	/* enable echoing */
       
   162 #define	ECHONL		0x00000010	/* echo NL even if ECHO is off */
       
   163 #ifndef _POSIX_SOURCE
       
   164 #define	ECHOPRT		0x00000020	/* visual erase mode for hardcopy */
       
   165 #define ECHOCTL  	0x00000040	/* echo control chars as ^(Char) */
       
   166 #endif  /*_POSIX_SOURCE */
       
   167 #define	ISIG		0x00000080	/* enable signals INTR, QUIT, [D]SUSP */
       
   168 #define	ICANON		0x00000100	/* canonicalize input lines */
       
   169 #ifndef _POSIX_SOURCE
       
   170 #define ALTWERASE	0x00000200	/* use alternate WERASE algorithm */
       
   171 #endif  /*_POSIX_SOURCE */
       
   172 #define	IEXTEN		0x00000400	/* enable DISCARD and LNEXT */
       
   173 #define EXTPROC         0x00000800      /* external processing */
       
   174 #define TOSTOP		0x00400000	/* stop background jobs from output */
       
   175 #ifndef _POSIX_SOURCE
       
   176 #define FLUSHO		0x00800000	/* output being flushed (state) */
       
   177 #define	NOKERNINFO	0x02000000	/* no kernel output from VSTATUS */
       
   178 #define PENDIN		0x20000000	/* XXX retype pending input (state) */
       
   179 #endif  /*_POSIX_SOURCE */
       
   180 #define	NOFLSH		0x80000000	/* don't flush after interrupt */
       
   181 
       
   182 typedef unsigned int	tcflag_t;
       
   183 typedef unsigned char	cc_t;
       
   184 typedef unsigned int	speed_t;
       
   185 
       
   186 struct termios {
       
   187 	tcflag_t	c_iflag;	/* input flags */
       
   188 	tcflag_t	c_oflag;	/* output flags */
       
   189 	tcflag_t	c_cflag;	/* control flags */
       
   190 	tcflag_t	c_lflag;	/* local flags */
       
   191 	cc_t		c_cc[NCCS];	/* control chars */
       
   192 	speed_t		c_ispeed;	/* input speed */
       
   193 	speed_t		c_ospeed;	/* output speed */
       
   194 };
       
   195 
       
   196 /*
       
   197  * Commands passed to tcsetattr() for setting the termios structure.
       
   198  */
       
   199 #define	TCSANOW		0		/* make change immediate */
       
   200 #define	TCSADRAIN	1		/* drain output, then change */
       
   201 #define	TCSAFLUSH	2		/* drain output, flush input */
       
   202 #ifndef _POSIX_SOURCE
       
   203 #define TCSASOFT	0x10		/* flag - don't alter h.w. state */
       
   204 #endif
       
   205 
       
   206 /*
       
   207  * Standard speeds
       
   208  */
       
   209 #define B0	0
       
   210 #define B50	50
       
   211 #define B75	75
       
   212 #define B110	110
       
   213 #define B134	134
       
   214 #define B150	150
       
   215 #define B200	200
       
   216 #define B300	300
       
   217 #define B600	600
       
   218 #define B1200	1200
       
   219 #define	B1800	1800
       
   220 #define B2400	2400
       
   221 #define B4800	4800
       
   222 #define B9600	9600
       
   223 #define B19200	19200
       
   224 #define B38400	38400
       
   225 #ifndef _POSIX_SOURCE
       
   226 #define B7200	7200
       
   227 #define B14400	14400
       
   228 #define B28800	28800
       
   229 #define B57600	57600
       
   230 #define B76800	76800
       
   231 #define B115200	115200
       
   232 #define B230400	230400
       
   233 #define B460800	460800
       
   234 #define B921600	921600
       
   235 #define EXTA	19200
       
   236 #define EXTB	38400
       
   237 #endif  /* !_POSIX_SOURCE */
       
   238 
       
   239 #ifndef _KERNEL
       
   240 
       
   241 #define	TCIFLUSH	1
       
   242 #define	TCOFLUSH	2
       
   243 #define TCIOFLUSH	3
       
   244 #define	TCOOFF		1
       
   245 #define	TCOON		2
       
   246 #define TCIOFF		3
       
   247 #define TCION		4
       
   248 
       
   249 #include <sys/cdefs.h>
       
   250 
       
   251 __BEGIN_DECLS
       
   252 //speed_t	cfgetispeed(const struct termios *);
       
   253 //speed_t	cfgetospeed(const struct termios *);
       
   254 //int	cfsetispeed(struct termios *, speed_t);
       
   255 //int	cfsetospeed(struct termios *, speed_t);
       
   256 //int	tcgetattr(int, struct termios *);
       
   257 //int	tcsetattr(int, int, const struct termios *);
       
   258 //int	tcdrain(int);
       
   259 //int	tcflow(int, int);
       
   260 //int	tcflush(int, int);
       
   261 //int	tcsendbreak(int, int);
       
   262 
       
   263 #ifndef _POSIX_SOURCE
       
   264 void	cfmakeraw(struct termios *);
       
   265 int	cfsetspeed(struct termios *, speed_t);
       
   266 #endif /* !_POSIX_SOURCE */
       
   267 __END_DECLS
       
   268 
       
   269 #endif /* !_KERNEL */
       
   270 
       
   271 #ifndef _POSIX_SOURCE
       
   272 
       
   273 /*
       
   274  * Include tty ioctl's that aren't just for backwards compatibility
       
   275  * with the old tty driver.  These ioctl definitions were previously
       
   276  * in <sys/ioctl.h>.
       
   277  */
       
   278 #include <sys/ttycom.h>
       
   279 #endif
       
   280 
       
   281 /*
       
   282  * END OF PROTECTED INCLUDE.
       
   283  */
       
   284 #endif /* !_SYS_TERMIOS_H_ */
       
   285 
       
   286 #ifndef _POSIX_SOURCE
       
   287 #ifndef __SYMBIAN32__
       
   288 #include <sys/ttydefaults.h>
       
   289 #else
       
   290 #include "ttydefaults.h"
       
   291 #endif
       
   292 #endif