1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2017/08/30 Bernard The first version 9*10465441SEvalZero */ 10*10465441SEvalZero #ifndef TERMIOS_H__ 11*10465441SEvalZero #define TERMIOS_H__ 12*10465441SEvalZero 13*10465441SEvalZero #include <rtthread.h> 14*10465441SEvalZero 15*10465441SEvalZero #ifdef __cplusplus 16*10465441SEvalZero extern "C" { 17*10465441SEvalZero #endif 18*10465441SEvalZero 19*10465441SEvalZero typedef unsigned char cc_t; 20*10465441SEvalZero typedef unsigned int speed_t; 21*10465441SEvalZero typedef unsigned int tcflag_t; 22*10465441SEvalZero 23*10465441SEvalZero #define NCCS 32 24*10465441SEvalZero 25*10465441SEvalZero struct termios { 26*10465441SEvalZero tcflag_t c_iflag; 27*10465441SEvalZero tcflag_t c_oflag; 28*10465441SEvalZero tcflag_t c_cflag; 29*10465441SEvalZero tcflag_t c_lflag; 30*10465441SEvalZero cc_t c_line; 31*10465441SEvalZero cc_t c_cc[NCCS]; 32*10465441SEvalZero speed_t __c_ispeed; 33*10465441SEvalZero speed_t __c_ospeed; 34*10465441SEvalZero }; 35*10465441SEvalZero 36*10465441SEvalZero #define VINTR 0 37*10465441SEvalZero #define VQUIT 1 38*10465441SEvalZero #define VERASE 2 39*10465441SEvalZero #define VKILL 3 40*10465441SEvalZero #define VEOF 4 41*10465441SEvalZero #define VTIME 5 42*10465441SEvalZero #define VMIN 6 43*10465441SEvalZero #define VSWTC 7 44*10465441SEvalZero #define VSTART 8 45*10465441SEvalZero #define VSTOP 9 46*10465441SEvalZero #define VSUSP 10 47*10465441SEvalZero #define VEOL 11 48*10465441SEvalZero #define VREPRINT 12 49*10465441SEvalZero #define VDISCARD 13 50*10465441SEvalZero #define VWERASE 14 51*10465441SEvalZero #define VLNEXT 15 52*10465441SEvalZero #define VEOL2 16 53*10465441SEvalZero 54*10465441SEvalZero #define IGNBRK 0000001 55*10465441SEvalZero #define BRKINT 0000002 56*10465441SEvalZero #define IGNPAR 0000004 57*10465441SEvalZero #define PARMRK 0000010 58*10465441SEvalZero #define INPCK 0000020 59*10465441SEvalZero #define ISTRIP 0000040 60*10465441SEvalZero #define INLCR 0000100 61*10465441SEvalZero #define IGNCR 0000200 62*10465441SEvalZero #define ICRNL 0000400 63*10465441SEvalZero #define IUCLC 0001000 64*10465441SEvalZero #define IXON 0002000 65*10465441SEvalZero #define IXANY 0004000 66*10465441SEvalZero #define IXOFF 0010000 67*10465441SEvalZero #define IMAXBEL 0020000 68*10465441SEvalZero #define IUTF8 0040000 69*10465441SEvalZero 70*10465441SEvalZero #define OPOST 0000001 71*10465441SEvalZero #define OLCUC 0000002 72*10465441SEvalZero #define ONLCR 0000004 73*10465441SEvalZero #define OCRNL 0000010 74*10465441SEvalZero #define ONOCR 0000020 75*10465441SEvalZero #define ONLRET 0000040 76*10465441SEvalZero #define OFILL 0000100 77*10465441SEvalZero #define OFDEL 0000200 78*10465441SEvalZero #define NLDLY 0000400 79*10465441SEvalZero #define NL0 0000000 80*10465441SEvalZero #define NL1 0000400 81*10465441SEvalZero #define CRDLY 0003000 82*10465441SEvalZero #define CR0 0000000 83*10465441SEvalZero #define CR1 0001000 84*10465441SEvalZero #define CR2 0002000 85*10465441SEvalZero #define CR3 0003000 86*10465441SEvalZero #define TABDLY 0014000 87*10465441SEvalZero #define TAB0 0000000 88*10465441SEvalZero #define TAB1 0004000 89*10465441SEvalZero #define TAB2 0010000 90*10465441SEvalZero #define TAB3 0014000 91*10465441SEvalZero #define BSDLY 0020000 92*10465441SEvalZero #define BS0 0000000 93*10465441SEvalZero #define BS1 0020000 94*10465441SEvalZero #define FFDLY 0100000 95*10465441SEvalZero #define FF0 0000000 96*10465441SEvalZero #define FF1 0100000 97*10465441SEvalZero 98*10465441SEvalZero #define VTDLY 0040000 99*10465441SEvalZero #define VT0 0000000 100*10465441SEvalZero #define VT1 0040000 101*10465441SEvalZero 102*10465441SEvalZero #define B0 0000000 103*10465441SEvalZero #define B50 0000001 104*10465441SEvalZero #define B75 0000002 105*10465441SEvalZero #define B110 0000003 106*10465441SEvalZero #define B134 0000004 107*10465441SEvalZero #define B150 0000005 108*10465441SEvalZero #define B200 0000006 109*10465441SEvalZero #define B300 0000007 110*10465441SEvalZero #define B600 0000010 111*10465441SEvalZero #define B1200 0000011 112*10465441SEvalZero #define B1800 0000012 113*10465441SEvalZero #define B2400 0000013 114*10465441SEvalZero #define B4800 0000014 115*10465441SEvalZero #define B9600 0000015 116*10465441SEvalZero #define B19200 0000016 117*10465441SEvalZero #define B38400 0000017 118*10465441SEvalZero 119*10465441SEvalZero #define B57600 0010001 120*10465441SEvalZero #define B115200 0010002 121*10465441SEvalZero #define B230400 0010003 122*10465441SEvalZero #define B460800 0010004 123*10465441SEvalZero #define B500000 0010005 124*10465441SEvalZero #define B576000 0010006 125*10465441SEvalZero #define B921600 0010007 126*10465441SEvalZero #define B1000000 0010010 127*10465441SEvalZero #define B1152000 0010011 128*10465441SEvalZero #define B1500000 0010012 129*10465441SEvalZero #define B2000000 0010013 130*10465441SEvalZero #define B2500000 0010014 131*10465441SEvalZero #define B3000000 0010015 132*10465441SEvalZero #define B3500000 0010016 133*10465441SEvalZero #define B4000000 0010017 134*10465441SEvalZero 135*10465441SEvalZero #define CSIZE 0000060 136*10465441SEvalZero #define CS5 0000000 137*10465441SEvalZero #define CS6 0000020 138*10465441SEvalZero #define CS7 0000040 139*10465441SEvalZero #define CS8 0000060 140*10465441SEvalZero #define CSTOPB 0000100 141*10465441SEvalZero #define CREAD 0000200 142*10465441SEvalZero #define PARENB 0000400 143*10465441SEvalZero #define PARODD 0001000 144*10465441SEvalZero #define HUPCL 0002000 145*10465441SEvalZero #define CLOCAL 0004000 146*10465441SEvalZero 147*10465441SEvalZero #define ISIG 0000001 148*10465441SEvalZero #define ICANON 0000002 149*10465441SEvalZero #define ECHO 0000010 150*10465441SEvalZero #define ECHOE 0000020 151*10465441SEvalZero #define ECHOK 0000040 152*10465441SEvalZero #define ECHONL 0000100 153*10465441SEvalZero #define NOFLSH 0000200 154*10465441SEvalZero #define TOSTOP 0000400 155*10465441SEvalZero #define IEXTEN 0100000 156*10465441SEvalZero 157*10465441SEvalZero #define TCOOFF 0 158*10465441SEvalZero #define TCOON 1 159*10465441SEvalZero #define TCIOFF 2 160*10465441SEvalZero #define TCION 3 161*10465441SEvalZero 162*10465441SEvalZero #define TCIFLUSH 0 163*10465441SEvalZero #define TCOFLUSH 1 164*10465441SEvalZero #define TCIOFLUSH 2 165*10465441SEvalZero 166*10465441SEvalZero #define TCSANOW 0 167*10465441SEvalZero #define TCSADRAIN 1 168*10465441SEvalZero #define TCSAFLUSH 2 169*10465441SEvalZero 170*10465441SEvalZero #define EXTA 0000016 171*10465441SEvalZero #define EXTB 0000017 172*10465441SEvalZero #define CBAUD 0010017 173*10465441SEvalZero #define CBAUDEX 0010000 174*10465441SEvalZero #define CIBAUD 002003600000 175*10465441SEvalZero #define CMSPAR 010000000000 176*10465441SEvalZero #define CRTSCTS 020000000000 177*10465441SEvalZero 178*10465441SEvalZero #define XCASE 0000004 179*10465441SEvalZero #define ECHOCTL 0001000 180*10465441SEvalZero #define ECHOPRT 0002000 181*10465441SEvalZero #define ECHOKE 0004000 182*10465441SEvalZero #define FLUSHO 0010000 183*10465441SEvalZero #define PENDIN 0040000 184*10465441SEvalZero #define EXTPROC 0200000 185*10465441SEvalZero 186*10465441SEvalZero #define XTABS 0014000 187*10465441SEvalZero 188*10465441SEvalZero speed_t cfgetospeed (const struct termios *); 189*10465441SEvalZero speed_t cfgetispeed (const struct termios *); 190*10465441SEvalZero int cfsetospeed (struct termios *, speed_t); 191*10465441SEvalZero int cfsetispeed (struct termios *, speed_t); 192*10465441SEvalZero 193*10465441SEvalZero int tcgetattr (int, struct termios *); 194*10465441SEvalZero int tcsetattr (int, int, const struct termios *); 195*10465441SEvalZero 196*10465441SEvalZero int tcsendbreak (int, int); 197*10465441SEvalZero int tcdrain (int); 198*10465441SEvalZero int tcflush (int, int); 199*10465441SEvalZero int tcflow (int, int); 200*10465441SEvalZero 201*10465441SEvalZero pid_t tcgetsid (int); 202*10465441SEvalZero 203*10465441SEvalZero #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 204*10465441SEvalZero void cfmakeraw(struct termios *); 205*10465441SEvalZero int cfsetspeed(struct termios *, speed_t); 206*10465441SEvalZero #endif 207*10465441SEvalZero 208*10465441SEvalZero #ifdef __cplusplus 209*10465441SEvalZero } 210*10465441SEvalZero #endif 211*10465441SEvalZero 212*10465441SEvalZero #endif 213