1/*
2 * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3 *
4 * This software may be freely used, copied, modified, and distributed
5 * provided that the above copyright notice is preserved in all copies of the
6 * software.
7 */
8
9/* -*-C-*-
10 *
11 * $Revision: 1.2 $
12 *     $Date: 1998/01/08 11:12:39 $
13 *
14 */
15#ifndef angsd_unixcomm_h
16#define angsd_unixcomm_h
17
18#include <errno.h>
19
20#if defined(BSD)
21#  define ERRNO_FOR_BLOCKED_IO EWOULDBLOCK
22#else
23#  define ERRNO_FOR_BLOCKED_IO EAGAIN
24#endif
25
26/*
27 *  Function: Unix_MatchValidSerialDevice
28 *   Purpose: check that the serial driver/port name is valid
29 *            and return the actual device name if it is.
30 *
31 *    Params:
32 *       Input: name    Name of device going to be used
33 *
34 *   Returns:
35 *          OK: Pointer to name of the device matched
36 *       Error or unrecognised deivce: 0
37 */
38extern const char *Unix_MatchValidSerialDevice(const char *name);
39
40/*
41 *  Function: Unix_IsSerialInUse
42 *   Purpose: check whether the serial port is in use
43 *
44 *    Params:
45 *       Input: Nothing
46 *
47 *   Returns:
48 *          OK: 0       Serial device not in use
49 *       Error: -1      Serial device in use
50 */
51extern int Unix_IsSerialInUse(void);
52
53/*
54 *  Function: Unix_OpenSerial
55 *   Purpose: open the serial port
56 *
57 *    Params:
58 *       Input: name    Name of device to open
59 *
60 *   Returns: Unix 'open' returns
61 */
62extern int Unix_OpenSerial(const char *name);
63
64/*
65 *  Function: Unix_CloseSerial
66 *   Purpose: close the serial port
67 *
68 *    Params:
69 *       Input: Nothing
70 *
71 *   Returns: Nothing
72 */
73extern void Unix_CloseSerial(void);
74
75/*
76 *  Function: Unix_ReadSerial
77 *   Purpose: reads a specified number of bytes (or less) from the serial port
78 *
79 *    Params:
80 *       Input: buf     Buffer to store read bytes
81 *              n       Maximum number of bytes to read
82 *
83 *   Returns: Unix 'read' returns
84 */
85extern int Unix_ReadSerial(unsigned char *buf, int n, bool block);
86
87/*
88 *  Function: Unix_WriteSerial
89 *   Purpose: writes a specified number of bytes (or less) to the serial port
90 *
91 *    Params:
92 *       Input: buf     Buffer to write bytes from
93 *              n       Maximum number of bytes to write
94 *
95 *   Returns: Unix 'write' returns
96 */
97extern int Unix_WriteSerial(unsigned char *buf, int n);
98
99/*
100 *  Function: Unix_ResetSerial
101 *   Purpose: resets the serial port for another operation
102 *
103 *    Params:
104 *       Input: Nothing
105 *
106 *   Returns: Nothing
107 */
108extern void Unix_ResetSerial(void);
109
110/*
111 *  Function: Unix_SetSerialBaudRate
112 *   Purpose: check that the serial driver/port name is valid
113 *
114 *    Params:
115 *       Input: baudrate    termios value for baud rate
116 *
117 *   Returns: Nothing
118 */
119extern void Unix_SetSerialBaudRate(int baudrate);
120
121/*
122 *  Function: Unix_ioctlNonBlocking
123 *   Purpose: sets the serial port to non-blocking IO
124 *
125 *    Params:
126 *       Input: Nothing
127 *
128 *   Returns: Nothing
129 */
130extern void Unix_ioctlNonBlocking(void);
131
132/*
133 *  Function: Unix_IsValidParallelDevice
134 *   Purpose: check whether the combined serial and parallel device specification
135 *            is ok, and return the ports selected
136 *
137 *    Params:
138 *       Input: portstring - is a string which specifies which serial
139 *                           and parallel ports are to be used. Can
140 *                           include s=<val> and p=<val> separated by a
141 *                           comma.
142 *
143 *   Returns:
144 *       Output: *sername  - returns the device name of the chosen serial port
145 *               *parname  - returns the device name of the chosen parallel port
146 *               If either of these is NULL on return then the match failed.
147 */
148extern void Unix_IsValidParallelDevice(
149  const char *portstring, char **sername, char **parname
150);
151
152/*
153 *  Function: Unix_IsParallelInUse
154 *   Purpose: check whether the parallel port is in use
155 *
156 *    Params:
157 *       Input: Nothing
158 *
159 *   Returns:
160 *          OK: 0       Parallel device not in use
161 *       Error: -1      Parallel device in use
162 */
163extern int Unix_IsParallelInUse(void);
164
165/*
166 *  Function: Unix_OpenParallel
167 *   Purpose: open the parallel port
168 *
169 *    Params:
170 *       Input: name    Name of device to open
171 *
172 *   Returns: Unix 'open' returns
173 */
174extern int Unix_OpenParallel(const char *name);
175
176/*
177 *  Function: Unix_CloseParallel
178 *   Purpose: close the parallel port
179 *
180 *    Params:
181 *       Input: Nothing
182 *
183 *   Returns: Nothing
184 */
185extern void Unix_CloseParallel(void);
186
187/*
188 *  Function: Unix_WriteParallel
189 *   Purpose: writes a specified number of bytes (or less) to the parallel port
190 *
191 *    Params:
192 *       Input: buf     Buffer to write bytes from
193 *              n       Maximum number of bytes to write
194 *
195 *   Returns: Unix 'write' returns
196 */
197extern unsigned int Unix_WriteParallel(unsigned char *buf, int n);
198
199/*
200 *  Function: Unix_ResetParallel
201 *   Purpose: resets the parallel port for another operation
202 *
203 *    Params:
204 *       Input: Nothing
205 *
206 *   Returns: Nothing
207 */
208extern void Unix_ResetParallel(void);
209
210#endif /* ndef angsd_unixcomm_h */
211
212/* EOF unixcomm.h */
213