1/*- 2 * Copyright (c) 2005 Poul-Henning Kamp <phk@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * 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: releng/10.2/sys/dev/ieee488/ugpib.h 141777 2005-02-12 23:52:44Z 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 GTL 0x01 /* Go To Local */ 95#define SDC 0x04 /* Selected Device Clear */ 96#define GET 0x08 /* Group Execute Trigger */ 97#define LAD 0x20 /* Listen address */ 98#define UNL 0x3F /* Unlisten */ 99#define TAD 0x40 /* Talk address */ 100#define UNT 0x5F /* Untalk */ 101 102#ifndef _KERNEL 103 104extern int ibcnt, iberr, ibsta; 105 106int ibask(int handle, int option, int *retval); 107int ibbna(int handle, char *bdname); 108int ibcac(int handle, int v); 109int ibclr(int handle); 110int ibcmd(int handle, void *buffer, long cnt); 111int ibcmda(int handle, void *buffer, long cnt); 112int ibconfig(int handle, int option, int value); 113int ibdev(int boardID, int pad, int sad, int tmo, int eot, int eos); 114int ibdiag(int handle, void *buffer, long cnt); 115int ibdma(int handle, int v); 116int ibeos(int handle, int eos); 117int ibeot(int handle, int eot); 118int ibevent(int handle, short *event); 119int ibfind(char *bdname); 120int ibgts(int handle, int v); 121int ibist(int handle, int v); 122int iblines(int handle, short *lines); 123int ibllo(int handle); 124int ibln(int handle, int padval, int sadval, short *listenflag); 125int ibloc(int handle); 126int ibonl(int handle, int v); 127int ibpad(int handle, int pad); 128int ibpct(int handle); 129int ibpoke(int handle, int option, int value); 130int ibppc(int handle, int v); 131int ibrd(int handle, void *buffer, long cnt); 132int ibrda(int handle, void *buffer, long cnt); 133int ibrdf(int handle, char *flname); 134int ibrdkey(int handle, void *buffer, int cnt); 135int ibrpp(int handle, char *ppr); 136int ibrsc(int handle, int v); 137int ibrsp(int handle, char *spr); 138int ibrsv(int handle, int v); 139int ibsad(int handle, int sad); 140int ibsgnl(int handle, int v); 141int ibsic(int handle); 142int ibsre(int handle, int v); 143int ibsrq(void (*func)(void)); 144int ibstop(int handle); 145int ibtmo(int handle, int tmo); 146int ibtrap(int mask, int mode); 147int ibtrg(int handle); 148int ibwait(int handle, int mask); 149int ibwrt(int handle, const void *buffer, long cnt); 150int ibwrta(int handle, const void *buffer, long cnt); 151int ibwrtf(int handle, const char *flname); 152int ibwrtkey(int handle, const void *buffer, int cnt); 153int ibxtrc(int handle, void *buffer, long cnt); 154#endif /* _KERNEL */ 155#endif /* _DEV_IEEE488_UGPIB_H_ */ 156