1 #![allow(non_camel_case_types)] 2 3 use libc::{c_int,c_uchar,c_ulong}; 4 5 pub type tcflag_t = c_ulong; 6 pub type cc_t = c_uchar; 7 pub type speed_t = c_ulong; 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 c_ispeed: speed_t, 18 c_ospeed: speed_t 19 } 20 21 pub const NCCS: usize = 20; 22 23 // c_cc characters 24 pub const VEOF: usize = 0; 25 pub const VEOL: usize = 1; 26 pub const VEOL2: usize = 2; 27 pub const VERASE: usize = 3; 28 pub const VWERASE: usize = 4; 29 pub const VKILL: usize = 5; 30 pub const VREPRINT: usize = 6; 31 pub const VINTR: usize = 8; 32 pub const VQUIT: usize = 9; 33 pub const VSUSP: usize = 10; 34 pub const VDSUSP: usize = 11; 35 pub const VSTART: usize = 12; 36 pub const VSTOP: usize = 13; 37 pub const VLNEXT: usize = 14; 38 pub const VDISCARD: usize = 15; 39 pub const VMIN: usize = 16; 40 pub const VTIME: usize = 17; 41 pub const VSTATUS: usize = 18; 42 43 // c_iflag bits 44 pub const IGNBRK: tcflag_t = 0x00000001; 45 pub const BRKINT: tcflag_t = 0x00000002; 46 pub const IGNPAR: tcflag_t = 0x00000004; 47 pub const PARMRK: tcflag_t = 0x00000008; 48 pub const INPCK: tcflag_t = 0x00000010; 49 pub const ISTRIP: tcflag_t = 0x00000020; 50 pub const INLCR: tcflag_t = 0x00000040; 51 pub const IGNCR: tcflag_t = 0x00000080; 52 pub const ICRNL: tcflag_t = 0x00000100; 53 pub const IXON: tcflag_t = 0x00000200; 54 pub const IXOFF: tcflag_t = 0x00000400; 55 pub const IXANY: tcflag_t = 0x00000800; 56 pub const IMAXBEL: tcflag_t = 0x00002000; 57 pub const IUTF8: tcflag_t = 0x00004000; 58 59 // c_oflag bits 60 pub const OPOST: tcflag_t = 0x00000001; 61 pub const ONLCR: tcflag_t = 0x00000002; 62 pub const OXTABS: tcflag_t = 0x00000004; 63 pub const ONOEOT: tcflag_t = 0x00000008; 64 pub const OCRNL: tcflag_t = 0x00000010; 65 pub const ONOCR: tcflag_t = 0x00000020; 66 pub const ONLRET: tcflag_t = 0x00000040; 67 pub const OFILL: tcflag_t = 0x00000080; 68 pub const NLDLY: tcflag_t = 0x00000300; 69 pub const TABDLY: tcflag_t = 0x00000c04; 70 pub const CRDLY: tcflag_t = 0x00003000; 71 pub const FFDLY: tcflag_t = 0x00004000; 72 pub const BSDLY: tcflag_t = 0x00008000; 73 pub const VTDLY: tcflag_t = 0x00010000; 74 pub const OFDEL: tcflag_t = 0x00020000; 75 pub const NL0: tcflag_t = 0x00000000; 76 pub const NL1: tcflag_t = 0x00000100; 77 pub const NL2: tcflag_t = 0x00000200; 78 pub const NL3: tcflag_t = 0x00000300; 79 pub const TAB0: tcflag_t = 0x00000000; 80 pub const TAB1: tcflag_t = 0x00000400; 81 pub const TAB2: tcflag_t = 0x00000800; 82 pub const TAB3: tcflag_t = 0x00000004; 83 pub const CR0: tcflag_t = 0x00000000; 84 pub const CR1: tcflag_t = 0x00001000; 85 pub const CR2: tcflag_t = 0x00002000; 86 pub const CR3: tcflag_t = 0x00003000; 87 pub const FF0: tcflag_t = 0x00000000; 88 pub const FF1: tcflag_t = 0x00004000; 89 pub const BS0: tcflag_t = 0x00000000; 90 pub const BS1: tcflag_t = 0x00008000; 91 pub const VT0: tcflag_t = 0x00000000; 92 pub const VT1: tcflag_t = 0x00010000; 93 94 // c_cflag bits 95 pub const CIGNORE: tcflag_t = 0x00000001; 96 pub const CSIZE: tcflag_t = 0x00000300; 97 pub const CS5: tcflag_t = 0x00000000; 98 pub const CS6: tcflag_t = 0x00000100; 99 pub const CS7: tcflag_t = 0x00000200; 100 pub const CS8: tcflag_t = 0x00000300; 101 pub const CSTOPB: tcflag_t = 0x00000400; 102 pub const CREAD: tcflag_t = 0x00000800; 103 pub const PARENB: tcflag_t = 0x00001000; 104 pub const PARODD: tcflag_t = 0x00002000; 105 pub const HUPCL: tcflag_t = 0x00004000; 106 pub const CLOCAL: tcflag_t = 0x00008000; 107 pub const CCTS_OFLOW: tcflag_t = 0x00010000; 108 pub const CRTSCTS: tcflag_t = CCTS_OFLOW | CRTS_IFLOW; 109 pub const CRTS_IFLOW: tcflag_t = 0x00020000; 110 pub const CDTR_IFLOW: tcflag_t = 0x00040000; 111 pub const CDSR_OFLOW: tcflag_t = 0x00080000; 112 pub const CCAR_OFLOW: tcflag_t = 0x00100000; 113 pub const MDMBUF: tcflag_t = 0x00100000; 114 115 // c_lflag bits 116 pub const ECHOKE: tcflag_t = 0x00000001; 117 pub const ECHOE: tcflag_t = 0x00000002; 118 pub const ECHOK: tcflag_t = 0x00000004; 119 pub const ECHO: tcflag_t = 0x00000008; 120 pub const ECHONL: tcflag_t = 0x00000010; 121 pub const ECHOPRT: tcflag_t = 0x00000020; 122 pub const ECHOCTL: tcflag_t = 0x00000040; 123 pub const ISIG: tcflag_t = 0x00000080; 124 pub const ICANON: tcflag_t = 0x00000100; 125 pub const ALTWERASE: tcflag_t = 0x00000200; 126 pub const IEXTEN: tcflag_t = 0x00000400; 127 pub const EXTPROC: tcflag_t = 0x00000800; 128 pub const TOSTOP: tcflag_t = 0x00400000; 129 pub const FLUSHO: tcflag_t = 0x00800000; 130 pub const NOKERNINFO: tcflag_t = 0x02000000; 131 pub const PENDIN: tcflag_t = 0x20000000; 132 pub const NOFLSH: tcflag_t = 0x80000000; 133 134 // baud speeds 135 pub const B0: speed_t = 0; 136 pub const B50: speed_t = 50; 137 pub const B75: speed_t = 75; 138 pub const B110: speed_t = 110; 139 pub const B134: speed_t = 134; 140 pub const B150: speed_t = 150; 141 pub const B200: speed_t = 200; 142 pub const B300: speed_t = 300; 143 pub const B600: speed_t = 600; 144 pub const B1200: speed_t = 1200; 145 pub const B1800: speed_t = 1800; 146 pub const B2400: speed_t = 2400; 147 pub const B4800: speed_t = 4800; 148 pub const B9600: speed_t = 9600; 149 pub const B19200: speed_t = 19200; 150 pub const B38400: speed_t = 38400; 151 pub const B7200: speed_t = 7200; 152 pub const B14400: speed_t = 14400; 153 pub const B28800: speed_t = 28800; 154 pub const B57600: speed_t = 57600; 155 pub const B76800: speed_t = 76800; 156 pub const B115200: speed_t = 115200; 157 pub const B230400: speed_t = 230400; 158 pub const EXTA: speed_t = 19200; 159 pub const EXTB: speed_t = 38400; 160 161 // tcflow() 162 pub const TCOOFF: c_int = 1; 163 pub const TCOON: c_int = 2; 164 pub const TCIOFF: c_int = 3; 165 pub const TCION: c_int = 4; 166 167 // tcflush() 168 pub const TCIFLUSH: c_int = 1; 169 pub const TCOFLUSH: c_int = 2; 170 pub const TCIOFLUSH: c_int = 3; 171 172 // tcsetattr() 173 pub const TCSANOW: c_int = 0; 174 pub const TCSADRAIN: c_int = 1; 175 pub const TCSAFLUSH: c_int = 2; 176 pub const TCSASOFT: c_int = 0x10; 177