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