about summary refs log tree commit diff stats
path: root/kernel.soso/termios.h
blob: c90a4b606cd5f9d4cb2072343ecdb9aa584c0171 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#ifndef TERMIOS_H
#define TERMIOS_H

//This file will also be included by C library.

typedef unsigned char       cc_t;
typedef unsigned int        speed_t;
typedef unsigned int        tcflag_t;

#define NCCS 32

struct termios {
    tcflag_t c_iflag;        // input mode flags
    tcflag_t c_oflag;        // output mode flags
    tcflag_t c_cflag;        // control mode flags
    tcflag_t c_lflag;        // local mode flags
    cc_t c_line;             // line discipline
    cc_t c_cc[NCCS];         // control characters
    speed_t c_ispeed;        // input speed
    speed_t c_ospeed;        // output speed

  };

// c_cc characters
#define VINTR 0
#define VQUIT 1
#define VERASE 2
#define VKILL 3
#define VEOF 4
#define VTIME 5
#define VMIN 6
#define VSWTC 7
#define VSTART 8
#define VSTOP 9
#define VSUSP 10
#define VEOL 11
#define VREPRINT 12
#define VDISCARD 13
#define VWERASE 14
#define VLNEXT 15
#define VEOL2 16

// c_iflag bits
#define IGNBRK        0000001
#define BRKINT        0000002
#define IGNPAR        0000004
#define PARMRK        0000010
#define INPCK        0000020
#define ISTRIP        0000040
#define INLCR        0000100
#define IGNCR        0000200
#define ICRNL        0000400
#define IUCLC        0001000
#define IXON        0002000
#define IXANY        0004000
#define IXOFF        0010000
#define IMAXBEL        0020000
#define IUTF8        0040000

// c_oflag bits
#define OPOST        0000001
#define OLCUC        0000002
#define ONLCR        0000004
#define OCRNL        0000010
#define ONOCR        0000020
#define ONLRET        0000040
#define OFILL        0000100
#define OFDEL        0000200
#define NLDLY        0000400
#define   NL0        0000000
#define   NL1        0000400
#define CRDLY        0003000
#define   CR0        0000000
#define   CR1        0001000
#define   CR2        0002000
#define   CR3        0003000
#define TABDLY        0014000
#define   TAB0        0000000
#define   TAB1        0004000
#define   TAB2        0010000
#define   TAB3        0014000
#define BSDLY        0020000
#define   BS0        0000000
#define   BS1        0020000
#define FFDLY        0100000
#define   FF0        0000000
#define   FF1        0100000

#define VTDLY        0040000
#define   VT0        0000000
#define   VT1        0040000
#define XTABS        0014000

// c_cflag bit meaning
# define CBAUD        0010017

#define  B0        0000000                // hang up
#define  B50        0000001
#define  B75        0000002
#define  B110        0000003
#define  B134        0000004
#define  B150        0000005
#define  B200        0000006
#define  B300        0000007
#define  B600        0000010
#define  B1200        0000011
#define  B1800        0000012
#define  B2400        0000013
#define  B4800        0000014
#define  B9600        0000015
#define  B19200        0000016
#define  B38400        0000017
#define EXTA B19200
#define EXTB B38400
#define CSIZE        0000060
#define   CS5        0000000
#define   CS6        0000020
#define   CS7        0000040
#define   CS8        0000060
#define CSTOPB        0000100
#define CREAD        0000200
#define PARENB        0000400
#define PARODD        0001000
#define HUPCL        0002000
#define CLOCAL        0004000

#define CBAUDEX 0010000

#define  B57600   0010001
#define  B115200  0010002
#define  B230400  0010003
#define  B460800  0010004
#define  B500000  0010005
#define  B576000  0010006
#define  B921600  0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017
#define __MAX_BAUD B4000000

#define CIBAUD   002003600000                // input baud rate (not used)
#define CMSPAR   010000000000                // mark or space (stick) parity
#define CRTSCTS  020000000000                // flow control

// c_lflag bits
#define ISIG        0000001
#define ICANON        0000002
#define XCASE        0000004
#define ECHO        0000010
#define ECHOE        0000020
#define ECHOK        0000040
#define ECHONL        0000100
#define NOFLSH        0000200
#define TOSTOP        0000400
#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE         0004000
#define FLUSHO         0010000
#define PENDIN         0040000

#define IEXTEN        0100000
#define EXTPROC 0200000

// tcflow() and TCXONC use these
#define        TCOOFF               0
#define        TCOON                1
#define        TCIOFF               2
#define        TCION                3

// tcflush() and TCFLSH use these
#define        TCIFLUSH        0
#define        TCOFLUSH        1
#define        TCIOFLUSH       2

// tcsetattr uses these
#define        TCSANOW          0
#define        TCSADRAIN        1
#define        TCSAFLUSH        2

//ioctl interface
#define TCGETS		0x5001
#define TCSETS		0x5002
#define TCSETSW		0x5003
#define TCSETSF		0x5004

#endif // TERMIOS_H