diff --git a/configure.ac b/configure.ac index e28d343..ee4e2a4 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ if test "x$GUILD" = "x"; then fi dnl Hall auto-generated guile-module dependencies - +GUILE_MODULE_REQUIRED([termios]) dnl Installation directories for .scm and .go files. guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION" diff --git a/guix.scm b/guix.scm index fd9512d..575e981 100644 --- a/guix.scm +++ b/guix.scm @@ -23,7 +23,8 @@ ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs `(("guile" ,guile-3.0))) - (propagated-inputs `()) + (propagated-inputs + `(("guile-termios" ,guile-termios))) (synopsis "") (description "") (home-page "") diff --git a/hall.scm b/hall.scm index a8716ce..ea11c6e 100644 --- a/hall.scm +++ b/hall.scm @@ -8,7 +8,7 @@ (description "") (home-page "") (license gpl3+) - (dependencies `()) + (dependencies `(("guile-termios" (termios) ,guile-termios))) (skip ()) (files (libraries ((scheme-file "inkplate"))) (tests ((directory "tests" ((scheme-file "inkplate"))))) diff --git a/inkplate.scm b/inkplate.scm index d068455..2774293 100644 --- a/inkplate.scm +++ b/inkplate.scm @@ -1,6 +1,13 @@ (define-module (inkplate) #:use-module ((ice-9 format) #:select (format)) #:use-module ((srfi srfi-9) #:select (define-record-type)) + #:use-module ((termios system) #:select (termios-B115200)) + #:use-module ((termios with-exceptions) + #:select (make-termios-struct + tc-get-attr! + tc-set-attr + cf-make-raw! + cf-set-speed!)) #:export ( make-inkplate @@ -62,8 +69,13 @@ (define (open device-path) "Open a connection to an Inkplate on the named DEVICE-PATH." - (let ((port (open-file device-path "r+"))) - (make-inkplate port port))) + (let ((port (open-file device-path "r+")) + (termios (make-termios-struct))) + (tc-get-attr! port termios) + (cf-make-raw! termios) + (cf-set-speed! termios termios-B115200) + (tc-set-attr port termios) + (make-inkplate port port))) (define (close device) "Close a connection to an Inkplate in DEVICE."