POSIX termios interface for GNU Guile
Scheme Shell Perl Makefile
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
examples
scheme
tests
.gitignore
CHANGES
LICENCE
Makefile
README
RELEASE-CHECKLIST
compile
config.h.in
gen-config.h.sh
gen-gps.scm
gen-gps.sh
guile-in-here
install
install-scheme
termios-struct-has.sh
test-device
test-driver

README

POSIX termios interface for GNU Guile

To query and change settings of serial devices on POSIX systems, the termios
API is used. GNU Guile doesn't have an interface for that built in. This module
implements this interface by use of Guile's dynamic FFI.

The problem with Guile's dynamic FFI is, that if you need to make use of
preprocessor macros, typesets or platform-specific struct layouts it seems to
fall a little short.

To get this working anyway, this module does this:

  - Use ‘gen-gps.scm’ to generate ‘gen-platform-specifics.c’.

  - Use ‘gen-config.h.sh’ to generate ‘config.h’.

  - Use ‘gen-platform-specifics.c’ and ‘config.h’ to generate
    ‘scheme/termios/system.scm’.


This module was so far only tested on Debian Linux with GNU libc using GNU
Guile 2.0.9, and partially on 64-bit cygwin with Microsoft Windows 7 as the
host OS.

Requirements (excluding the test-suite):

  - Guile 2.0
  - A C compiler
  - A POSIX shell as /bin/sh

To generate, byte-compile, test and install the module, use these steps:

  % make
  % make compile
  % make test
  # make install

If you got more than one version of guile installed, you may use the
GUILE_BINARY make variable to point the build-system to the right binary:

  # make install GUILE_BINARY=/usr/local/bin/guile


Reference manual
----------------

The reference manual is located in ‘doc/’. It is written as markdown text, with
manual page, HTML and pdf targets generated by ‘pandoc’, which is thus required
in order to build the manual.

All targets can be build at once by calling the following in the top-level
directory of the project:

  % make doc

At every release of the library, pre-built versions of the reference manual are
added tho the ‘manual’ branch of guile-termios' git repository.

The project's documentation can be installed to the system by issuing:

  # make install-doc


About the test-suite...
-----------------------

The test-suite run by "make test" requires the following additional software:

  - Perl 5
  - The POSIX Perl module (this is a standard module)
  - The IO::Pty module (this one is not)
  - The scm-test-tap test framework

        https://github.com/ft/scm-test-tap

The Perl code opens a serial device, that can be used to test guile-termios
against. ‘scm-test-tap’ is a test framework that emits TAP output, so the test
suite can be ran within a TAP harness (like Perl's ‘prove’ harness).

If you do not have those dependencies installed, you can still run the old
plausibility test:

  % make plausibility

The real test suite can be run without the plausibility test:

  % make test-suite

In fact, "make test" is a shortcut to run those two, one after another.

If you need more verbose test-suite output, use either of these:

  % make test-verbose
  % make test-suite-verbose

To run a single test-file in case of an error, you can use this:

  % sh ./test-driver ./tests/baudrate.t

...with the file of your choosing in place of ‘./tests/baudrate.t’,
obviously.