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