X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibposix.so_src%2Finclude_exp%2Ftermios.h;h=38623385853032682ca61fcdaa2ccf094568ff70;hb=bc856d707899a00153bb1575f1c05867177dfe41;hp=e29ff4cf2516550111491d36254601b79e3fc6f2;hpb=d0b4559f2936f6d9f06be0f7c3c51527a480ec0d;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libposix.so_src/include_exp/termios.h b/Usermode/Libraries/libposix.so_src/include_exp/termios.h index e29ff4cf..38623385 100644 --- a/Usermode/Libraries/libposix.so_src/include_exp/termios.h +++ b/Usermode/Libraries/libposix.so_src/include_exp/termios.h @@ -12,20 +12,132 @@ typedef unsigned char cc_t; typedef unsigned long speed_t; typedef unsigned short tcflag_t; -enum { +// c_iflag +#define IGNBRK (1 << 0) +#define BRKINT (1 << 1) +#define IGNPAR (1 << 2) // Ignore parity failures +#define PARMRK (1 << 3) // Mark parity failures with FFh 00h +#define INPCK (1 << 4) // Enable input parity checks +#define ISTRIP (1 << 5) // strip 8th bit +#define INLCR (1 << 6) // Translate input newline into CR +#define IGNCR (1 << 7) // Ignore input CR +#define ICRNL (1 << 8) // Translate input CR into NL +// (Linux) IUCLC // Map upper to lower case +#define IXON (1 <<10) // Enable input XON/XOFF +#define IXANY (1 <<11) // Any character will restart input +#define IXOFF IXON +// (Linux) IMAXBEL +// (Linux) IUTF8 + +// c_oflag +#define OPOST (1 << 0) // Output processing +// (Linux) OLCUC +#define ONLCR (1 << 2) // (XSI) NL->CR +#define OCRNL (1 << 3) // CR->NL +#define ONOCR (1 << 4) // Don't output CR at column 0 +#define ONLRET (1 << 5) // Don't output CR +#define OFILL (1 << 6) // Send fill chars for a delay, instead of timing +// (Linux) OFDEL +#define NLDLY (1 << 8) // Newline delay mask (NL0/NL1) +#define NL0 (0 << 8) +#define NL1 (1 << 8) +#define NCDLY (3 << 9) // Carriage return delay mask (CR0-CR3) +#define CR0 (0 << 9) +#define CR1 (1 << 9) +#define CR2 (2 << 9) +#define CR3 (3 << 9) +#define TABDLY (3 << 11) // Horizontal tab delay mask +#define TAB0 (0 << 11) +#define TAB1 (1 << 11) +#define TAB2 (2 << 11) +#define TAB3 (3 << 11) +#define BSDLY (1 << 13) // Backspace delay +#define BS0 (0 << 13) +#define BS1 (1 << 13) +#define VTDLY (1 << 14) // Vertical tab delay +#define VT0 (0 << 14) +#define VT1 (1 << 14) +#define FFDLY (1 << 15) // Form feed delay +#define FF0 (0 << 15) +#define VFF1 (1 << 15) + +// c_cflag +#define CBAUD (037 << 0) // Baud speed +#define B0 (0 << 0) +#define B50 (1 << 0) +#define B75 (2 << 0) +#define B110 (3 << 0) +#define B134 (4 << 0) +#define B150 (5 << 0) +#define B200 (6 << 0) +#define B300 (7 << 0) +#define B600 (8 << 0) +#define B1200 (9 << 0) +#define B1800 (10 << 0) +#define B2400 (11 << 0) +#define B4800 (12 << 0) +#define B9600 (13 << 0) +#define B19200 (14 << 0) +#define B38400 (15 << 0) +#define CSIZE (3 << 5) // Character size mask +#define CS5 (0 << 5) +#define CS6 (1 << 5) +#define CS7 (2 << 5) +#define CS8 (3 << 5) +#define CSTOPB (1 << 7) // 1/2 stop bits +#define CREAD (1 << 8) // Enable receiver +#define PARENB (1 << 9) // Enable parity generation / checking +#define PARODD (1 << 10) // Odd parity +#define HUPCL (1 << 11) // Hang up on close +#define CLOCAL (1 << 12) // Ignore modem control lines +// LOBLK +// CIBAUD +// CMSPAR +// CRTSCTS + +// c_lflag +#define ISIG (1 << 0) // Generate signals for INTR, QUIT, SUSP and DSUSP +#define ICANON (1 << 1) // Input canonical mode +// XCASE +#define ECHO (1 << 3) // Echo input characters +#define ECHOE (1 << 4) // Enable ERASE and WERASE on echoed input [ICANON] +#define ECHOK (1 << 5) // Enable KILL char on echoed input [ICANON] +#define ECHONL (1 << 6) // Echo NL even if ECHO is unset [ICANON] +#define ECHOCTL (1 << 7) // (non-POSIX) If ECHO set specials are echoed as val+0x40 (BS=^H) +// ECHOPRT +#define ECHOKE (1 << 9) // (non-POSIX) KILL implimented by sequential erase [ICANON] +// DEFECHO +// FLUSHO +#define NOFLSH (1 << 11) // Disable flush of IO when generating INT, QUIT and SUSP +#define TOSTOP (1 << 12) // ? +// PENDIN +#define IEXTEN (1 << 14) + +// - Indexes for c_cc +enum +{ + VDISCARD, + VDSUSP, VEOF, VEOL, + VEOL2, VERASE, VINTR, VKILL, + VLNEXT, VMIN, VQUIT, + // VREPRINT, // (non-POSIX) VSTART, + // VSTATUS, // (non-POSIX) VSTOP, VSUSP, + // VSWITCH, // (non-POSIX) VTIME, + VWERASE, NCCS }; +#define _POSIX_VDISABLE 255 struct termios { @@ -36,5 +148,29 @@ struct termios cc_t c_cc[NCCS]; }; +extern speed_t cfgetospeed(const struct termios *termios_p); + +extern int tcgetattr(int fd, struct termios *termios_p); + +#define TCSANOW 0x01 +#define TCSADRAIN 0x02 +#define TCSAFLUSH 0x04 +extern int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); + +// ioctl() calls for terminals +enum +{ + TIOCGWINSZ, + TIOCSWINSZ +}; + +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; /* unused */ + unsigned short ws_ypixel; /* unused */ +}; + + #endif