syncing changes with iolib.serial branch, but for recent stable iolib version

Nikolay V. Razbegaev [2010-11-16 10:21]
syncing changes with iolib.serial branch, but for recent stable iolib version
Filename
conditions.lisp
ffi-termios-constants-unix.lisp
ffi-termios-functions-unix.lisp
ffi-termios-types-unix.lisp
pkgdcl.lisp
streams.lisp
wrappers.lisp
diff --git a/conditions.lisp b/conditions.lisp
index 49c4281..fdd652e 100644
--- a/conditions.lisp
+++ b/conditions.lisp
@@ -1,12 +1,12 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; common lisp wrapers for termios (3) api - conditions
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - conditions
+
+(in-package #:iolib.serial)
+
 (define-condition termios-error (isys:iolib-error)
   ()
   (:documentation "Foundation of all iolib.termios conditions"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (define-condition termios-set-failled (termios-error)
   ((request :initarg :request :reader request))
   (:report
@@ -14,25 +14,26 @@
      (format s "Failled apply ~a request on serial device" (request c))))
   (:documentation
    "Signalled when `stty' failled to apply one of the requested settings"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (define-condition termios-set-baud-rate-failled (termios-set-failled)
   ()
   (:report
    (lambda (c s)
      (format s "Failled to setup ~a termios baud rate" (request c))))
   (:documentation "Signalled when requested baud rate is unsupported"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (define-condition termios-set-flag-failled (termios-set-failled)
   ()
   (:report
    (lambda (c s)
      (format s "Failled to setup ~a termios flag" (request c))))
   (:documentation "Signalled when requested flag is unsupported"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (define-condition termios-set-control-character-failled (termios-set-failled)
   ()
   (:report
    (lambda (c s)
      (format s "Failled to setup ~a termios control character" (request c))))
   (:documentation "Signalled when requested control character is unsupported"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; EOF
+
diff --git a/ffi-termios-constants-unix.lisp b/ffi-termios-constants-unix.lisp
index 5934395..652ec27 100644
--- a/ffi-termios-constants-unix.lisp
+++ b/ffi-termios-constants-unix.lisp
@@ -1,442 +1,161 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; Grovel for termios constants.
-;; TODO: check non POSXI features for other (non linux) systems: i.e #+bsd etc.
-;; Currently non POSIX features are #+linux marked or #+(or linux bsd) marked
-;; if they requires _BSD_SOURCE
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - Grovel for termios constants.
+
+;;;; TODO: check non POSXI features for other (non linux) systems: i.e
+;;;; #+bsd etc.  Currently non POSIX features are #+linux marked or
+;;;; #+(or linux bsd) marked if they requires _BSD_SOURCE
+;;;; TODO: libfixposix migration?
+
+(in-package #:iolib.serial)
+
 (include "termios.h")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 ;; for some non posix features
 (define "_XOPEN_SOURCE")
 (define "_BSD_SOURCE")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; < clfags >
+
+;;;
 (constantenum (cflag :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   #+(or linux bsd)
-  ((:cbaud "CBAUD")
-   :documentation "Baud speed mask (4+1 bits).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:cbaud "CBAUD"))
   #+(or linux bsd)
-  ((:cbaudex "CBAUDEX")
-   :documentation "Extra baud speed mask (1 bit),included in CBAUD. ")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:csize "CSIZE")
-   :documentation "Character size mask.  Values are CS5, CS6, CS7, or CS8.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ;; < valid character sizes >
+  ((:cbaudex "CBAUDEX"))
+  ((:csize "CSIZE"))
+  ;; valid character sizes
   ((:cs5 "CS5"))
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ((:cs6 "CS6"))
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ((:cs7 "CS7"))
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ((:cs8 "CS8"))
-  ;; </ valid character sizes >
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:cstopb "CSTOPB")
-   :documentation "Set two stop bits, rather than one.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:cread "CREAD")
-   :documentation "Enable receiver. This flag is really necessary.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:parenb "PARENB")
-   :documentation
-   "Enable parity generation on output and parity checking for input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:parodd "PARODD")
-   :documentation
-   "If  set,  then parity  for  input  and  output is  odd;
-	   otherwise even parity is used.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:hupcl "HUPCL")
-   :documentation
-   "Lower modem control lines after last process closes the
-	   device (hang up).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:clocal "CLOCAL") :documentation "Ignore modem control lines.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ;; valid character sizes
+  ((:cstopb "CSTOPB"))
+  ((:cread "CREAD"))
+  ((:parenb "PARENB"))
+  ((:parodd "PARODD"))
+  ((:hupcl "HUPCL"))
+  ((:clocal "CLOCAL"))
   #-linux
-  ((:loblk "LOBLK")
-   :documentation
-   "Block  output from a  non-current shell layer.
-    For use by shl (shell layers).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:loblk "LOBLK"))
   #+(or bsd linux)
-  ((:cibaud "CIBAUD")
-   :documentation
-   "Mask for input speeds. The values for the CIBAUD bits are the same
-    as the values for the CBAUD bits,shifted left IBSHIFT bits. ")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:cibaud "CIBAUD"))
   #+(or bsd linux)
-  ((:cmspar "CMSPAR")
-   :documentation
-   "Use `stick' (mark/space) parity
-    (supported on certain serial devices):
-    if  PARODD is set, the parity bit is  always 1;
-    if PARODD is not set,then the parity bit is always 0).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:cmspar "CMSPAR"))
   #+(or bsd linux)
-  ((:crtscts "CRTSCTS")
-   :documentation "Enable RTS/CTS (hardware) flow control.")) ; </cflags>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <lflags>
+  ((:crtscts "CRTSCTS")))
+
+;;; lflags
 (constantenum (lflag :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:isig "ISIG")
-   :documentation
-   "When any of the characters INTR, QUIT, SUSP, or DSUSP
-    are received, generate the corresponding signal.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:icanon "ICANON") :documentation "Enable canonical mode.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:isig "ISIG"))
+  ((:icanon "ICANON"))
   #-linux
-  ((:xcase "XCASE")
-   :documentation
-   "If ICANON is also  set, terminal is uppercase only.
-    Input is converted to lowercase, except for characters preceded
-    by \.  On output,  uppercase characters are preceded by
-    \\ and lowercase  characters are converted to uppercase.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:echo "ECHO") :documentation "Echo input characters.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:echoe "ECHOE")
-   :documentation
-   "If ICANON is also set, the ERASE character erases the
-	   preceding input character, and WERASE erases the
-	   preceding word.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:echok "ECHOK")
-   :documentation
-   "If ICANON is also set, the KILL character erases the current line.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:echonl "ECHONL")
-   :documentation
-   "If ICANON is also set, echo the NL character
-           even if ECHO is not set.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:xcase "XCASE"))
+  ((:echo "ECHO"))
+  ((:echoe "ECHOE"))
+  ((:echok "ECHOK"))
+  ((:echonl "ECHONL"))
   #+(or linux bsd)
-  ((:echoctl "ECHOCTL")
-   :documentation
-   "If ECHO is  also  set, ASCII control signals other than TAB,
-    NL, START, and STOP are echoed as ^X, where X is the character
-    with ASCII code 0x40 greater than the control signal.
-    For  example, character  0x08  (BS) is echoed as  ^H.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:echoctl "ECHOCTL"))
   #+(or linux bsd)
-  ((:echoprt "ECHOPRT")
-   :documentation
-   "If ICANON and IECHO are also set, characters are printed
-    as they are being erased.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:echoprt "ECHOPRT"))
   #+(or linux bsd)
-  ((:echoke "ECHOKE")
-   :documentation
-   "If ICANON is also set, KILL is echoed by erasing each character
-    on the line, as  specified by ECHOE and ECHOPRT.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:echoke "ECHOKE"))
   #-linux
-  ((:defecho "DEFECHO")
-   :documentation " Echo only when a process is reading.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:defecho "DEFECHO"))
   #+bsd
-  ((:flusho "FLUSHO")
-   :documentation
-   "Output is being flushed.
-    This flag is toggled by typing the DISCARD character.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:noflsh "NOFLSH")
-   :documentation
-   "Disable  flushing  the  input  and output  queues  when
-           generating the SIGINT, SIGQUIT, and SIGSUSP signals.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:tostop "TOSTOP")
-   :documentation
-   "Send  the SIGTTOU signal to the process group of
-           a background process which tries to write to
-           its controlling terminal.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:flusho "FLUSHO"))
+  ((:noflsh "NOFLSH"))
+  ((:tostop "TOSTOP"))
   #+bsd
-  ((:pendin "PENDIN")
-   :documentation
-   "All characters in the input queue are reprinted when the
-    next character is read. (bash(1) handles typeahead this way.)")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:iexten "IEXTEN")
-   :documentation
-   "Enable implementation-defined input processing.
-    This flag, as well as ICANON must be enabled for the special
-    characters EOL2, LNEXT, REPRINT, WERASE to be interpreted,
-    and for the IUCLC flag to be effective.")) ; </lflags>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <iflags>
+  ((:pendin "PENDIN"))
+  ((:iexten "IEXTEN")))
+
+;;; iflags
 (constantenum (iflag :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ignbrk "IGNBRK") :documentation "Ignore BREAK condition on input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:brkint "BRKINT")
-   :documentation
-   "If IGNBRK is set, a BREAK is ignored.  If it is not set
-    but BRKINT  is set, then  a BREAK causes the  input and
-    output queues to be flushed, and if the terminal is the
-    controlling terminal of  a foreground process group, it
-    will  cause a  SIGINT  to be  sent  to this  foreground
-    process group.  When neither IGNBRK nor BRKINT are set,
-    a BREAK reads as a null byte ('0'), except when PARMRK
-    is set, in which case  it reads as the sequence \377 \0 \0.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ignpar "IGNPAR")
-   :documentation "Ignore framing errors and parity errors.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:parmrk "PARMRK")
-   :documentation
-   "If IGNPAR is not set, prefix a character with a parity
-    error or framing error with 377 0. If neither IGNPAR
-    nor PARMRK is set, read a character with a parity error
-    or framing error as 0.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:inpck "INPCK") :documentation "Enable input parity checking.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:istrip "ISTRIP") :documentation "Strip off eighth bit.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:inlcr "INLCR") :documentation "Translate NL to CR on input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:igncr "IGNCR") :documentation "Ignore carriage return on input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:icrnl "ICRNL")
-   :documentation
-   "Translate carriage return to newline on input
-    (unless IGNCR is set).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:ignbrk "IGNBRK"))
+  ((:brkint "BRKINT"))
+  ((:ignpar "IGNPAR"))
+  ((:parmrk "PARMRK"))
+  ((:inpck "INPCK"))
+  ((:istrip "ISTRIP"))
+  ((:inlcr "INLCR"))
+  ((:igncr "IGNCR"))
+  ((:icrnl "ICRNL"))
   #+linux
-  ((:iuclc "IUCLC")
-   :documentation "Map uppercase characters to lowercase on input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ixon "IXON")
-   :documentation "Enable XON/XOFF flow control on output.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:iuclc "IUCLC"))
+  ((:ixon "IXON"))
   ;; XSI features are #+xfi marked in sb-posix grovel file,
   ;; but (find :xsi *features*) return NIL
   ;; so i'm leaving xsi features unmarked
-  ((:ixany "IXANY")
-   :documentation
-   "Typing any character will restart stopped output.
-           (The default is to allow just the START character
-           to restart output.)")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ixoff "IXOFF")
-   :documentation "Enable XON/XOFF flow control on input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:ixany "IXANY"))
+  ((:ixoff "IXOFF"))
   #-linux
-  ((:imaxbel "IMAXBEL")
-   :documentation "Ring bell when input queue is full.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:imaxbel "IMAXBEL"))
   #+linux
-  ((:iutf8 "IUTF8")
-   :documentation
-   "Input is UTF8; this allows character-erase to be correctly performed
-    in cooked mode."))                  ; </iflags>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <oflags>
+  ((:iutf8 "IUTF8")))
+
+;;; oflags
 (constantenum (oflag :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:opost "OPOST")
-   :documentation "Enable implementation-defined output processing.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:opost "OPOST"))
   #+linux
-  ((:olcuc "OLCUC")
-   :documentation "Map lowercase characters to uppercase on output.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:onlcr "ONLCR") :documentation "Map NL to CR-NL on output.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ocrnl "OCRNL") :documentation "Map CR to NL on output.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:onocr "ONOCR") :documentation "Don't output CR at column 0.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:onlret "ONLRET") :documentation "Don't output CR.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:ofill "OFILL")
-   :documentation
-   "Send fill characters for a delay, rather than using a timed delay.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:olcuc "OLCUC"))
+  ((:onlcr "ONLCR"))
+  ((:ocrnl "OCRNL"))
+  ((:onocr "ONOCR"))
+  ((:onlret "ONLRET"))
+  ((:ofill "OFILL"))
   #-linux
-  ((:ofdel "OFDEL")
-   :documentation
-   "Fill character is ASCII DEL (0177). If unset, fill character
-    is ASCII NUL ('0').")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:ofdel "OFDEL"))
   #+(or linux bsd)
-  ((:nldly "NLDLY")
-   :documentation
-   "Newline delay mask. Values are NL0 and NL1.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:nldly "NLDLY"))
   #+(or linux bsd)
-  ((:crdly "CRDLY")
-   :documentation
-   "Carriage return delay mask. Values are CR0, CR1, CR2,or  CR3.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:crdly "CRDLY"))
   #+(or linux bsd)
-  ((:tabdly "TABDLY")
-   :documentation
-   "Horizontal tab delay mask.
-    Values are TAB0, TAB1,TAB2, TAB3 (or XTABS).
-    A value  of  TAB3, that is, XTABS, expands tabs to spaces
-    (with tab  stops every eight columns).")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:tabdly "TABDLY"))
   #+(or linux bsd)
-  ((:bsdly "BSDLY")
-   :documentation "Backspace  delay mask. Values are BS0 or BS1.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:bsdly "BSDLY"))
   #+(or linux bsd)
-  ((:vtdly "VTDLY")
-   :documentation "Vertical tab delay mask.  Values are VT0 or VT1.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vtdly "VTDLY"))
   #+(or linux bsd)
-  ((:ffdly "FFDLY")
-   :documentation "Form feed delay mask. Values are FF0 or FF1.")) ;</oflags>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <control characters>
+  ((:ffdly "FFDLY")))
+
+;;; control characters
 (constantenum (control-character :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vintr "VINTR")
-   :documentation
-   "(003, ETX, Ctrl-C, or also 0177, DEL, rubout) Interrupt character.
-    Send a SIGINT signal. Recognized when ISIG is set,
-    and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vquit "VQUIT")
-   :documentation
-   "(034, FS, Ctrl-) Quit character.  Send SIGQUIT signal.
-    Recognized  when ISIG is  set, and  then not  passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:verase "VERASE")
-   :documentation
-   "(0177, DEL, rubout,  or 010,  BS, Ctrl-H, or also #)
-           Erase    character.    This    erases    the   previous
-           not-yet-erased character,  but does not  erase past EOF
-	   or beginning-of-line.   Recognized when ICANON  is set,
-	   and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vkill "VKILL")
-   :documentation
-   "(025, NAK, Ctrl-U, or Ctrl-X, or also @) Kill character.
-    This erases the input since the last EOF or beginning-of-line.
-    Recognized when ICANON is set, and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:veof "VEOF")
-   :documentation
-   "(004, EOT, Ctrl-D) End-of-file character.
-    More precisely: this character causes the pending tty buffer
-    to be sent to the waiting user program without waiting for
-    end-of-line.  If it is the first character of the line,
-    the read(2) in the user program returns 0, which signifies
-    end-of-file.
-    Recognized  when ICANON is set, and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vmin "VMIN")
-   :documentation
-   "Minimum number of characters for non-canonical read.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:veol "VEOL")
-   :documentation
-   "(0, NUL) Additional end-of-line character.
-           Recognized when ICANON is set.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vtime "VTIME")
-   :documentation "Timeout in deciseconds for non-canonical read.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vintr "VINTR"))
+  ((:vquit "VQUIT"))
+  ((:verase "VERASE"))
+  ((:vkill "VKILL"))
+  ((:veof "VEOF"))
+  ((:vmin "VMIN"))
+  ((:veol "VEOL"))
+  ((:vtime "VTIME"))
   #+linux
-  ((:veol2 "VEOL2")
-   :documentation
-   "Yet another end-of-line character.
-    Recognized when ICANON is set.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:veol2 "VEOL2"))
   #-linux
-  ((:vswtch "VSWTCH")
-   :documentation "Switch character.  (Used by shl only.)")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vstart "VSTART")
-   :documentation
-   "(021, DC1, Ctrl-Q) Start character.
-    Restarts output stopped by the Stop character.
-    Recognized when IXON is set, and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vstop "VSTOP")
-   :documentation
-   "(023, DC3, Ctrl-S) Stop character.
-    Stop output until Start character typed.
-    Recognized  when IXON  is set, and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:vsusp "VSUSP")
-   :documentation
-   "(032, SUB, Ctrl-Z) Suspend character.
-           Send SIGTSTP signal. Recognized when ISIG is set,
-           and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vswtch "VSWTCH"))
+  ((:vstart "VSTART"))
+  ((:vstop "VSTOP"))
+  ((:vsusp "VSUSP"))
   #-linux
-  ((:vdsusp "VDSUSP")
-   :documentation
-   "031, EM, Ctrl-Y) Delayed suspend  character: send SIGTSTP signal
-    when  the  character  is  read  by  the  user  program.
-    Recognized when IEXTEN and ISIG are set, and the system
-    supports job control, and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vdsusp "VDSUSP"))
   #+linux
-  ((:vlnext "VLNEXT")
-   :documentation
-   "(026, SYN, Ctrl-V) Literal next.
-    Quotes the next  input character,  depriving it of  a possible
-    special  meaning.  Recognized when  IEXTEN is  set,
-   and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vlnext "VLNEXT"))
   #+linux
-  ((:vwerase "VWERASE")
-   :documentation
-   "(027, ETB, Ctrl-W) Word  erase.
-    Recognized when ICANON and IEXTEN are set,
-    and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vwerase "VWERASE"))
   #+linux
-  ((:vreprint "VREPRINT")
-   :documentation
-   "(022, DC2, Ctrl-R) Reprint unread characters.
-    Recognized when ICANON and IEXTEN are set,
-    and then not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vreprint "VREPRINT"))
   #-linux
-  ((:vdiscard "VDISCARD")
-   :documentation
-   "017, SI, Ctrl-O) Toggle: start/stop discarding  pending output.
-    Recognized when  IEXTEN is set, and then  not passed as input.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:vdiscard "VDISCARD"))
   #-linux
-  ((:vstatus "VSTATUS")
-   :documentation "Status request: 024, DC4, Ctrl-T).")) ;</control characters>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; < tcssetattr actions >
+  ((:vstatus "VSTATUS")))
+
+;;; tcssetattr actions
 (constantenum (tcssetattr-action :define-constants t)
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:tcsanow "TCSANOW")
-   :documentation "The change (by tcssetattr) occurs immediately.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:tcsadrain "TCSADRAIN")
-   :documentation
-   "The change occurs (by tcssetattr) after all output written to fd
-    has been  transmitted.  This function  should be used when
-    changing parameters that affect output.")
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ((:tcsaflush "TCSAFLUSH")
-   :documentation
-   "The change (by tcssetattr) occurs after all output written to the
-    object referred by fd has been transmitted, and all
-    input that has been received but not read will be
-    discarded before the change is made.")) ; </tcssetattr actions>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <baud rates >
+  ((:tcsanow "TCSANOW"))
+  ((:tcsadrain "TCSADRAIN"))
+  ((:tcsaflush "TCSAFLUSH")))
+
+;;; baud rates
 (constantenum (baud-rate :define-constants t)
-  ;; <Posix baud rates>
+  ;; Posix baud rates:
   ((:b0       "B0"))
   ((:b50      "B50"))
   ((:b75      "B75"))
@@ -455,9 +174,7 @@
   ((:b38400   "B38400"))
   ((:b57600   "B57600"))
   ((:b115200  "B115200"))
-  ;; </Posix baud rates>
-  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-  ;; <Non posix baud rates>
+  ;; Non posix baud rates:
   ((:b230400  "B230400"))
   ((:b460800  "B460800"))
   ((:b500000  "B500000"))
@@ -470,5 +187,5 @@
   ((:b2500000 "B2500000"))
   ((:b3000000 "B3000000"))
   ((:b3500000 "B3500000"))
-  ((:b4000000 "B4000000")))             ;</Non posix baud rates> </baud rates>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ((:b4000000 "B4000000")))
+;;;; EOF
diff --git a/ffi-termios-functions-unix.lisp b/ffi-termios-functions-unix.lisp
index ccc0351..5c74a53 100644
--- a/ffi-termios-functions-unix.lisp
+++ b/ffi-termios-functions-unix.lisp
@@ -1,47 +1,46 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; termios (3) api wrapers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; No errors are defined for cfget{i,o}speed, so I'm using defcfun*
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - foreign functions
+
+(in-package :iolib.serial)
+
 (defcfun* (%cfgetispeed "cfgetispeed") baud-rate
   (termios :pointer))			; const struct termios *
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defcfun* (%cfgetospeed "cfgetospeed") baud-rate
   (termios :pointer))			; const struct termios *
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%cfsetispeed "cfsetispeed") :int
   (termios :pointer)			; struct termios *
   (speed   baud-rate))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%cfsetospeed "cfsetospeed") :int
   (termios :pointer) 			; struct termios *
   (speed   baud-rate))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcdrain "tcdrain") :int
   (fd :int))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcflow "tcflow")   (:int :restart t :handle fd)
   (fd     :int)
   (action :int))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcflush "tcflush") (:int :restart t :handle fd)
   (queue-selector :int)
   (fd             :int))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcgetattr "tcgetattr") (:int :restart t :handle fd)
   (fd      :int)
   (termios :pointer)) 			; const struct termios *
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcgetsid "tcgetsid") isys:pid-t
   (fd :int))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcsendbreak "tcsendbreak") (:int :restart t :handle fd)
   (fd       :int)
   (duration :int))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defsyscall (%tcsetattr "tcsetattr") (:int :restart t :handle fd)
   (fd             :int)
   (optional-ation tcssetattr-action)
   (termios        :pointer))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; EOF
diff --git a/ffi-termios-types-unix.lisp b/ffi-termios-types-unix.lisp
index 0a5057b..691371d 100644
--- a/ffi-termios-types-unix.lisp
+++ b/ffi-termios-types-unix.lisp
@@ -1,22 +1,22 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; Grovel definitions for termios (3) api.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - groveling for struct termios
+
 (include "termios.h")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(in-package #:iolib.serial)
+
 (ctype tcflag "tcflag_t")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (ctype cc "cc_t")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (ctype termios-speed "speed_t")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (constant (nccs "NCCS"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (cstruct termios "struct termios"
 	 (iflag         "c_iflag" :type tcflag)
 	 (oflag         "c_oflag" :type tcflag)
 	 (cflag         "c_cflag" :type tcflag)
 	 (lflag         "c_lflag" :type tcflag)
 	 (control-chars "c_cc"    :type cc :count nccs))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; EOF
diff --git a/pkgdcl.lisp b/pkgdcl.lisp
index cff1fae..b51cc0a 100644
--- a/pkgdcl.lisp
+++ b/pkgdcl.lisp
@@ -1,9 +1,9 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; termios (3p) api wrapers -  package definition.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :common-lisp-user)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defpackage :iolib.termios
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - package definition.
+
+(in-package #:common-lisp-user)
+
+(defpackage #:iolib.serial
   (:nicknames #:itty)
   (:use :iolib.base :iolib.streams :cffi)
   (:import-from :iolib.syscalls :defsyscall :defcfun*)
@@ -47,5 +47,7 @@
    #:with-serial-stream
    #:with-serial-streams
    ;; List of all open serial streams. Can be used in signal handlers.
-   #:*open-serial-streams*))            ;</ defpackage>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+   #:*open-serial-streams*))
+;;;; EOF
+
+
diff --git a/streams.lisp b/streams.lisp
index ce8e802..6c1fd76 100644
--- a/streams.lisp
+++ b/streams.lisp
@@ -1,34 +1,18 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; streams for devices supported termios (3p) api
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib - streams abstraction
+
+(in-package #:iolib.serial)
+
 (defclass dual-channel-tty-gray-stream (dual-channel-gray-stream)
   ((path :reader tty-path :initarg :path :type string)
-   (read-timeout :accessor read-timeout :initarg :read-timeout)
-   (write-timeout :accessor write-timeout :initarg :write-timeout)
    (original-settings :reader original-settings :initarg :original-settings))
   (:documentation "Gray stream class for serial devices"))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Unix signals such SIGTERM etc. are not usual conditions so with-open-stream
-;; macro can't call close in order to restore original settings.
-;; On the other hand installing signal handler is not a part
-;; of the common-lip standard and not a purpose of this library.
-;; So i guess that provide a list of open serial devices streams
-;; for library users will be better solution.
-(defparameter *open-serial-streams* nil
-  "List of all open serial streams for restoring original serial devices
-   settings via signal handlers.")
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun open-serial-stream (path &key (flag (logior isys:o-rdwr isys:o-nonblock isys:o-noctty))
                         (mode isys:*default-open-mode*)
 			(external-format :default))
   "Return `dual-channel-tty-gray-stream' instances associated
-   with serial device and push in into the `*open-serial-streams*' list"
-  (when (find-if #'(lambda (x)
-                     (string= (tty-path x) path))
-                 *open-serial-streams*)
-    (error "Serial device ~A already opened!" path))
+   with serial device"
   (let ((fd (isys:open path flag mode))
         (termios (foreign-alloc 'termios)))
     (%tcgetattr fd termios)
@@ -37,10 +21,9 @@
                             :path path
                             :external-format external-format
                             :original-settings termios)))
-      (push s *open-serial-streams*)
       (trivial-garbage:finalize s (lambda () (foreign-free termios)))
       s)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 ;; Close method for dual-channel-single-fd-gray-stream in iolib.streams,
 ;; (which call %sys-close) is :around too.
 ;; No need to call cancel-finalization case another close method will do it.
@@ -49,27 +32,9 @@
   (when (fd-of stream)
     (%tcsetattr (fd-of stream) :tcsanow (original-settings stream))
     (foreign-free (original-settings stream))
-    (setf (slot-value stream 'original-settings) nil)
-    (removef *open-serial-streams* stream))
+    (setf (slot-value stream 'original-settings) nil))
   (call-next-method))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defmethod stream-read-sequence :before ((stream dual-channel-tty-gray-stream)
-                                         sequence start end &key)
-  (when (slot-boundp stream 'read-timeout)
-    (iomux:wait-until-fd-ready (fd-of stream) :input (read-timeout stream) t)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defmethod stream-write-sequence :before ((stream dual-channel-tty-gray-stream)
-                                         sequence start end &key)
-  (when (slot-boundp stream 'write-timeout)
-    (iomux:wait-until-fd-ready (fd-of stream) :output
-                               (write-timeout stream) t)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defmethod stream-write-sequence :after ((stream dual-channel-tty-gray-stream)
-                                         sequence start end
-                                         &key (finish-output t))
-  (when finish-output
-    (stream-finish-output stream)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defmacro with-serial-stream ((stream path
                                       &key (speed :b115200)
                                       (parity :n)
@@ -81,8 +46,7 @@
                                                     isys:o-nonblock
                                                     isys:o-noctty))
                                       (mode isys:*default-open-mode*)
-                                      (external-format :default)
-                                      timeout read-timeout write-timeout)
+                                      (external-format :default))
                               &body body)
   "Wrapper around `with-open-stream' with a few settings for serial device:
    - speed: baud rate. An integer (stty will look for a corresponding
@@ -109,16 +73,13 @@


    Example (if rx of /dev/ttyUSB0 connected with rx should return T):
-   (with-serial-stream (tty \"/dev/ttyUSB0\"
-                            :speed :b57600
-                            :parity :n)
-     (let* ((out \"hello\")
-            (ln (length out))
-            (in (make-string ln)))
-       (setf (itty:read-timeout tty) .1)
-       (stream-write-sequence tty out 0 ln)
-       (stream-read-sequence tty in 0 ln)
-       (string= in out)))
+   (itty:with-serial-stream (tty \"/dev/ttyUSB0\"
+                                 :speed :b38400)
+	   (let ((str \"test\"))
+	     (write-line str tty)
+	     (finish-output tty)
+	     (sleep .1)
+	     (string= (read-line tty) str)))
   "
   `(with-open-stream
        (,stream (open-serial-stream ,path
@@ -150,15 +111,8 @@
            ;; hardware flow control
            #+(or bsd linux),@(when hardware-flow-control '(:crtscts t))
            ,@(when software-flow-control '(:ixon t :ixoff t)))
-     ,(when timeout
-            `(setf (read-timeout ,stream) ,timeout)
-            `(setf (read-timeout ,stream) ,timeout))
-     ,(when read-timeout
-            `(setf (read-timeout ,stream) ,read-timeout))
-     ,(when write-timeout
-            `(setf (write-timeout ,stream) ,write-timeout))
      ,@body))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defmacro with-serial-streams (binds &body body)
   "Multiple `with-serial-streams` variant"
   (if binds
@@ -166,4 +120,5 @@
          (with-serial-streams ,(cdr binds)
            ,@body))
       `(progn ,@body)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; EOF
+
diff --git a/wrappers.lisp b/wrappers.lisp
index 68cc40a..8fdf13b 100644
--- a/wrappers.lisp
+++ b/wrappers.lisp
@@ -1,9 +1,9 @@
-;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
-;; common lisp wrapers for termios (3) api
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(in-package :iolib.termios)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; <Termios options manipulation routines>
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;; Termios (3p) api wrappers for iolib
+
+(in-package #:iolib.serial)
+
+;;; Termios options manipulation routines
 (defmacro membercase (form &rest clauses)
   "(membercase 'a
 	    ('(b c e) 1)
@@ -16,7 +16,7 @@
                              (body (rest x)))
                          `((member ,form ,lst) ,@body)))
                    clauses)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defmacro enumcase (form &rest clauses)
   "(enumcase :b115200
 		   (baud-rates 1)
@@ -30,7 +30,7 @@
                                      `((foreign-enum-keyword-list ',enum)
                                        ,@body)))
                                clauses)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun which-termios-keyword (keyword)
   (enumcase keyword
    (iflag 'iflag)
@@ -39,16 +39,16 @@
    (cflag 'cflag)
    (control-character 'control-character)
    (baud-rate 'baud-rate)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun termios-flag-p (keyword)
   (member (which-termios-keyword keyword) '(iflag oflag cflag lflag)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun termios-control-character-p (keyword)
   (eql 'control-character (which-termios-keyword keyword)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun termios-baud-rate-p (keyword)
   (eql 'baud-rate (which-termios-keyword keyword)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun setup-termios-flag (termios flag &optional setp)
   "Reset `flag' in corresponding `termios' field, or set in, if `setp' is true."
   (let ((type (which-termios-keyword flag)))
@@ -59,7 +59,7 @@
             (funcall (if setp #'logior #'logandc2)
                      (foreign-slot-value termios 'termios type)
                      (foreign-enum-value type flag)))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun setup-termios-control-character (termios cc value)
   "Setup corresponding control character value.
    Value can be `control-character' keyword or integer."
@@ -72,7 +72,7 @@
         (if (integerp value)
             value
             (foreign-enum-value 'control-character value))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun make-raw-termios (termios)
   "Same effect as cfmakeraw()"
   (dolist (flag
@@ -82,7 +82,7 @@
               :csize :parenb))				                 ;cflag
     (setup-termios-flag termios flag))
   (setup-termios-flag termios :cs8 t))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun make-cooked-termios (termios)
   "Effect is opposite to `make-raw-termios'"
   (dolist (flag
@@ -92,7 +92,7 @@
               :csize :parenb))				                 ;cflag
     (setup-termios-flag termios flag t))
   #|(set-termios-option termios 'cs8 t)|#)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun make-evenp-termios (termios)
   "Enable parenb and cs7; disable parodd"
   (setup-termios-flag termios :parenb t)
@@ -100,7 +100,7 @@
   (setup-termios-flag termios :cstopb)
   (setup-termios-flag termios :csize)
   (setup-termios-flag termios :cs7 t))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun make-oddp-termios (termios)
   "Enable parenb, cs7, and parodd"
   (setup-termios-flag termios :parenb t)
@@ -108,18 +108,16 @@
   (setup-termios-flag termios :cstopb)
   (setup-termios-flag termios :csize)
   (setup-termios-flag termios :cs7 t))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun make-8n1-termios (termios)
   "Disable parenb, and set cs8."
   (setup-termios-flag termios :parenb)
   (setup-termios-flag termios :cstopb)
   (setup-termios-flag termios :csize)
   (setup-termios-flag termios :cs8 t))
-;; </ Termios options manipulation routines >
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; I guess that bits manipulation stuff is not a lisp way,
-;; and using a kind of `stty (1p)' will be more lisp kind
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; I guess that bits manipulation stuff is not a lisp way,
+;;; and using a kind of `stty (1p)' will be more lisp kind
 (defun stty (serial &rest options)
   "Impliment stty (1) in lisp way.
    `serial` can be stream or fd.
@@ -224,4 +222,5 @@
             (unless (and (eql baud ispeed) (eql baud ospeed))
               (error 'termios-set-baud-rate-failled :request baud))))
         (%stty set test fd opts-w/o-baud)))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; EOF
+
ViewGit