1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax assocs classes.struct
4 io.serial kernel system ;
5 IN: io.serial.linux.ffi
11 TYPEDEF: uint tcflag_t
23 FUNCTION: speed_t cfgetispeed ( termios* t ) ;
24 FUNCTION: speed_t cfgetospeed ( termios* t ) ;
25 FUNCTION: int cfsetispeed ( termios* t, speed_t s ) ;
26 FUNCTION: int cfsetospeed ( termios* t, speed_t s ) ;
27 FUNCTION: int tcgetattr ( int i1, termios* t ) ;
28 FUNCTION: int tcsetattr ( int i1, int i2, termios* t ) ;
29 FUNCTION: int tcdrain ( int i1 ) ;
30 FUNCTION: int tcflow ( int i1, int i2 ) ;
31 FUNCTION: int tcflush ( int i1, int i2 ) ;
32 FUNCTION: int tcsendbreak ( int i1, int i2 ) ;
33 FUNCTION: void cfmakeraw ( termios* t ) ;
34 FUNCTION: int cfsetspeed ( termios* t, speed_t s ) ;
50 CONSTANT: IGNBRK OCT: 0000001
51 CONSTANT: BRKINT OCT: 0000002
52 CONSTANT: IGNPAR OCT: 0000004
53 CONSTANT: PARMRK OCT: 0000010
54 CONSTANT: INPCK OCT: 0000020
55 CONSTANT: ISTRIP OCT: 0000040
56 CONSTANT: INLCR OCT: 0000100
57 CONSTANT: IGNCR OCT: 0000200
58 CONSTANT: ICRNL OCT: 0000400
59 CONSTANT: IUCLC OCT: 0001000
60 CONSTANT: IXON OCT: 0002000
61 CONSTANT: IXANY OCT: 0004000
62 CONSTANT: IXOFF OCT: 0010000
63 CONSTANT: IMAXBEL OCT: 0020000
64 CONSTANT: IUTF8 OCT: 0040000
67 CONSTANT: OPOST OCT: 0000001
68 CONSTANT: OLCUC OCT: 0000002
69 CONSTANT: ONLCR OCT: 0000004
70 CONSTANT: OCRNL OCT: 0000010
71 CONSTANT: ONOCR OCT: 0000020
72 CONSTANT: ONLRET OCT: 0000040
73 CONSTANT: OFILL OCT: 0000100
74 CONSTANT: OFDEL OCT: 0000200
75 CONSTANT: NLDLY OCT: 0000400
76 CONSTANT: NL0 OCT: 0000000
77 CONSTANT: NL1 OCT: 0000400
78 CONSTANT: CRDLY OCT: 0003000
79 CONSTANT: CR0 OCT: 0000000
80 CONSTANT: CR1 OCT: 0001000
81 CONSTANT: CR2 OCT: 0002000
82 CONSTANT: CR3 OCT: 0003000
83 CONSTANT: TABDLY OCT: 0014000
84 CONSTANT: TAB0 OCT: 0000000
85 CONSTANT: TAB1 OCT: 0004000
86 CONSTANT: TAB2 OCT: 0010000
87 CONSTANT: TAB3 OCT: 0014000
88 CONSTANT: BSDLY OCT: 0020000
89 CONSTANT: BS0 OCT: 0000000
90 CONSTANT: BS1 OCT: 0020000
91 CONSTANT: FFDLY OCT: 0100000
92 CONSTANT: FF0 OCT: 0000000
93 CONSTANT: FF1 OCT: 0100000
96 CONSTANT: CSIZE OCT: 0000060
97 CONSTANT: CS5 OCT: 0000000
98 CONSTANT: CS6 OCT: 0000020
99 CONSTANT: CS7 OCT: 0000040
100 CONSTANT: CS8 OCT: 0000060
101 CONSTANT: CSTOPB OCT: 0000100
102 CONSTANT: CREAD OCT: 0000200
103 CONSTANT: PARENB OCT: 0000400
104 CONSTANT: PARODD OCT: 0001000
105 CONSTANT: HUPCL OCT: 0002000
106 CONSTANT: CLOCAL OCT: 0004000
107 CONSTANT: CIBAUD OCT: 002003600000
108 CONSTANT: CRTSCTS OCT: 020000000000
111 CONSTANT: ISIG OCT: 0000001
112 CONSTANT: ICANON OCT: 0000002
113 CONSTANT: XCASE OCT: 0000004
114 CONSTANT: ECHO OCT: 0000010
115 CONSTANT: ECHOE OCT: 0000020
116 CONSTANT: ECHOK OCT: 0000040
117 CONSTANT: ECHONL OCT: 0000100
118 CONSTANT: NOFLSH OCT: 0000200
119 CONSTANT: TOSTOP OCT: 0000400
120 CONSTANT: ECHOCTL OCT: 0001000
121 CONSTANT: ECHOPRT OCT: 0002000
122 CONSTANT: ECHOKE OCT: 0004000
123 CONSTANT: FLUSHO OCT: 0010000
124 CONSTANT: PENDIN OCT: 0040000
125 CONSTANT: IEXTEN OCT: 0100000
127 M: linux lookup-baud ( n -- n )
138 { 1200 OCT: 0000011 }
139 { 1800 OCT: 0000012 }
140 { 2400 OCT: 0000013 }
141 { 4800 OCT: 0000014 }
142 { 9600 OCT: 0000015 }
143 { 19200 OCT: 0000016 }
144 { 38400 OCT: 0000017 }
145 { 57600 OCT: 0010001 }
146 { 115200 OCT: 0010002 }
147 { 230400 OCT: 0010003 }
148 { 460800 OCT: 0010004 }
149 { 500000 OCT: 0010005 }
150 { 576000 OCT: 0010006 }
151 { 921600 OCT: 0010007 }
152 { 1000000 OCT: 0010010 }
153 { 1152000 OCT: 0010011 }
154 { 1500000 OCT: 0010012 }
155 { 2000000 OCT: 0010013 }
156 { 2500000 OCT: 0010014 }
157 { 3000000 OCT: 0010015 }
158 { 3500000 OCT: 0010016 }
159 { 4000000 OCT: 0010017 }
160 } ?at [ invalid-baud ] unless ;