summaryrefslogtreecommitdiffstats
path: root/sys/dev/ieee488/ugpib.h
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2005-02-06 15:22:23 +0000
committerphk <phk@FreeBSD.org>2005-02-06 15:22:23 +0000
commitcbedd686e72f6cc55f80b962e4199c78380b1b30 (patch)
tree99dcd1fad2091bdceddcf924c1c549f407478a56 /sys/dev/ieee488/ugpib.h
parentbd8993edc121200fd4d77aa1cb5073109d702b0d (diff)
downloadFreeBSD-src-cbedd686e72f6cc55f80b962e4199c78380b1b30.zip
FreeBSD-src-cbedd686e72f6cc55f80b962e4199c78380b1b30.tar.gz
Further elaborate the GPIB driver. We now support a minimal subset of
the ibfoo() API.
Diffstat (limited to 'sys/dev/ieee488/ugpib.h')
-rw-r--r--sys/dev/ieee488/ugpib.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/sys/dev/ieee488/ugpib.h b/sys/dev/ieee488/ugpib.h
new file mode 100644
index 0000000..77b7fcd
--- /dev/null
+++ b/sys/dev/ieee488/ugpib.h
@@ -0,0 +1,152 @@
+/*-
+ * 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 LAD 0x20 /* Listen address */
+#define UNL 0x3F /* Unlisten */
+#define TAD 0x40 /* Talk address */
+#define UNT 0x5F /* Untalk */
+
+#ifndef _KERNEL
+
+extern int ibcnt, iberr;
+
+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 v);
+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 v);
+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 v);
+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, void *buffer, long cnt);
+int ibwrta(int handle, void *buffer, long cnt);
+int ibwrtf(int handle, char *flname);
+int ibwrtkey(int handle, void *buffer, int cnt);
+int ibxtrc(int handle, void *buffer, long cnt);
+#endif /* _KERNEL */
+#endif /* _DEV_IEEE488_UGPIB_H_ */
OpenPOWER on IntegriCloud