]> gitweb.factorcode.org Git - factor.git/blob - extra/io/serial/windows/windows.factor
645e4939de0d3416425507932c9ce00da3837dde
[factor.git] / extra / io / serial / windows / windows.factor
1 ! Copyright (C) 2009 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: io.files.windows io.streams.duplex kernel math
4 math.bitwise windows.kernel32 accessors alien.c-types
5 windows io.files.windows fry locals continuations
6 classes.struct ;
7 IN: io.serial.windows
8
9 : <serial-stream> ( path encoding -- duplex )
10     [ open-r/w dup ] dip <encoder-duplex> ;
11
12 : get-comm-state ( duplex -- dcb )
13     in>> handle>>
14     DCB <struct> [ GetCommState win32-error=0/f ] keep ;
15
16 : set-comm-state ( duplex dcb -- )
17     [ in>> handle>> ] dip
18     SetCommState win32-error=0/f ;
19
20 :: with-comm-state ( duplex quot: ( dcb -- ) -- )
21     duplex get-comm-state :> dcb
22     dcb clone quot curry [ dcb set-comm-state ] recover ; inline