dmx_termios/os/
linux.rs

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