factor/extra/io/serial/linux/ffi/ffi.factor

162 lines
4.5 KiB
Factor
Raw Normal View History

2008-08-13 16:18:50 -04:00
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.syntax assocs classes.struct
io.serial kernel system ;
IN: io.serial.linux.ffi
CONSTANT: NCCS 32
TYPEDEF: uchar cc_t
TYPEDEF: uint speed_t
TYPEDEF: uint tcflag_t
STRUCT: termios
{ iflag tcflag_t }
{ oflag tcflag_t }
{ cflag tcflag_t }
{ lflag tcflag_t }
{ line cc_t }
{ cc { cc_t NCCS } }
{ ispeed speed_t }
{ ospeed speed_t } ;
FUNCTION: speed_t cfgetispeed ( termios* t ) ;
FUNCTION: speed_t cfgetospeed ( termios* t ) ;
FUNCTION: int cfsetispeed ( termios* t, speed_t s ) ;
FUNCTION: int cfsetospeed ( termios* t, speed_t s ) ;
FUNCTION: int tcgetattr ( int i1, termios* t ) ;
FUNCTION: int tcsetattr ( int i1, int i2, termios* t ) ;
FUNCTION: int tcdrain ( int i1 ) ;
FUNCTION: int tcflow ( int i1, int i2 ) ;
FUNCTION: int tcflush ( int i1, int i2 ) ;
FUNCTION: int tcsendbreak ( int i1, int i2 ) ;
FUNCTION: void cfmakeraw ( termios* t ) ;
FUNCTION: int cfsetspeed ( termios* t, speed_t s ) ;
2008-08-13 16:18:50 -04:00
2009-02-22 18:45:04 -05:00
CONSTANT: TCSANOW 0
CONSTANT: TCSADRAIN 1
CONSTANT: TCSAFLUSH 2
2008-08-13 16:18:50 -04:00
2009-02-22 18:45:04 -05:00
CONSTANT: TCIFLUSH 0
CONSTANT: TCOFLUSH 1
CONSTANT: TCIOFLUSH 2
2008-08-13 16:18:50 -04:00
2009-02-22 18:45:04 -05:00
CONSTANT: TCOOFF 0
CONSTANT: TCOON 1
CONSTANT: TCIOFF 2
CONSTANT: TCION 3
2008-08-13 16:18:50 -04:00
! iflag
2009-02-22 18:45:04 -05:00
CONSTANT: IGNBRK OCT: 0000001
CONSTANT: BRKINT OCT: 0000002
CONSTANT: IGNPAR OCT: 0000004
CONSTANT: PARMRK OCT: 0000010
CONSTANT: INPCK OCT: 0000020
CONSTANT: ISTRIP OCT: 0000040
CONSTANT: INLCR OCT: 0000100
CONSTANT: IGNCR OCT: 0000200
CONSTANT: ICRNL OCT: 0000400
CONSTANT: IUCLC OCT: 0001000
CONSTANT: IXON OCT: 0002000
CONSTANT: IXANY OCT: 0004000
CONSTANT: IXOFF OCT: 0010000
CONSTANT: IMAXBEL OCT: 0020000
CONSTANT: IUTF8 OCT: 0040000
2008-08-13 16:18:50 -04:00
! oflag
2009-02-22 18:45:04 -05:00
CONSTANT: OPOST OCT: 0000001
CONSTANT: OLCUC OCT: 0000002
CONSTANT: ONLCR OCT: 0000004
CONSTANT: OCRNL OCT: 0000010
CONSTANT: ONOCR OCT: 0000020
CONSTANT: ONLRET OCT: 0000040
CONSTANT: OFILL OCT: 0000100
CONSTANT: OFDEL OCT: 0000200
CONSTANT: NLDLY OCT: 0000400
CONSTANT: NL0 OCT: 0000000
CONSTANT: NL1 OCT: 0000400
CONSTANT: CRDLY OCT: 0003000
CONSTANT: CR0 OCT: 0000000
CONSTANT: CR1 OCT: 0001000
CONSTANT: CR2 OCT: 0002000
CONSTANT: CR3 OCT: 0003000
CONSTANT: TABDLY OCT: 0014000
CONSTANT: TAB0 OCT: 0000000
CONSTANT: TAB1 OCT: 0004000
CONSTANT: TAB2 OCT: 0010000
CONSTANT: TAB3 OCT: 0014000
CONSTANT: BSDLY OCT: 0020000
CONSTANT: BS0 OCT: 0000000
CONSTANT: BS1 OCT: 0020000
CONSTANT: FFDLY OCT: 0100000
CONSTANT: FF0 OCT: 0000000
CONSTANT: FF1 OCT: 0100000
2008-08-13 16:18:50 -04:00
! cflags
2009-02-22 18:45:04 -05:00
CONSTANT: CSIZE OCT: 0000060
CONSTANT: CS5 OCT: 0000000
CONSTANT: CS6 OCT: 0000020
CONSTANT: CS7 OCT: 0000040
CONSTANT: CS8 OCT: 0000060
CONSTANT: CSTOPB OCT: 0000100
CONSTANT: CREAD OCT: 0000200
CONSTANT: PARENB OCT: 0000400
CONSTANT: PARODD OCT: 0001000
CONSTANT: HUPCL OCT: 0002000
CONSTANT: CLOCAL OCT: 0004000
CONSTANT: CIBAUD OCT: 002003600000
CONSTANT: CRTSCTS OCT: 020000000000
2008-08-13 16:18:50 -04:00
! lflags
2009-02-22 18:45:04 -05:00
CONSTANT: ISIG OCT: 0000001
CONSTANT: ICANON OCT: 0000002
CONSTANT: XCASE OCT: 0000004
CONSTANT: ECHO OCT: 0000010
CONSTANT: ECHOE OCT: 0000020
CONSTANT: ECHOK OCT: 0000040
CONSTANT: ECHONL OCT: 0000100
CONSTANT: NOFLSH OCT: 0000200
CONSTANT: TOSTOP OCT: 0000400
CONSTANT: ECHOCTL OCT: 0001000
CONSTANT: ECHOPRT OCT: 0002000
CONSTANT: ECHOKE OCT: 0004000
CONSTANT: FLUSHO OCT: 0010000
CONSTANT: PENDIN OCT: 0040000
CONSTANT: IEXTEN OCT: 0100000
2008-08-13 16:18:50 -04:00
M: linux lookup-baud ( n -- n )
H{
{ 0 OCT: 0000000 }
{ 50 OCT: 0000001 }
{ 75 OCT: 0000002 }
{ 110 OCT: 0000003 }
{ 134 OCT: 0000004 }
{ 150 OCT: 0000005 }
{ 200 OCT: 0000006 }
{ 300 OCT: 0000007 }
{ 600 OCT: 0000010 }
{ 1200 OCT: 0000011 }
{ 1800 OCT: 0000012 }
{ 2400 OCT: 0000013 }
{ 4800 OCT: 0000014 }
{ 9600 OCT: 0000015 }
{ 19200 OCT: 0000016 }
{ 38400 OCT: 0000017 }
2008-08-13 16:18:50 -04:00
{ 57600 OCT: 0010001 }
{ 115200 OCT: 0010002 }
{ 230400 OCT: 0010003 }
{ 460800 OCT: 0010004 }
{ 500000 OCT: 0010005 }
{ 576000 OCT: 0010006 }
{ 921600 OCT: 0010007 }
{ 1000000 OCT: 0010010 }
{ 1152000 OCT: 0010011 }
{ 1500000 OCT: 0010012 }
{ 2000000 OCT: 0010013 }
{ 2500000 OCT: 0010014 }
{ 3000000 OCT: 0010015 }
{ 3500000 OCT: 0010016 }
{ 4000000 OCT: 0010017 }
2009-02-22 18:45:04 -05:00
} ?at [ invalid-baud ] unless ;