From 8762d1c5933d2da14b84f843caccea7638b6dac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= <bjourne@gmail.com> Date: Tue, 6 Oct 2015 14:00:19 +0200 Subject: [PATCH] io.serial.linux: some useful extra termios constants --- extra/io/serial/linux/ffi/ffi.factor | 22 +++++++++++++++++++++- extra/io/serial/linux/linux.factor | 8 ++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/extra/io/serial/linux/ffi/ffi.factor b/extra/io/serial/linux/ffi/ffi.factor index 585aac8f5d..295ee310ea 100644 --- a/extra/io/serial/linux/ffi/ffi.factor +++ b/extra/io/serial/linux/ffi/ffi.factor @@ -33,6 +33,7 @@ FUNCTION: int tcsendbreak ( int i1, int i2 ) FUNCTION: void cfmakeraw ( termios* t ) FUNCTION: int cfsetspeed ( termios* t, speed_t s ) +! See /usr/include/bits/termios.h CONSTANT: TCSANOW 0 CONSTANT: TCSADRAIN 1 CONSTANT: TCSAFLUSH 2 @@ -110,7 +111,7 @@ CONSTANT: CRTSCTS 0o020000000000 ! lflags CONSTANT: ISIG 0o0000001 CONSTANT: ICANON 0o0000002 -CONSTANT: XCASE 0o0000004 +CONSTANT: XCASE 0o0000004 CONSTANT: ECHO 0o0000010 CONSTANT: ECHOE 0o0000020 CONSTANT: ECHOK 0o0000040 @@ -124,6 +125,25 @@ CONSTANT: FLUSHO 0o0010000 CONSTANT: PENDIN 0o0040000 CONSTANT: IEXTEN 0o0100000 +! c_cc characters +CONSTANT: VINTR 0 +CONSTANT: VQUIT 1 +CONSTANT: VERASE 2 +CONSTANT: VKILL 3 +CONSTANT: VEOF 4 +CONSTANT: VTIME 5 +CONSTANT: VMIN 6 +CONSTANT: VSWTC 7 +CONSTANT: VSTART 8 +CONSTANT: VSTOP 9 +CONSTANT: VSUSP 10 +CONSTANT: VEOL 11 +CONSTANT: VREPRINT 12 +CONSTANT: VDISCARD 13 +CONSTANT: VWERASE 14 +CONSTANT: VLNEXT 15 +CONSTANT: VEOL2 16 + M: linux lookup-baud ( n -- n ) H{ { 0 0o0000000 } diff --git a/extra/io/serial/linux/linux.factor b/extra/io/serial/linux/linux.factor index 6da3e721c4..aa060a970e 100644 --- a/extra/io/serial/linux/linux.factor +++ b/extra/io/serial/linux/linux.factor @@ -22,11 +22,11 @@ IN: io.serial.linux : serial-fd ( serial -- fd ) stream>> in>> handle>> fd>> ; +: get-fd-termios ( fd -- serial ) + termios <struct> [ tcgetattr io-error ] keep ; + : set-termios ( serial -- ) - [ - serial-fd - termios <struct> [ tcgetattr io-error ] keep - ] keep termios<< ; + [ serial-fd get-fd-termios ] keep termios<< ; : configure-termios ( serial -- ) dup termios>>