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>>