summaryrefslogtreecommitdiffstats
path: root/sys/dev/ieee488/ugpib.h
blob: 726a70219dd8ea410a1f795d35f69b4afd0d41b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*-
 * Copyright (c) 2005 Poul-Henning Kamp <phk@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 *
 */

#ifndef _DEV_IEEE488_UGPIB_H_
#define _DEV_IEEE488_UGPIB_H_

/* ibfoo() return values */
#define EDVR	0		/* System error				*/
#define ECIC	1		/* Not Active Controller		*/
#define ENOL	2		/* Nobody listening			*/
#define EADR	3		/* Controller not addressed		*/
#define EARG	4		/* Invalid argument			*/
#define ESAC	5		/* Not System Controller		*/
#define EABO	6		/* I/O Aborted/Time out			*/
#define ENEB	7		/* No such controller			*/
#define EOIP	10		/* Async I/O in progress		*/
#define ECAP	11		/* No such capability			*/
#define EFSO	12		/* File system error			*/
#define EBUS	14		/* Command byte xfer error		*/
#define ESTB	15		/* Serial poll status byte lost		*/
#define ESRQ	16		/* SRQ line stuck			*/
#define ETAB	20		/* Table problem			*/

/* ibsta bits */
#define ERR	(1<<15)		/* Error				*/
#define TIMO	(1<<14)		/* Timeout				*/
#define END	(1<<13)		/* EOI/EOS				*/
#define SRQI	(1<<12)		/* SRQ					*/
#define RQS	(1<<11)		/* Device requests service		*/
#define SPOLL	(1<<10)		/* Serial Poll				*/
#define EVENT	(1<<9)		/* Event occured			*/
#define CMPL	(1<<8)		/* I/O complete				*/
#define LOK	(1<<7)		/* Lockout				*/
#define REM	(1<<6)		/* Remote				*/
#define CIC	(1<<5)		/* CIC					*/
#define ATN	(1<<4)		/* ATN					*/
#define TACS	(1<<3)		/* Talker				*/
#define LACS	(1<<2)		/* Listener				*/
#define DTAS	(1<<1)		/* Device trigger status		*/
#define DCAS	(1<<0)		/* Device clear state			*/

/* Timeouts */
#define TNONE	0
#define T10us	1
#define T30us	2
#define T100us	3
#define T300us	4
#define T1ms	5
#define T3ms	6
#define T10ms	7
#define T30ms	8
#define T100ms	9
#define T300ms	10
#define T1s	11
#define T3s	12
#define T10s	13
#define T30s	14
#define T100s	15
#define T300s	16
#define T1000s	17

/* EOS bits */
#define REOS	(1 << 10)
#define XEOS	(1 << 11)
#define BIN	(1 << 12)

/* Bus commands */
#define GTL	0x01		/* Go To Local				*/
#define SDC	0x04		/* Selected Device Clear		*/
#define GET	0x08		/* Group Execute Trigger		*/
#define LAD	0x20		/* Listen address			*/
#define UNL	0x3F		/* Unlisten				*/
#define TAD	0x40		/* Talk address				*/
#define UNT	0x5F		/* Untalk				*/

#ifndef _KERNEL

extern int ibcnt, iberr, ibsta;

int ibask(int handle, int option, int *retval);
int ibbna(int handle, char *bdname);
int ibcac(int handle, int v);
int ibclr(int handle);
int ibcmd(int handle, void *buffer, long cnt);
int ibcmda(int handle, void *buffer, long cnt);
int ibconfig(int handle, int option, int value);
int ibdev(int boardID, int pad, int sad, int tmo, int eot, int eos);
int ibdiag(int handle, void *buffer, long cnt);
int ibdma(int handle, int v);
int ibeos(int handle, int eos);
int ibeot(int handle, int eot);
int ibevent(int handle, short *event);
int ibfind(char *bdname);
int ibgts(int handle, int v);
int ibist(int handle, int v);
int iblines(int handle, short *lines);
int ibllo(int handle);
int ibln(int handle, int padval, int sadval, short *listenflag);
int ibloc(int handle);
int ibonl(int handle, int v);
int ibpad(int handle, int pad);
int ibpct(int handle);
int ibpoke(int handle, int option, int value);
int ibppc(int handle, int v);
int ibrd(int handle, void *buffer, long cnt);
int ibrda(int handle, void *buffer, long cnt);
int ibrdf(int handle, char *flname);
int ibrdkey(int handle, void *buffer, int cnt);
int ibrpp(int handle, char *ppr);
int ibrsc(int handle, int v);
int ibrsp(int handle, char *spr);
int ibrsv(int handle, int v);
int ibsad(int handle, int sad);
int ibsgnl(int handle, int v);
int ibsic(int handle);
int ibsre(int handle, int v);
int ibsrq(void (*func)(void));
int ibstop(int handle);
int ibtmo(int handle, int tmo);
int ibtrap(int  mask, int mode);
int ibtrg(int handle);
int ibwait(int handle, int mask);
int ibwrt(int handle, const void *buffer, long cnt);
int ibwrta(int handle, const void *buffer, long cnt);
int ibwrtf(int handle, const char *flname);
int ibwrtkey(int handle, const void *buffer, int cnt);
int ibxtrc(int handle, void *buffer, long cnt);
#endif /* _KERNEL */
#endif /* _DEV_IEEE488_UGPIB_H_ */
OpenPOWER on IntegriCloud