termios/os/
linux.rs

1#![allow(non_camel_case_types)]
2
3use libc::{c_int,c_uint,c_uchar};
4
5pub type cc_t = c_uchar;
6pub type speed_t = c_uint;
7pub type tcflag_t = c_uint;
8
9#[derive(Debug,Copy,Clone,Eq,PartialEq)]
10#[repr(C)]
11pub struct termios {
12    pub c_iflag: tcflag_t,
13    pub c_oflag: tcflag_t,
14    pub c_cflag: tcflag_t,
15    pub c_lflag: tcflag_t,
16    c_line: cc_t,
17    pub c_cc: [cc_t; NCCS],
18    c_ispeed: speed_t,
19    c_ospeed: speed_t
20}
21
22pub const NCCS: usize = 32;
23
24// c_cc characters
25pub const VINTR:    usize = 0;
26pub const VQUIT:    usize = 1;
27pub const VERASE:   usize = 2;
28pub const VKILL:    usize = 3;
29pub const VEOF:     usize = 4;
30pub const VTIME:    usize = 5;
31pub const VMIN:     usize = 6;
32pub const VSWTC:    usize = 7;
33pub const VSTART:   usize = 8;
34pub const VSTOP:    usize = 9;
35pub const VSUSP:    usize = 10;
36pub const VEOL:     usize = 11;
37pub const VREPRINT: usize = 12;
38pub const VDISCARD: usize = 13;
39pub const VWERASE:  usize = 14;
40pub const VLNEXT:   usize = 15;
41pub const VEOL2:    usize = 16;
42
43// c_iflag bits
44pub const IGNBRK:  tcflag_t = 0o000001;
45pub const BRKINT:  tcflag_t = 0o000002;
46pub const IGNPAR:  tcflag_t = 0o000004;
47pub const PARMRK:  tcflag_t = 0o000010;
48pub const INPCK:   tcflag_t = 0o000020;
49pub const ISTRIP:  tcflag_t = 0o000040;
50pub const INLCR:   tcflag_t = 0o000100;
51pub const IGNCR:   tcflag_t = 0o000200;
52pub const ICRNL:   tcflag_t = 0o000400;
53pub const IUCLC:   tcflag_t = 0o001000;
54pub const IXON:    tcflag_t = 0o002000;
55pub const IXANY:   tcflag_t = 0o004000;
56pub const IXOFF:   tcflag_t = 0o010000;
57pub const IMAXBEL: tcflag_t = 0o020000;
58pub const IUTF8:   tcflag_t = 0o040000;
59
60// c_oflag bits
61pub const OPOST:  tcflag_t = 0o000001;
62pub const OLCUC:  tcflag_t = 0o000002;
63pub const ONLCR:  tcflag_t = 0o000004;
64pub const OCRNL:  tcflag_t = 0o000010;
65pub const ONOCR:  tcflag_t = 0o000020;
66pub const ONLRET: tcflag_t = 0o000040;
67pub const OFILL:  tcflag_t = 0o000100;
68pub const OFDEL:  tcflag_t = 0o000200;
69pub const NLDLY:  tcflag_t = 0o000400;
70pub const NL0:    tcflag_t = 0o000000;
71pub const NL1:    tcflag_t = 0o000400;
72pub const CRDLY:  tcflag_t = 0o003000;
73pub const CR0:    tcflag_t = 0o000000;
74pub const CR1:    tcflag_t = 0o001000;
75pub const CR2:    tcflag_t = 0o002000;
76pub const CR3:    tcflag_t = 0o003000;
77pub const TABDLY: tcflag_t = 0o014000;
78pub const TAB0:   tcflag_t = 0o000000;
79pub const TAB1:   tcflag_t = 0o004000;
80pub const TAB2:   tcflag_t = 0o010000;
81pub const TAB3:   tcflag_t = 0o014000;
82pub const BSDLY:  tcflag_t = 0o020000;
83pub const BS0:    tcflag_t = 0o000000;
84pub const BS1:    tcflag_t = 0o020000;
85pub const FFDLY:  tcflag_t = 0o100000;
86pub const FF0:    tcflag_t = 0o000000;
87pub const FF1:    tcflag_t = 0o100000;
88pub const VTDLY:  tcflag_t = 0o040000;
89pub const VT0:    tcflag_t = 0o000000;
90pub const VT1:    tcflag_t = 0o040000;
91pub const XTABS:  tcflag_t = 0o014000;
92
93// c_cflag bits
94pub const CBAUD:    tcflag_t = 0o010017;
95pub const CSIZE:    tcflag_t = 0o000060;
96pub const CS5:      tcflag_t = 0o000000;
97pub const CS6:      tcflag_t = 0o000020;
98pub const CS7:      tcflag_t = 0o000040;
99pub const CS8:      tcflag_t = 0o000060;
100pub const CSTOPB:   tcflag_t = 0o000100;
101pub const CREAD:    tcflag_t = 0o000200;
102pub const PARENB:   tcflag_t = 0o000400;
103pub const PARODD:   tcflag_t = 0o001000;
104pub const HUPCL:    tcflag_t = 0o002000;
105pub const CLOCAL:   tcflag_t = 0o004000;
106pub const CBAUDEX:  tcflag_t = 0o010000;
107pub const CIBAUD:   tcflag_t = 0o02003600000;
108pub const CMSPAR:   tcflag_t = 0o10000000000;
109pub const CRTSCTS:  tcflag_t = 0o20000000000;
110
111// c_lflag bits
112pub const ISIG:    tcflag_t = 0o000001;
113pub const ICANON:  tcflag_t = 0o000002;
114pub const XCASE:   tcflag_t = 0o000004;
115pub const ECHO:    tcflag_t = 0o000010;
116pub const ECHOE:   tcflag_t = 0o000020;
117pub const ECHOK:   tcflag_t = 0o000040;
118pub const ECHONL:  tcflag_t = 0o000100;
119pub const NOFLSH:  tcflag_t = 0o000200;
120pub const TOSTOP:  tcflag_t = 0o000400;
121pub const ECHOCTL: tcflag_t = 0o001000;
122pub const ECHOPRT: tcflag_t = 0o002000;
123pub const ECHOKE:  tcflag_t = 0o004000;
124pub const FLUSHO:  tcflag_t = 0o010000;
125pub const PENDIN:  tcflag_t = 0o040000;
126pub const IEXTEN:  tcflag_t = 0o100000;
127pub const EXTPROC: tcflag_t = 0o200000;
128
129// baud rates
130pub const B0:       speed_t = 0o000000;
131pub const B50:      speed_t = 0o000001;
132pub const B75:      speed_t = 0o000002;
133pub const B110:     speed_t = 0o000003;
134pub const B134:     speed_t = 0o000004;
135pub const B150:     speed_t = 0o000005;
136pub const B200:     speed_t = 0o000006;
137pub const B300:     speed_t = 0o000007;
138pub const B600:     speed_t = 0o000010;
139pub const B1200:    speed_t = 0o000011;
140pub const B1800:    speed_t = 0o000012;
141pub const B2400:    speed_t = 0o000013;
142pub const B4800:    speed_t = 0o000014;
143pub const B9600:    speed_t = 0o000015;
144pub const B19200:   speed_t = 0o000016;
145pub const B38400:   speed_t = 0o000017;
146pub const EXTA:     speed_t = B19200;
147pub const EXTB:     speed_t = B38400;
148pub const B57600:   speed_t = 0o010001;
149pub const B115200:  speed_t = 0o010002;
150pub const B230400:  speed_t = 0o010003;
151pub const B460800:  speed_t = 0o010004;
152pub const B500000:  speed_t = 0o010005;
153pub const B576000:  speed_t = 0o010006;
154pub const B921600:  speed_t = 0o010007;
155pub const B1000000: speed_t = 0o010010;
156pub const B1152000: speed_t = 0o010011;
157pub const B1500000: speed_t = 0o010012;
158pub const B2000000: speed_t = 0o010013;
159pub const B2500000: speed_t = 0o010014;
160pub const B3000000: speed_t = 0o010015;
161pub const B3500000: speed_t = 0o010016;
162pub const B4000000: speed_t = 0o010017;
163
164// tcflow()
165pub const TCOOFF: c_int = 0;
166pub const TCOON:  c_int = 1;
167pub const TCIOFF: c_int = 2;
168pub const TCION:  c_int = 3;
169
170// tcflush()
171pub const TCIFLUSH:  c_int = 0;
172pub const TCOFLUSH:  c_int = 1;
173pub const TCIOFLUSH: c_int = 2;
174
175// tcsetattr()
176pub const TCSANOW:   c_int = 0;
177pub const TCSADRAIN: c_int = 1;
178pub const TCSAFLUSH: c_int = 2;