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 pub c_cc: [cc_t; NCCS] 17 } 18 19 pub const NCCS: usize = 19; 20 21 // c_cc characters 22 pub const VINTR: usize = 0; 23 pub const VQUIT: usize = 1; 24 pub const VERASE: usize = 2; 25 pub const VKILL: usize = 3; 26 pub const VEOF: usize = 4; 27 pub const VEOL: usize = 5; 28 pub const VEOL2: usize = 6; 29 pub const VMIN: usize = 4; 30 pub const VTIME: usize = 5; 31 pub const VSWTCH: usize = 7; 32 pub const VSTART: usize = 8; 33 pub const VSTOP: usize = 9; 34 pub const VSUSP: usize = 10; 35 pub const VDSUSP: usize = 11; 36 pub const VREPRINT: usize = 12; 37 pub const VDISCARD: usize = 13; 38 pub const VWERASE: usize = 14; 39 pub const VLNEXT: usize = 15; 40 pub const VSTATUS: usize = 16; 41 pub const VERASE2: usize = 17; 42 43 // c_iflag bits 44 pub const IGNBRK: tcflag_t = 0o000001; 45 pub const BRKINT: tcflag_t = 0o000002; 46 pub const IGNPAR: tcflag_t = 0o000004; 47 pub const PARMRK: tcflag_t = 0o000010; 48 pub const INPCK: tcflag_t = 0o000020; 49 pub const ISTRIP: tcflag_t = 0o000040; 50 pub const INLCR: tcflag_t = 0o000100; 51 pub const IGNCR: tcflag_t = 0o000200; 52 pub const ICRNL: tcflag_t = 0o000400; 53 pub const IUCLC: tcflag_t = 0o001000; 54 pub const IXON: tcflag_t = 0o002000; 55 pub const IXANY: tcflag_t = 0o004000; 56 pub const IXOFF: tcflag_t = 0o010000; 57 pub const IMAXBEL: tcflag_t = 0o020000; 58 pub const DOSMODE: tcflag_t = 0o100000; 59 60 // c_oflag bits 61 pub const OPOST: tcflag_t = 0o000001; 62 pub const OLCUC: tcflag_t = 0o000002; 63 pub const ONLCR: tcflag_t = 0o000004; 64 pub const OCRNL: tcflag_t = 0o000010; 65 pub const ONOCR: tcflag_t = 0o000020; 66 pub const ONLRET: tcflag_t = 0o000040; 67 pub const OFILL: tcflag_t = 0o000100; 68 pub const OFDEL: tcflag_t = 0o000200; 69 pub const NLDLY: tcflag_t = 0o000400; 70 pub const NL0: tcflag_t = 0o000000; 71 pub const NL1: tcflag_t = 0o000400; 72 pub const CRDLY: tcflag_t = 0o003000; 73 pub const CR0: tcflag_t = 0o000000; 74 pub const CR1: tcflag_t = 0o001000; 75 pub const CR2: tcflag_t = 0o002000; 76 pub const CR3: tcflag_t = 0o003000; 77 pub const TABDLY: tcflag_t = 0o014000; 78 pub const TAB0: tcflag_t = 0o000000; 79 pub const TAB1: tcflag_t = 0o004000; 80 pub const TAB2: tcflag_t = 0o010000; 81 pub const TAB3: tcflag_t = 0o014000; 82 pub const XTABS: tcflag_t = 0o014000; 83 pub const BSDLY: tcflag_t = 0o020000; 84 pub const BS0: tcflag_t = 0o000000; 85 pub const BS1: tcflag_t = 0o020000; 86 pub const VTDLY: tcflag_t = 0o040000; 87 pub const VT0: tcflag_t = 0o000000; 88 pub const VT1: tcflag_t = 0o040000; 89 pub const FFDLY: tcflag_t = 0o100000; 90 pub const FF0: tcflag_t = 0o000000; 91 pub const FF1: tcflag_t = 0o100000; 92 pub const PAGEOUT: tcflag_t = 0o200000; 93 pub const WRAP: tcflag_t = 0o400000; 94 95 // c_cflag bits 96 pub const CBAUD: tcflag_t = 0o000017; 97 pub const CSIZE: tcflag_t = 0o000060; 98 pub const CS5: tcflag_t = 0o000000; 99 pub const CS6: tcflag_t = 0o000020; 100 pub const CS7: tcflag_t = 0o000040; 101 pub const CS8: tcflag_t = 0o000060; 102 pub const CSTOPB: tcflag_t = 0o000100; 103 pub const CREAD: tcflag_t = 0o000200; 104 pub const PARENB: tcflag_t = 0o000400; 105 pub const PARODD: tcflag_t = 0o001000; 106 pub const HUPCL: tcflag_t = 0o002000; 107 pub const CLOCAL: tcflag_t = 0o004000; 108 pub const RCV1EN: tcflag_t = 0o010000; 109 pub const XMT1EN: tcflag_t = 0o020000; 110 pub const LOBLK: tcflag_t = 0o040000; 111 pub const XCLUDE: tcflag_t = 0o100000; 112 pub const CRTSXOFF: tcflag_t = 0o10000000000; 113 pub const CRTSCTS: tcflag_t = 0o20000000000; 114 pub const CIBAUD: tcflag_t = 0o3600000; 115 pub const PAREXT: tcflag_t = 0o4000000; 116 pub const CBAUDEXT: tcflag_t = 0o10000000; 117 pub const CIBAUDEXT: tcflag_t = 0o20000000; 118 119 // c_lflag bits 120 pub const ISIG: tcflag_t = 0o000001; 121 pub const ICANON: tcflag_t = 0o000002; 122 pub const XCASE: tcflag_t = 0o000004; 123 pub const ECHO: tcflag_t = 0o000010; 124 pub const ECHOE: tcflag_t = 0o000020; 125 pub const ECHOK: tcflag_t = 0o000040; 126 pub const ECHONL: tcflag_t = 0o000100; 127 pub const NOFLSH: tcflag_t = 0o000200; 128 pub const TOSTOP: tcflag_t = 0o000400; 129 pub const ECHOCTL: tcflag_t = 0o001000; 130 pub const ECHOPRT: tcflag_t = 0o002000; 131 pub const ECHOKE: tcflag_t = 0o004000; 132 pub const DEFECHO: tcflag_t = 0o010000; 133 pub const FLUSHO: tcflag_t = 0o020000; 134 pub const PENDIN: tcflag_t = 0o040000; 135 pub const IEXTEN: tcflag_t = 0o100000; 136 137 // baud rates 138 pub const B0: speed_t = 0; 139 pub const B50: speed_t = 1; 140 pub const B75: speed_t = 2; 141 pub const B110: speed_t = 3; 142 pub const B134: speed_t = 4; 143 pub const B150: speed_t = 5; 144 pub const B200: speed_t = 6; 145 pub const B300: speed_t = 7; 146 pub const B600: speed_t = 8; 147 pub const B1200: speed_t = 9; 148 pub const B1800: speed_t = 10; 149 pub const B2400: speed_t = 11; 150 pub const B4800: speed_t = 12; 151 pub const B9600: speed_t = 13; 152 pub const B19200: speed_t = 14; 153 pub const B38400: speed_t = 15; 154 pub const EXTA: speed_t = B19200; 155 pub const EXTB: speed_t = B38400; 156 pub const B57600: speed_t = 16; 157 pub const B76800: speed_t = 17; 158 pub const B115200: speed_t = 18; 159 pub const B153600: speed_t = 19; 160 pub const B230400: speed_t = 20; 161 pub const B307200: speed_t = 21; 162 pub const B460800: speed_t = 22; 163 pub const B921600: speed_t = 23; 164 165 // tcflow() 166 pub const TCOOFF: c_int = 0; 167 pub const TCOON: c_int = 1; 168 pub const TCIOFF: c_int = 2; 169 pub const TCION: c_int = 3; 170 171 // tcflush() 172 pub const TCIFLUSH: c_int = 0; 173 pub const TCOFLUSH: c_int = 1; 174 pub const TCIOFLUSH: c_int = 2; 175 176 // tcsetattr() 177 pub const TCSANOW: c_int = 0x540E; 178 pub const TCSADRAIN: c_int = 0x540F; 179 pub const TCSAFLUSH: c_int = 0x5410; 180