|
|
dd89bb |
#ifndef _NT_TERMIOS_H_
|
|
|
dd89bb |
#define _NT_TERMIOS_H_
|
|
|
dd89bb |
|
|
|
414ad3 |
#include "nt_abi.h"
|
|
|
dd89bb |
|
|
|
dd89bb |
/* tty friendly guids */
|
|
|
dd89bb |
#define TTY_PTM_GUID {0x21b51c45,0x3388,0x4dd9,{0x82,0x9a,0x5b,0x67,0x4e,0x3e,0x31,0x55}}
|
|
|
dd89bb |
#define TTY_PTS_GUID {0xa038ed3e,0x7bcc,0x4a53,{0xb2,0x94,0x01,0xdf,0x87,0xf6,0x94,0x70}}
|
|
|
dd89bb |
#define TTY_DBG_GUID {0x5ad03536,0xde3c,0x451a,{0xa4,0x32,0xf6,0xfd,0x95,0x97,0x5c,0x52}}
|
|
|
dd89bb |
|
|
|
dd89bb |
/* cc_chars */
|
|
|
dd89bb |
#define TTY_NCCS 32
|
|
|
dd89bb |
|
|
|
dd89bb |
#define TTY_VINTR 0x00
|
|
|
dd89bb |
#define TTY_VQUIT 0x01
|
|
|
dd89bb |
#define TTY_VERASE 0x02
|
|
|
dd89bb |
#define TTY_VKILL 0x03
|
|
|
dd89bb |
#define TTY_VEOF 0x04
|
|
|
dd89bb |
#define TTY_VTIME 0x05
|
|
|
dd89bb |
#define TTY_VMIN 0x06
|
|
|
dd89bb |
#define TTY_VSWTC 0x07
|
|
|
dd89bb |
#define TTY_VSTART 0x08
|
|
|
dd89bb |
#define TTY_VSTOP 0x09
|
|
|
dd89bb |
#define TTY_VSUSP 0x0a
|
|
|
dd89bb |
#define TTY_VEOL 0x0b
|
|
|
dd89bb |
#define TTY_VREPRINT 0x0c
|
|
|
dd89bb |
#define TTY_VDISCARD 0x0d
|
|
|
dd89bb |
#define TTY_VWERASE 0x0e
|
|
|
dd89bb |
#define TTY_VLNEXT 0x0f
|
|
|
dd89bb |
#define TTY_VEOL2 0x10
|
|
|
dd89bb |
|
|
|
dd89bb |
/* c_iflag bits */
|
|
|
dd89bb |
#define TTY_IGNBRK 0000001
|
|
|
dd89bb |
#define TTY_BRKINT 0000002
|
|
|
dd89bb |
#define TTY_IGNPAR 0000004
|
|
|
dd89bb |
#define TTY_PARMRK 0000010
|
|
|
dd89bb |
#define TTY_INPCK 0000020
|
|
|
dd89bb |
#define TTY_ISTRIP 0000040
|
|
|
dd89bb |
#define TTY_INLCR 0000100
|
|
|
dd89bb |
#define TTY_IGNCR 0000200
|
|
|
dd89bb |
#define TTY_ICRNL 0000400
|
|
|
dd89bb |
#define TTY_IUCLC 0001000
|
|
|
dd89bb |
#define TTY_IXON 0002000
|
|
|
dd89bb |
#define TTY_IXANY 0004000
|
|
|
dd89bb |
#define TTY_IXOFF 0010000
|
|
|
dd89bb |
#define TTY_IMAXBEL 0020000
|
|
|
dd89bb |
#define TTY_IUTF8 0040000
|
|
|
dd89bb |
|
|
|
dd89bb |
/* c_oflag bits */
|
|
|
dd89bb |
#define TTY_OPOST 0000001
|
|
|
dd89bb |
#define TTY_OLCUC 0000002
|
|
|
dd89bb |
#define TTY_ONLCR 0000004
|
|
|
dd89bb |
#define TTY_OCRNL 0000010
|
|
|
dd89bb |
#define TTY_ONOCR 0000020
|
|
|
dd89bb |
#define TTY_ONLRET 0000040
|
|
|
dd89bb |
#define TTY_OFILL 0000100
|
|
|
dd89bb |
#define TTY_OFDEL 0000200
|
|
|
dd89bb |
#define TTY_NLDLY 0000400
|
|
|
dd89bb |
#define TTY_NL0 0000000
|
|
|
dd89bb |
#define TTY_NL1 0000400
|
|
|
dd89bb |
#define TTY_CRDLY 0003000
|
|
|
dd89bb |
#define TTY_CR0 0000000
|
|
|
dd89bb |
#define TTY_CR1 0001000
|
|
|
dd89bb |
#define TTY_CR2 0002000
|
|
|
dd89bb |
#define TTY_CR3 0003000
|
|
|
dd89bb |
#define TTY_TABDLY 0014000
|
|
|
dd89bb |
#define TTY_TAB0 0000000
|
|
|
dd89bb |
#define TTY_TAB1 0004000
|
|
|
dd89bb |
#define TTY_TAB2 0010000
|
|
|
dd89bb |
#define TTY_TAB3 0014000
|
|
|
dd89bb |
#define TTY_BSDLY 0020000
|
|
|
dd89bb |
#define TTY_BS0 0000000
|
|
|
dd89bb |
#define TTY_BS1 0020000
|
|
|
dd89bb |
#define TTY_FFDLY 0100000
|
|
|
dd89bb |
#define TTY_FF0 0000000
|
|
|
dd89bb |
#define TTY_FF1 0100000
|
|
|
dd89bb |
|
|
|
dd89bb |
#define TTY_VTDLY 0040000
|
|
|
dd89bb |
#define TTY_VT0 0000000
|
|
|
dd89bb |
#define TTY_VT1 0040000
|
|
|
dd89bb |
|
|
|
dd89bb |
/* c_lflag bits */
|
|
|
dd89bb |
#define TTY_ISIG 0000001
|
|
|
dd89bb |
#define TTY_ICANON 0000002
|
|
|
dd89bb |
#define TTY_ECHO 0000010
|
|
|
dd89bb |
#define TTY_ECHOE 0000020
|
|
|
dd89bb |
#define TTY_ECHOK 0000040
|
|
|
dd89bb |
#define TTY_ECHONL 0000100
|
|
|
dd89bb |
#define TTY_NOFLSH 0000200
|
|
|
dd89bb |
#define TTY_TOSTOP 0000400
|
|
|
dd89bb |
#define TTY_IEXTEN 0100000
|
|
|
dd89bb |
|
|
|
dd89bb |
#define TTY_ECHOCTL 0001000
|
|
|
dd89bb |
#define TTY_ECHOPRT 0002000
|
|
|
dd89bb |
#define TTY_ECHOKE 0004000
|
|
|
dd89bb |
#define TTY_FLUSHO 0010000
|
|
|
dd89bb |
#define TTY_PENDIN 0040000
|
|
|
dd89bb |
|
|
|
dd89bb |
/* c_cflag bits */
|
|
|
dd89bb |
#define TTY_CBAUD 0010017
|
|
|
dd89bb |
#define TTY_CSIZE 0000060
|
|
|
dd89bb |
#define TTY_CS5 0000000
|
|
|
dd89bb |
#define TTY_CS6 0000020
|
|
|
dd89bb |
#define TTY_CS7 0000040
|
|
|
dd89bb |
#define TTY_CS8 0000060
|
|
|
dd89bb |
#define TTY_CSTOPB 0000100
|
|
|
dd89bb |
#define TTY_CREAD 0000200
|
|
|
dd89bb |
#define TTY_PARENB 0000400
|
|
|
dd89bb |
#define TTY_PARODD 0001000
|
|
|
dd89bb |
#define TTY_HUPCL 0002000
|
|
|
dd89bb |
#define TTY_CLOCAL 0004000
|
|
|
dd89bb |
|
|
|
dd89bb |
/* control flow */
|
|
|
dd89bb |
#define TTY_TCOOFF 0
|
|
|
dd89bb |
#define TTY_TCOON 1
|
|
|
dd89bb |
#define TTY_TCIOFF 2
|
|
|
dd89bb |
#define TTY_TCION 3
|
|
|
dd89bb |
|
|
|
dd89bb |
/* flush */
|
|
|
dd89bb |
#define TTY_TCIFLUSH 0
|
|
|
dd89bb |
#define TTY_TCOFLUSH 1
|
|
|
dd89bb |
#define TTY_TCIOFLUSH 2
|
|
|
dd89bb |
|
|
|
dd89bb |
/* tty ioctl */
|
|
|
dd89bb |
#define TTY_TCSANOW 0
|
|
|
dd89bb |
#define TTY_TCSADRAIN 1
|
|
|
dd89bb |
#define TTY_TCSAFLUSH 2
|
|
|
dd89bb |
|
|
|
dd89bb |
/* tty ioctl codes */
|
|
|
dd89bb |
#define TTY_TCGETS 0x5401
|
|
|
dd89bb |
#define TTY_TCSETS 0x5402
|
|
|
dd89bb |
#define TTY_TCSETSW 0x5403
|
|
|
dd89bb |
#define TTY_TCSETSF 0x5404
|
|
|
dd89bb |
#define TTY_TCGETA 0x5405
|
|
|
dd89bb |
#define TTY_TCSETA 0x5406
|
|
|
dd89bb |
#define TTY_TCSETAW 0x5407
|
|
|
dd89bb |
#define TTY_TCSETAF 0x5408
|
|
|
dd89bb |
#define TTY_TCSBRK 0x5409
|
|
|
dd89bb |
#define TTY_TCXONC 0x540A
|
|
|
dd89bb |
#define TTY_TCFLSH 0x540B
|
|
|
dd89bb |
#define TTY_TIOCEXCL 0x540C
|
|
|
dd89bb |
#define TTY_TIOCNXCL 0x540D
|
|
|
dd89bb |
#define TTY_TIOCSCTTY 0x540E
|
|
|
dd89bb |
#define TTY_TIOCGPGRP 0x540F
|
|
|
dd89bb |
#define TTY_TIOCSPGRP 0x5410
|
|
|
dd89bb |
#define TTY_TIOCOUTQ 0x5411
|
|
|
dd89bb |
#define TTY_TIOCSTI 0x5412
|
|
|
dd89bb |
#define TTY_TIOCGWINSZ 0x5413
|
|
|
dd89bb |
#define TTY_TIOCSWINSZ 0x5414
|
|
|
dd89bb |
#define TTY_TIOCMGET 0x5415
|
|
|
dd89bb |
#define TTY_TIOCMBIS 0x5416
|
|
|
dd89bb |
#define TTY_TIOCMBIC 0x5417
|
|
|
dd89bb |
#define TTY_TIOCMSET 0x5418
|
|
|
dd89bb |
#define TTY_TIOCGSOFTCAR 0x5419
|
|
|
dd89bb |
#define TTY_TIOCSSOFTCAR 0x541A
|
|
|
dd89bb |
#define TTY_FIONREAD 0x541B
|
|
|
dd89bb |
#define TTY_TIOCINQ FIONREAD
|
|
|
dd89bb |
#define TTY_TIOCLINUX 0x541C
|
|
|
dd89bb |
#define TTY_TIOCCONS 0x541D
|
|
|
dd89bb |
#define TTY_TIOCGSERIAL 0x541E
|
|
|
dd89bb |
#define TTY_TIOCSSERIAL 0x541F
|
|
|
dd89bb |
#define TTY_TIOCPKT 0x5420
|
|
|
dd89bb |
#define TTY_FIONBIO 0x5421
|
|
|
dd89bb |
#define TTY_TIOCNOTTY 0x5422
|
|
|
dd89bb |
#define TTY_TIOCSETD 0x5423
|
|
|
dd89bb |
#define TTY_TIOCGETD 0x5424
|
|
|
dd89bb |
#define TTY_TCSBRKP 0x5425
|
|
|
dd89bb |
#define TTY_TIOCTTYGSTRUCT 0x5426
|
|
|
dd89bb |
#define TTY_TIOCSBRK 0x5427
|
|
|
dd89bb |
#define TTY_TIOCCBRK 0x5428
|
|
|
dd89bb |
#define TTY_TIOCGSID 0x5429
|
|
|
dd89bb |
#define TTY_TIOCGPTN 0x5430
|
|
|
dd89bb |
#define TTY_TIOCSPTLCK 0x5431
|
|
|
dd89bb |
#define TTY_TCGETX 0x5432
|
|
|
dd89bb |
#define TTY_TCSETX 0x5433
|
|
|
dd89bb |
#define TTY_TCSETXF 0x5434
|
|
|
dd89bb |
#define TTY_TCSETXW 0x5435
|
|
|
dd89bb |
|
|
|
dd89bb |
/* packet mode */
|
|
|
dd89bb |
#define TTY_TIOCPKT_DATA 0x00
|
|
|
dd89bb |
#define TTY_TIOCPKT_FLUSHREAD 0x01
|
|
|
dd89bb |
#define TTY_TIOCPKT_FLUSHWRITE 0x02
|
|
|
dd89bb |
#define TTY_TIOCPKT_STOP 0x04
|
|
|
dd89bb |
#define TTY_TIOCPKT_START 0x08
|
|
|
dd89bb |
#define TTY_TIOCPKT_NOSTOP 0x10
|
|
|
dd89bb |
#define TTY_TIOCPKT_DOSTOP 0x20
|
|
|
dd89bb |
#define TTY_TIOCPKT_IOCTL 0x40
|
|
|
dd89bb |
|
|
|
dd89bb |
/* transmitter empty */
|
|
|
dd89bb |
#define TTY_TIOCSER_TEMT 0x01
|
|
|
dd89bb |
|
|
|
dd89bb |
/* baud rate... :-) */
|
|
|
dd89bb |
#define TTY_B0 0000000
|
|
|
dd89bb |
#define TTY_B50 0000001
|
|
|
dd89bb |
#define TTY_B75 0000002
|
|
|
dd89bb |
#define TTY_B110 0000003
|
|
|
dd89bb |
#define TTY_B134 0000004
|
|
|
dd89bb |
#define TTY_B150 0000005
|
|
|
dd89bb |
#define TTY_B200 0000006
|
|
|
dd89bb |
#define TTY_B300 0000007
|
|
|
dd89bb |
#define TTY_B600 0000010
|
|
|
dd89bb |
#define TTY_B1200 0000011
|
|
|
dd89bb |
#define TTY_B1800 0000012
|
|
|
dd89bb |
#define TTY_B2400 0000013
|
|
|
dd89bb |
#define TTY_B4800 0000014
|
|
|
dd89bb |
#define TTY_B9600 0000015
|
|
|
dd89bb |
#define TTY_B19200 0000016
|
|
|
dd89bb |
#define TTY_B38400 0000017
|
|
|
dd89bb |
|
|
|
dd89bb |
#define TTY_B57600 0010001
|
|
|
dd89bb |
#define TTY_B115200 0010002
|
|
|
dd89bb |
#define TTY_B230400 0010003
|
|
|
dd89bb |
#define TTY_B460800 0010004
|
|
|
dd89bb |
#define TTY_B500000 0010005
|
|
|
dd89bb |
#define TTY_B576000 0010006
|
|
|
dd89bb |
#define TTY_B921600 0010007
|
|
|
dd89bb |
#define TTY_B1000000 0010010
|
|
|
dd89bb |
#define TTY_B1152000 0010011
|
|
|
dd89bb |
#define TTY_B1500000 0010012
|
|
|
dd89bb |
#define TTY_B2000000 0010013
|
|
|
dd89bb |
#define TTY_B2500000 0010014
|
|
|
dd89bb |
#define TTY_B3000000 0010015
|
|
|
dd89bb |
#define TTY_B3500000 0010016
|
|
|
dd89bb |
#define TTY_B4000000 0010017
|
|
|
dd89bb |
|
|
|
dd89bb |
/* special characters */
|
|
|
dd89bb |
#define TTY_CTRL_AT 0x00
|
|
|
dd89bb |
#define TTY_CTRL_A 0x01
|
|
|
dd89bb |
#define TTY_CTRL_B 0x02
|
|
|
dd89bb |
#define TTY_CTRL_C 0x03
|
|
|
dd89bb |
#define TTY_CTRL_D 0x04
|
|
|
dd89bb |
#define TTY_CTRL_E 0x05
|
|
|
dd89bb |
#define TTY_CTRL_F 0x06
|
|
|
dd89bb |
#define TTY_CTRL_G 0x07
|
|
|
dd89bb |
#define TTY_CTRL_H 0x08
|
|
|
dd89bb |
#define TTY_CTRL_I 0x09
|
|
|
dd89bb |
#define TTY_CTRL_J 0x0a
|
|
|
dd89bb |
#define TTY_CTRL_K 0x0b
|
|
|
dd89bb |
#define TTY_CTRL_L 0x0c
|
|
|
dd89bb |
#define TTY_CTRL_M 0x0d
|
|
|
dd89bb |
#define TTY_CTRL_N 0x0e
|
|
|
dd89bb |
#define TTY_CTRL_O 0x0f
|
|
|
dd89bb |
#define TTY_CTRL_P 0x10
|
|
|
dd89bb |
#define TTY_CTRL_Q 0x11
|
|
|
dd89bb |
#define TTY_CTRL_R 0x12
|
|
|
dd89bb |
#define TTY_CTRL_S 0x13
|
|
|
dd89bb |
#define TTY_CTRL_T 0x14
|
|
|
dd89bb |
#define TTY_CTRL_U 0x15
|
|
|
dd89bb |
#define TTY_CTRL_V 0x16
|
|
|
dd89bb |
#define TTY_CTRL_W 0x17
|
|
|
dd89bb |
#define TTY_CTRL_X 0x18
|
|
|
dd89bb |
#define TTY_CTRL_Y 0x19
|
|
|
dd89bb |
#define TTY_CTRL_Z 0x1a
|
|
|
dd89bb |
#define TTY_CTRL_LBRACKET 0x1b
|
|
|
dd89bb |
#define TTY_CTRL_BSLASH 0x1c
|
|
|
dd89bb |
#define TTY_CTRL_RBRACKET 0x1d
|
|
|
dd89bb |
#define TTY_CTRL_CTRL 0x1e
|
|
|
dd89bb |
#define TTY_CTRL_USCORE 0x1f
|
|
|
dd89bb |
#define TTY_CTRL_QMARK 0x7f
|
|
|
dd89bb |
|
|
|
dd89bb |
/* tty properties */
|
|
|
dd89bb |
struct tty_termios {
|
|
|
dd89bb |
uint32_t c_iflag;
|
|
|
dd89bb |
uint32_t c_oflag;
|
|
|
dd89bb |
uint32_t c_cflag;
|
|
|
dd89bb |
uint32_t c_lflag;
|
|
|
dd89bb |
unsigned char c_line;
|
|
|
dd89bb |
unsigned char c_cc[TTY_NCCS];
|
|
|
dd89bb |
uint32_t __c_ispeed;
|
|
|
dd89bb |
uint32_t __c_ospeed;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
/* tty window properties */
|
|
|
dd89bb |
struct tty_winsize {
|
|
|
dd89bb |
uint16_t ws_row;
|
|
|
dd89bb |
uint16_t ws_col;
|
|
|
dd89bb |
uint16_t ws_xpixel;
|
|
|
dd89bb |
uint16_t ws_ypixel;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
struct tty_winbuffer {
|
|
|
dd89bb |
uint16_t wb_row;
|
|
|
dd89bb |
uint16_t wb_col;
|
|
|
dd89bb |
uint16_t wb_prev_row;
|
|
|
dd89bb |
uint16_t wb_prev_col;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
struct tty_winpos {
|
|
|
dd89bb |
uint16_t wp_x;
|
|
|
dd89bb |
uint16_t wp_y;
|
|
|
dd89bb |
uint16_t wp_prev_x;
|
|
|
dd89bb |
uint16_t wp_prev_y;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
struct tty_winprops {
|
|
|
dd89bb |
struct tty_winsize winsize;
|
|
|
dd89bb |
struct tty_winbuffer winbuffer;
|
|
|
dd89bb |
struct tty_winpos winpos;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
|
|
|
dd89bb |
#endif
|