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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
#ifndef _NT_TERMIOS_H_
#define _NT_TERMIOS_H_
#include "nt_abi.h"
/* tty friendly guids */
#define TTY_PTM_GUID {0x21b51c45,0x3388,0x4dd9,{0x82,0x9a,0x5b,0x67,0x4e,0x3e,0x31,0x55}}
#define TTY_PTS_GUID {0xa038ed3e,0x7bcc,0x4a53,{0xb2,0x94,0x01,0xdf,0x87,0xf6,0x94,0x70}}
#define TTY_DBG_GUID {0x5ad03536,0xde3c,0x451a,{0xa4,0x32,0xf6,0xfd,0x95,0x97,0x5c,0x52}}
/* cc_chars */
#define TTY_NCCS 32
#define TTY_VINTR 0x00
#define TTY_VQUIT 0x01
#define TTY_VERASE 0x02
#define TTY_VKILL 0x03
#define TTY_VEOF 0x04
#define TTY_VTIME 0x05
#define TTY_VMIN 0x06
#define TTY_VSWTC 0x07
#define TTY_VSTART 0x08
#define TTY_VSTOP 0x09
#define TTY_VSUSP 0x0a
#define TTY_VEOL 0x0b
#define TTY_VREPRINT 0x0c
#define TTY_VDISCARD 0x0d
#define TTY_VWERASE 0x0e
#define TTY_VLNEXT 0x0f
#define TTY_VEOL2 0x10
/* c_iflag bits */
#define TTY_IGNBRK 0000001
#define TTY_BRKINT 0000002
#define TTY_IGNPAR 0000004
#define TTY_PARMRK 0000010
#define TTY_INPCK 0000020
#define TTY_ISTRIP 0000040
#define TTY_INLCR 0000100
#define TTY_IGNCR 0000200
#define TTY_ICRNL 0000400
#define TTY_IUCLC 0001000
#define TTY_IXON 0002000
#define TTY_IXANY 0004000
#define TTY_IXOFF 0010000
#define TTY_IMAXBEL 0020000
#define TTY_IUTF8 0040000
/* c_oflag bits */
#define TTY_OPOST 0000001
#define TTY_OLCUC 0000002
#define TTY_ONLCR 0000004
#define TTY_OCRNL 0000010
#define TTY_ONOCR 0000020
#define TTY_ONLRET 0000040
#define TTY_OFILL 0000100
#define TTY_OFDEL 0000200
#define TTY_NLDLY 0000400
#define TTY_NL0 0000000
#define TTY_NL1 0000400
#define TTY_CRDLY 0003000
#define TTY_CR0 0000000
#define TTY_CR1 0001000
#define TTY_CR2 0002000
#define TTY_CR3 0003000
#define TTY_TABDLY 0014000
#define TTY_TAB0 0000000
#define TTY_TAB1 0004000
#define TTY_TAB2 0010000
#define TTY_TAB3 0014000
#define TTY_BSDLY 0020000
#define TTY_BS0 0000000
#define TTY_BS1 0020000
#define TTY_FFDLY 0100000
#define TTY_FF0 0000000
#define TTY_FF1 0100000
#define TTY_VTDLY 0040000
#define TTY_VT0 0000000
#define TTY_VT1 0040000
/* c_lflag bits */
#define TTY_ISIG 0000001
#define TTY_ICANON 0000002
#define TTY_ECHO 0000010
#define TTY_ECHOE 0000020
#define TTY_ECHOK 0000040
#define TTY_ECHONL 0000100
#define TTY_NOFLSH 0000200
#define TTY_TOSTOP 0000400
#define TTY_IEXTEN 0100000
#define TTY_ECHOCTL 0001000
#define TTY_ECHOPRT 0002000
#define TTY_ECHOKE 0004000
#define TTY_FLUSHO 0010000
#define TTY_PENDIN 0040000
/* c_cflag bits */
#define TTY_CBAUD 0010017
#define TTY_CSIZE 0000060
#define TTY_CS5 0000000
#define TTY_CS6 0000020
#define TTY_CS7 0000040
#define TTY_CS8 0000060
#define TTY_CSTOPB 0000100
#define TTY_CREAD 0000200
#define TTY_PARENB 0000400
#define TTY_PARODD 0001000
#define TTY_HUPCL 0002000
#define TTY_CLOCAL 0004000
/* control flow */
#define TTY_TCOOFF 0
#define TTY_TCOON 1
#define TTY_TCIOFF 2
#define TTY_TCION 3
/* flush */
#define TTY_TCIFLUSH 0
#define TTY_TCOFLUSH 1
#define TTY_TCIOFLUSH 2
/* tty ioctl */
#define TTY_TCSANOW 0
#define TTY_TCSADRAIN 1
#define TTY_TCSAFLUSH 2
/* tty ioctl codes */
#define TTY_TCGETS 0x5401
#define TTY_TCSETS 0x5402
#define TTY_TCSETSW 0x5403
#define TTY_TCSETSF 0x5404
#define TTY_TCGETA 0x5405
#define TTY_TCSETA 0x5406
#define TTY_TCSETAW 0x5407
#define TTY_TCSETAF 0x5408
#define TTY_TCSBRK 0x5409
#define TTY_TCXONC 0x540A
#define TTY_TCFLSH 0x540B
#define TTY_TIOCEXCL 0x540C
#define TTY_TIOCNXCL 0x540D
#define TTY_TIOCSCTTY 0x540E
#define TTY_TIOCGPGRP 0x540F
#define TTY_TIOCSPGRP 0x5410
#define TTY_TIOCOUTQ 0x5411
#define TTY_TIOCSTI 0x5412
#define TTY_TIOCGWINSZ 0x5413
#define TTY_TIOCSWINSZ 0x5414
#define TTY_TIOCMGET 0x5415
#define TTY_TIOCMBIS 0x5416
#define TTY_TIOCMBIC 0x5417
#define TTY_TIOCMSET 0x5418
#define TTY_TIOCGSOFTCAR 0x5419
#define TTY_TIOCSSOFTCAR 0x541A
#define TTY_FIONREAD 0x541B
#define TTY_TIOCINQ FIONREAD
#define TTY_TIOCLINUX 0x541C
#define TTY_TIOCCONS 0x541D
#define TTY_TIOCGSERIAL 0x541E
#define TTY_TIOCSSERIAL 0x541F
#define TTY_TIOCPKT 0x5420
#define TTY_FIONBIO 0x5421
#define TTY_TIOCNOTTY 0x5422
#define TTY_TIOCSETD 0x5423
#define TTY_TIOCGETD 0x5424
#define TTY_TCSBRKP 0x5425
#define TTY_TIOCTTYGSTRUCT 0x5426
#define TTY_TIOCSBRK 0x5427
#define TTY_TIOCCBRK 0x5428
#define TTY_TIOCGSID 0x5429
#define TTY_TIOCGPTN 0x5430
#define TTY_TIOCSPTLCK 0x5431
#define TTY_TCGETX 0x5432
#define TTY_TCSETX 0x5433
#define TTY_TCSETXF 0x5434
#define TTY_TCSETXW 0x5435
/* packet mode */
#define TTY_TIOCPKT_DATA 0x00
#define TTY_TIOCPKT_FLUSHREAD 0x01
#define TTY_TIOCPKT_FLUSHWRITE 0x02
#define TTY_TIOCPKT_STOP 0x04
#define TTY_TIOCPKT_START 0x08
#define TTY_TIOCPKT_NOSTOP 0x10
#define TTY_TIOCPKT_DOSTOP 0x20
#define TTY_TIOCPKT_IOCTL 0x40
/* transmitter empty */
#define TTY_TIOCSER_TEMT 0x01
/* baud rate... :-) */
#define TTY_B0 0000000
#define TTY_B50 0000001
#define TTY_B75 0000002
#define TTY_B110 0000003
#define TTY_B134 0000004
#define TTY_B150 0000005
#define TTY_B200 0000006
#define TTY_B300 0000007
#define TTY_B600 0000010
#define TTY_B1200 0000011
#define TTY_B1800 0000012
#define TTY_B2400 0000013
#define TTY_B4800 0000014
#define TTY_B9600 0000015
#define TTY_B19200 0000016
#define TTY_B38400 0000017
#define TTY_B57600 0010001
#define TTY_B115200 0010002
#define TTY_B230400 0010003
#define TTY_B460800 0010004
#define TTY_B500000 0010005
#define TTY_B576000 0010006
#define TTY_B921600 0010007
#define TTY_B1000000 0010010
#define TTY_B1152000 0010011
#define TTY_B1500000 0010012
#define TTY_B2000000 0010013
#define TTY_B2500000 0010014
#define TTY_B3000000 0010015
#define TTY_B3500000 0010016
#define TTY_B4000000 0010017
/* special characters */
#define TTY_CTRL_AT 0x00
#define TTY_CTRL_A 0x01
#define TTY_CTRL_B 0x02
#define TTY_CTRL_C 0x03
#define TTY_CTRL_D 0x04
#define TTY_CTRL_E 0x05
#define TTY_CTRL_F 0x06
#define TTY_CTRL_G 0x07
#define TTY_CTRL_H 0x08
#define TTY_CTRL_I 0x09
#define TTY_CTRL_J 0x0a
#define TTY_CTRL_K 0x0b
#define TTY_CTRL_L 0x0c
#define TTY_CTRL_M 0x0d
#define TTY_CTRL_N 0x0e
#define TTY_CTRL_O 0x0f
#define TTY_CTRL_P 0x10
#define TTY_CTRL_Q 0x11
#define TTY_CTRL_R 0x12
#define TTY_CTRL_S 0x13
#define TTY_CTRL_T 0x14
#define TTY_CTRL_U 0x15
#define TTY_CTRL_V 0x16
#define TTY_CTRL_W 0x17
#define TTY_CTRL_X 0x18
#define TTY_CTRL_Y 0x19
#define TTY_CTRL_Z 0x1a
#define TTY_CTRL_LBRACKET 0x1b
#define TTY_CTRL_BSLASH 0x1c
#define TTY_CTRL_RBRACKET 0x1d
#define TTY_CTRL_CTRL 0x1e
#define TTY_CTRL_USCORE 0x1f
#define TTY_CTRL_QMARK 0x7f
/* tty properties */
struct tty_termios {
uint32_t c_iflag;
uint32_t c_oflag;
uint32_t c_cflag;
uint32_t c_lflag;
unsigned char c_line;
unsigned char c_cc[TTY_NCCS];
uint32_t __c_ispeed;
uint32_t __c_ospeed;
};
/* tty window properties */
struct tty_winsize {
uint16_t ws_row;
uint16_t ws_col;
uint16_t ws_xpixel;
uint16_t ws_ypixel;
};
struct tty_winbuffer {
uint16_t wb_row;
uint16_t wb_col;
uint16_t wb_prev_row;
uint16_t wb_prev_col;
};
struct tty_winpos {
uint16_t wp_x;
uint16_t wp_y;
uint16_t wp_prev_x;
uint16_t wp_prev_y;
};
struct tty_winprops {
struct tty_winsize winsize;
struct tty_winbuffer winbuffer;
struct tty_winpos winpos;
};
#endif
|