xref: /nrf52832-nimble/rt-thread/components/libc/termios/posix_termios.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2017/08/30      Bernard      The first version
9*10465441SEvalZero  */
10*10465441SEvalZero #ifndef TERMIOS_H__
11*10465441SEvalZero #define TERMIOS_H__
12*10465441SEvalZero 
13*10465441SEvalZero #include <rtthread.h>
14*10465441SEvalZero 
15*10465441SEvalZero #ifdef __cplusplus
16*10465441SEvalZero extern "C" {
17*10465441SEvalZero #endif
18*10465441SEvalZero 
19*10465441SEvalZero typedef unsigned char cc_t;
20*10465441SEvalZero typedef unsigned int speed_t;
21*10465441SEvalZero typedef unsigned int tcflag_t;
22*10465441SEvalZero 
23*10465441SEvalZero #define NCCS 32
24*10465441SEvalZero 
25*10465441SEvalZero struct termios {
26*10465441SEvalZero     tcflag_t c_iflag;
27*10465441SEvalZero     tcflag_t c_oflag;
28*10465441SEvalZero     tcflag_t c_cflag;
29*10465441SEvalZero     tcflag_t c_lflag;
30*10465441SEvalZero     cc_t c_line;
31*10465441SEvalZero     cc_t c_cc[NCCS];
32*10465441SEvalZero     speed_t __c_ispeed;
33*10465441SEvalZero     speed_t __c_ospeed;
34*10465441SEvalZero };
35*10465441SEvalZero 
36*10465441SEvalZero #define VINTR     0
37*10465441SEvalZero #define VQUIT     1
38*10465441SEvalZero #define VERASE    2
39*10465441SEvalZero #define VKILL     3
40*10465441SEvalZero #define VEOF      4
41*10465441SEvalZero #define VTIME     5
42*10465441SEvalZero #define VMIN      6
43*10465441SEvalZero #define VSWTC     7
44*10465441SEvalZero #define VSTART    8
45*10465441SEvalZero #define VSTOP     9
46*10465441SEvalZero #define VSUSP    10
47*10465441SEvalZero #define VEOL     11
48*10465441SEvalZero #define VREPRINT 12
49*10465441SEvalZero #define VDISCARD 13
50*10465441SEvalZero #define VWERASE  14
51*10465441SEvalZero #define VLNEXT   15
52*10465441SEvalZero #define VEOL2    16
53*10465441SEvalZero 
54*10465441SEvalZero #define IGNBRK  0000001
55*10465441SEvalZero #define BRKINT  0000002
56*10465441SEvalZero #define IGNPAR  0000004
57*10465441SEvalZero #define PARMRK  0000010
58*10465441SEvalZero #define INPCK   0000020
59*10465441SEvalZero #define ISTRIP  0000040
60*10465441SEvalZero #define INLCR   0000100
61*10465441SEvalZero #define IGNCR   0000200
62*10465441SEvalZero #define ICRNL   0000400
63*10465441SEvalZero #define IUCLC   0001000
64*10465441SEvalZero #define IXON    0002000
65*10465441SEvalZero #define IXANY   0004000
66*10465441SEvalZero #define IXOFF   0010000
67*10465441SEvalZero #define IMAXBEL 0020000
68*10465441SEvalZero #define IUTF8   0040000
69*10465441SEvalZero 
70*10465441SEvalZero #define OPOST  0000001
71*10465441SEvalZero #define OLCUC  0000002
72*10465441SEvalZero #define ONLCR  0000004
73*10465441SEvalZero #define OCRNL  0000010
74*10465441SEvalZero #define ONOCR  0000020
75*10465441SEvalZero #define ONLRET 0000040
76*10465441SEvalZero #define OFILL  0000100
77*10465441SEvalZero #define OFDEL  0000200
78*10465441SEvalZero #define NLDLY  0000400
79*10465441SEvalZero #define NL0    0000000
80*10465441SEvalZero #define NL1    0000400
81*10465441SEvalZero #define CRDLY  0003000
82*10465441SEvalZero #define CR0    0000000
83*10465441SEvalZero #define CR1    0001000
84*10465441SEvalZero #define CR2    0002000
85*10465441SEvalZero #define CR3    0003000
86*10465441SEvalZero #define TABDLY 0014000
87*10465441SEvalZero #define TAB0   0000000
88*10465441SEvalZero #define TAB1   0004000
89*10465441SEvalZero #define TAB2   0010000
90*10465441SEvalZero #define TAB3   0014000
91*10465441SEvalZero #define BSDLY  0020000
92*10465441SEvalZero #define BS0    0000000
93*10465441SEvalZero #define BS1    0020000
94*10465441SEvalZero #define FFDLY  0100000
95*10465441SEvalZero #define FF0    0000000
96*10465441SEvalZero #define FF1    0100000
97*10465441SEvalZero 
98*10465441SEvalZero #define VTDLY  0040000
99*10465441SEvalZero #define VT0    0000000
100*10465441SEvalZero #define VT1    0040000
101*10465441SEvalZero 
102*10465441SEvalZero #define B0       0000000
103*10465441SEvalZero #define B50      0000001
104*10465441SEvalZero #define B75      0000002
105*10465441SEvalZero #define B110     0000003
106*10465441SEvalZero #define B134     0000004
107*10465441SEvalZero #define B150     0000005
108*10465441SEvalZero #define B200     0000006
109*10465441SEvalZero #define B300     0000007
110*10465441SEvalZero #define B600     0000010
111*10465441SEvalZero #define B1200    0000011
112*10465441SEvalZero #define B1800    0000012
113*10465441SEvalZero #define B2400    0000013
114*10465441SEvalZero #define B4800    0000014
115*10465441SEvalZero #define B9600    0000015
116*10465441SEvalZero #define B19200   0000016
117*10465441SEvalZero #define B38400   0000017
118*10465441SEvalZero 
119*10465441SEvalZero #define B57600   0010001
120*10465441SEvalZero #define B115200  0010002
121*10465441SEvalZero #define B230400  0010003
122*10465441SEvalZero #define B460800  0010004
123*10465441SEvalZero #define B500000  0010005
124*10465441SEvalZero #define B576000  0010006
125*10465441SEvalZero #define B921600  0010007
126*10465441SEvalZero #define B1000000 0010010
127*10465441SEvalZero #define B1152000 0010011
128*10465441SEvalZero #define B1500000 0010012
129*10465441SEvalZero #define B2000000 0010013
130*10465441SEvalZero #define B2500000 0010014
131*10465441SEvalZero #define B3000000 0010015
132*10465441SEvalZero #define B3500000 0010016
133*10465441SEvalZero #define B4000000 0010017
134*10465441SEvalZero 
135*10465441SEvalZero #define CSIZE  0000060
136*10465441SEvalZero #define CS5    0000000
137*10465441SEvalZero #define CS6    0000020
138*10465441SEvalZero #define CS7    0000040
139*10465441SEvalZero #define CS8    0000060
140*10465441SEvalZero #define CSTOPB 0000100
141*10465441SEvalZero #define CREAD  0000200
142*10465441SEvalZero #define PARENB 0000400
143*10465441SEvalZero #define PARODD 0001000
144*10465441SEvalZero #define HUPCL  0002000
145*10465441SEvalZero #define CLOCAL 0004000
146*10465441SEvalZero 
147*10465441SEvalZero #define ISIG   0000001
148*10465441SEvalZero #define ICANON 0000002
149*10465441SEvalZero #define ECHO   0000010
150*10465441SEvalZero #define ECHOE  0000020
151*10465441SEvalZero #define ECHOK  0000040
152*10465441SEvalZero #define ECHONL 0000100
153*10465441SEvalZero #define NOFLSH 0000200
154*10465441SEvalZero #define TOSTOP 0000400
155*10465441SEvalZero #define IEXTEN 0100000
156*10465441SEvalZero 
157*10465441SEvalZero #define TCOOFF 0
158*10465441SEvalZero #define TCOON  1
159*10465441SEvalZero #define TCIOFF 2
160*10465441SEvalZero #define TCION  3
161*10465441SEvalZero 
162*10465441SEvalZero #define TCIFLUSH  0
163*10465441SEvalZero #define TCOFLUSH  1
164*10465441SEvalZero #define TCIOFLUSH 2
165*10465441SEvalZero 
166*10465441SEvalZero #define TCSANOW   0
167*10465441SEvalZero #define TCSADRAIN 1
168*10465441SEvalZero #define TCSAFLUSH 2
169*10465441SEvalZero 
170*10465441SEvalZero #define EXTA    0000016
171*10465441SEvalZero #define EXTB    0000017
172*10465441SEvalZero #define CBAUD   0010017
173*10465441SEvalZero #define CBAUDEX 0010000
174*10465441SEvalZero #define CIBAUD  002003600000
175*10465441SEvalZero #define CMSPAR  010000000000
176*10465441SEvalZero #define CRTSCTS 020000000000
177*10465441SEvalZero 
178*10465441SEvalZero #define XCASE   0000004
179*10465441SEvalZero #define ECHOCTL 0001000
180*10465441SEvalZero #define ECHOPRT 0002000
181*10465441SEvalZero #define ECHOKE  0004000
182*10465441SEvalZero #define FLUSHO  0010000
183*10465441SEvalZero #define PENDIN  0040000
184*10465441SEvalZero #define EXTPROC 0200000
185*10465441SEvalZero 
186*10465441SEvalZero #define XTABS  0014000
187*10465441SEvalZero 
188*10465441SEvalZero speed_t cfgetospeed (const struct termios *);
189*10465441SEvalZero speed_t cfgetispeed (const struct termios *);
190*10465441SEvalZero int cfsetospeed (struct termios *, speed_t);
191*10465441SEvalZero int cfsetispeed (struct termios *, speed_t);
192*10465441SEvalZero 
193*10465441SEvalZero int tcgetattr (int, struct termios *);
194*10465441SEvalZero int tcsetattr (int, int, const struct termios *);
195*10465441SEvalZero 
196*10465441SEvalZero int tcsendbreak (int, int);
197*10465441SEvalZero int tcdrain (int);
198*10465441SEvalZero int tcflush (int, int);
199*10465441SEvalZero int tcflow (int, int);
200*10465441SEvalZero 
201*10465441SEvalZero pid_t tcgetsid (int);
202*10465441SEvalZero 
203*10465441SEvalZero #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
204*10465441SEvalZero void cfmakeraw(struct termios *);
205*10465441SEvalZero int cfsetspeed(struct termios *, speed_t);
206*10465441SEvalZero #endif
207*10465441SEvalZero 
208*10465441SEvalZero #ifdef __cplusplus
209*10465441SEvalZero }
210*10465441SEvalZero #endif
211*10465441SEvalZero 
212*10465441SEvalZero #endif
213