ugpib.h revision 141737
1274016Sngie/*-
2274016Sngie * Copyright (c) 2005 Poul-Henning Kamp <phk@FreeBSD.org>
3274016Sngie * All rights reserved.
4274016Sngie *
5274016Sngie * Redistribution and use in source and binary forms, with or without
6274016Sngie * modification, are permitted provided that the following conditions
7274016Sngie * are met:
8274016Sngie * 1. Redistributions of source code must retain the above copyright
9274016Sngie *    notice, this list of conditions and the following disclaimer.
10274016Sngie * 2. Redistributions in binary form must reproduce the above copyright
11274016Sngie *    notice, this list of conditions and the following disclaimer in the
12274016Sngie *    documentation and/or other materials provided with the distribution.
13274016Sngie *
14274016Sngie * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15274016Sngie * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16274016Sngie * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17274016Sngie * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18274016Sngie * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/dev/ieee488/ugpib.h 141737 2005-02-12 15:49:50Z phk $
27 *
28 */
29
30#ifndef _DEV_IEEE488_UGPIB_H_
31#define _DEV_IEEE488_UGPIB_H_
32
33/* ibfoo() return values */
34#define EDVR	0		/* System error				*/
35#define ECIC	1		/* Not Active Controller		*/
36#define ENOL	2		/* Nobody listening			*/
37#define EADR	3		/* Controller not addressed		*/
38#define EARG	4		/* Invalid argument			*/
39#define ESAC	5		/* Not System Controller		*/
40#define EABO	6		/* I/O Aborted/Time out			*/
41#define ENEB	7		/* No such controller			*/
42#define EOIP	10		/* Async I/O in progress		*/
43#define ECAP	11		/* No such capability			*/
44#define EFSO	12		/* File system error			*/
45#define EBUS	14		/* Command byte xfer error		*/
46#define ESTB	15		/* Serial poll status byte lost		*/
47#define ESRQ	16		/* SRQ line stuck			*/
48#define ETAB	20		/* Table problem			*/
49
50/* ibsta bits */
51#define ERR	(1<<15)		/* Error				*/
52#define TIMO	(1<<14)		/* Timeout				*/
53#define END	(1<<13)		/* EOI/EOS				*/
54#define SRQI	(1<<12)		/* SRQ					*/
55#define RQS	(1<<11)		/* Device requests service		*/
56#define SPOLL	(1<<10)		/* Serial Poll				*/
57#define EVENT	(1<<9)		/* Event occured			*/
58#define CMPL	(1<<8)		/* I/O complete				*/
59#define LOK	(1<<7)		/* Lockout				*/
60#define REM	(1<<6)		/* Remote				*/
61#define CIC	(1<<5)		/* CIC					*/
62#define ATN	(1<<4)		/* ATN					*/
63#define TACS	(1<<3)		/* Talker				*/
64#define LACS	(1<<2)		/* Listener				*/
65#define DTAS	(1<<1)		/* Device trigger status		*/
66#define DCAS	(1<<0)		/* Device clear state			*/
67
68/* Timeouts */
69#define TNONE	0
70#define T10us	1
71#define T30us	2
72#define T100us	3
73#define T300us	4
74#define T1ms	5
75#define T3ms	6
76#define T10ms	7
77#define T30ms	8
78#define T100ms	9
79#define T300ms	10
80#define T1s	11
81#define T3s	12
82#define T10s	13
83#define T30s	14
84#define T100s	15
85#define T300s	16
86#define T1000s	17
87
88/* EOS bits */
89#define REOS	(1 << 10)
90#define XEOS	(1 << 11)
91#define BIN	(1 << 12)
92
93/* Bus commands */
94#define LAD	0x20		/* Listen address			*/
95#define UNL	0x3F		/* Unlisten				*/
96#define TAD	0x40		/* Talk address				*/
97#define UNT	0x5F		/* Untalk				*/
98
99#ifndef _KERNEL
100
101extern int ibcnt, iberr;
102
103int ibask(int handle, int option, int *retval);
104int ibbna(int handle, char *bdname);
105int ibcac(int handle, int v);
106int ibclr(int handle);
107int ibcmd(int handle, void *buffer, long cnt);
108int ibcmda(int handle, void *buffer, long cnt);
109int ibconfig(int handle, int option, int value);
110int ibdev(int boardID, int pad, int sad, int tmo, int eot, int eos);
111int ibdiag(int handle, void *buffer, long cnt);
112int ibdma(int handle, int v);
113int ibeos(int handle, int eos);
114int ibeot(int handle, int eot);
115int ibevent(int handle, short *event);
116int ibfind(char *bdname);
117int ibgts(int handle, int v);
118int ibist(int handle, int v);
119int iblines(int handle, short *lines);
120int ibllo(int handle);
121int ibln(int handle, int padval, int sadval, short *listenflag);
122int ibloc(int handle);
123int ibonl(int handle, int v);
124int ibpad(int handle, int v);
125int ibpct(int handle);
126int ibpoke(int handle, int option, int value);
127int ibppc(int handle, int v);
128int ibrd(int handle, void *buffer, long cnt);
129int ibrda(int handle, void *buffer, long cnt);
130int ibrdf(int handle, char *flname);
131int ibrdkey(int handle, void *buffer, int cnt);
132int ibrpp(int handle, char *ppr);
133int ibrsc(int handle, int v);
134int ibrsp(int handle, char *spr);
135int ibrsv(int handle, int v);
136int ibsad(int handle, int v);
137int ibsgnl(int handle, int v);
138int ibsic(int handle);
139int ibsre(int handle, int v);
140int ibsrq(void (*func)(void));
141int ibstop(int handle);
142int ibtmo(int handle, int tmo);
143int ibtrap(int  mask, int mode);
144int ibtrg(int handle);
145int ibwait(int handle, int mask);
146int ibwrt(int handle, const void *buffer, long cnt);
147int ibwrta(int handle, const void *buffer, long cnt);
148int ibwrtf(int handle, const char *flname);
149int ibwrtkey(int handle, const void *buffer, int cnt);
150int ibxtrc(int handle, void *buffer, long cnt);
151#endif /* _KERNEL */
152#endif /* _DEV_IEEE488_UGPIB_H_ */
153