summaryrefslogtreecommitdiffhomepage
path: root/include/ntapi/nt_termios.h
blob: b72339ce39df23485780a80316aaf55d48f34f4c (plain)
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