GPIB(3) BSD Library Functions Manual GPIB(3)NAME
ibclr, ibdev, ibdma, ibeos, ibeot, ibloc, ibonl, ibpad, ibrd, ibsad,
ibsic, ibtmo, ibtrg, ibwrt — GPIB library
LIBRARY
library “libgpib”
SYNOPSIS
#include <gpib.h>
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((*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);
DESCRIPTION
The ibclr library provides access to the gpib(4) kernel devices.
Variable Description
The variable ibcnt contains the number of bytes transferred in the most
recent call to ibcmd(), ibrd(), or ibwrt().
The name ibcntl is an alias for ibcnt, provided for backwards compatibil‐
ity.
The variable iberr provides an error code for the most recent library
call. The possible error codes are:
EDVR System error
ECIC Not Active Controller
ENOL Nobody listening
EADR Controller not addressed
EARG Invalid argument
ESAC Not System Controller
EABO I/O Aborted/Time out
ENEB No such controller
EOIP Async I/O in progress
ECAP No such capability
EFSO File system error
EBUS Command byte xfer error
ESTB Serial poll status byte lost
ESRQ SRQ line stuck
ETAB Table problem
The variable ibsta contains the controller status. This is an ORed sta‐
tus value, with the following individual bit names:
ERR Error
TIMO Timeout
END EOI/EOS
SRQI SRQ
RQS Device requests service
SPOLL Serial Poll
EVENT Event occured
CMPL I/O complete
LOK Lockout
REM Remote
CIC CIC
ATN ATN
TACS Talker
LACS Listener
DTAS Device trigger status
DCAS Device clear state
Function Description
The function ibdev() is used to open the GPIB device, and establish the
parameters to communicate with a particular bus device. The device is
selected by its primary address pad, a numerical value between 0 and 30,
possibly additionally by its secondary address sad, a numerical value
between 96 and 126, or 0 to not use secondary addressing. The tmo value
specifies the timeout to use when communicating with the device. This
can be any of the constants TNONE, T10us, T30us, T100us, T300us, T1ms,
T3ms, T10ms, T30ms, T100ms, T300ms, T1s, T3s, T10s, T30s, T100s, T300s,
or T1000s. The boolean parameter eot specifies whether the bus signal
EOI (end-or-identify) should be asserted when sending the last byte of a
message to the device. Finally, the eos parameter determines whether any
special character should be used to identify the end of a device message
when transferring messages on the bus. The lower 8 bits of eos are
interpreted as an end-of-string character, EOS. This character can be
ORed with the following values:
REOS When receiving a message byte on the bus that matches
the EOS character, treat it as if the EOI signal were
asserted, and stop receiving.
XEOS When transmitting a message byte on the bus that
matches the EOS character, assert the EOI bus signal
by the same time, and stop sending.
BIN If set, include all 8 bits of the EOS character in
the comparison; if unset, compare only 7 bit ASCII
values.
Passing 0 as eos will turn off any special character treatment, allowing
for a fully 8-bit transparent communications channel to the device.
The function ibfind() is meant to find the board index of a board identi‐
fied by the name bdname. This function is currently not implemented.
All remaining functions take the handle returned by calling ibdev() as
their first argument handle.
The function ibask() is used to query configuration values that have been
set with ibconfig(). This function is currently not implemented.
The function ibbna() is meant to change the access board for the given
device to a new one, named bdname. This function is currently not
implemented.
The function ibcac() is used to become the active controller on the bus,
by asserting the ATN signal line. This function is currently not
implemented.
The function ibclr() is used to transmit a Selected Device Clear command
to the device.
The function ibcmd() is used to directly write cnt GPIB command bytes
from a buffer starting at buffer to the device. This function is
currently not implemented.
The function ibcmda() does the same as ibcmd() except it operates asyn‐
chronously, so it returns to the caller immediately. This function is
currently not implemented.
The function ibconfig() is used to set certain configuration parameters.
This function is currently not implemented.
The function ibdiag() is obsolete, and not implemented.
The function ibdma() is used to enable or disable DMA transfers. Parame‐
ter v is a boolean parameter indicating DMA transfers are to be used.
Depending on the hardware and operating system configuration, DMA trans‐
fers might not be available for a particular access board.
The function ibeos() configures the end-of-string character. See ibdev()
for an explanation.
The function ibeot() configures the assertion of the EOI signal line when
transmitting the last byte of a message; see ibdev() for an explanation.
The function ibevent() is used to obtain an event from the board's event
queue. This function is currently not implemented.
The function ibgts() makes the current controller the standby controller,
by deasserting the ATN signal line. This function is currently not
implemented.
The function ibist() sets the individual status bits of the controller to
the value v. This function is currently not implemented.
The function iblines() returns the status of the control and handshake
bus lines into the area pointed to by lines. This function is currently
not implemented.
The function ibllo() is obsolete, and not implemented.
The function ibln() checks for a listener at the primary address padval
and the optional secondary address sadval. If a listener was found, the
value pointed to by listenflag will be set to a non-zero value. This
function is currently not implemented.
The function ibloc() turns the device into local mode.
The function ibonl() is used to close or reinitialize a device handle.
If parameter v is passed as zero, the handle will be closed, and cannot
be used again. If it is passed as a non-zero value, all parameters of
the handle will be returned to their defaults; this functionality is
currently unsupported.
The function ibpad() is used to change the primary address of the device
being communicated with to pad. See ibdev() for an explanation.
The function ibpct() is used to make the device associated with the han‐
dle the controller-in-charge. This function is currently not
implemented.
The function ibpoke() is obsolete, and not implemented.
The function ibppc() is used to configure the parallel poll response to
v. This function is currently not implemented.
The fucntion ibrd() is used to receive cnt bytes from the device, and
store it to the address passed as buffer.
The function ibrda() behaves similar to ibrd() except it operates asyn‐
chronously, and returns immediately to the caller. This function is
currently not implemented.
The function ibrdf() read data from the device, and appends it to the
file with the name flname. This function is currently not implemented.
The function ibrdkey() is obsolete, and not implemented.
The function ibrpp() performs a parallel poll, and stores the result at
the location pointed to by ppr. This function is currently not
implemented.
The function ibrsc() makes the board specified by the handle the system
controller if the argument v is non-zero. This function is currently not
implemented.
The function ibrsp() conducts a serial poll, and stores the result in the
byte pointed to by spr. This function is currently not implemented.
The function ibrsv() sets the serial poll response of the board to v,
possibly requesting service from the controller if the SRQ bit (0x40) is
set. This function is currently not implemented.
The function ibsad() changes the secondary address of the device being
communicated with to sad. See ibdev() for an explanation.
The function ibsgnl() is obsolete, and not implemented.
The function ibsic() asserts the Interface Clear (IFC) signal line on the
bus for at least 100 microseconds. This will make all devices attached
to the bus to unlisten and untalk. This function should only be executed
on the system controller.
The function ibsre() asserts the Remote Enable (REN) signal line on the
bus if argument v is non-zero, or deasserts it otherwise. This function
is currently not implemented.
The function ibsrq() is obsolete, and not implemented.
The function ibstop() stops or aborts any asynchronous I/O operation.
This function is currently not implemented.
The function ibtmo() reconfigures the communication timeout. See ibdev()
for an explanation.
The function ibtrap() is obsolete, and not implemented.
The function ibtrg() sends a Group Execute Trigger (GET) command to the
device.
The function ibwait() waits for a status condition as specified by mask.
If mask is given as zero, it returns immediately. This function is
currently not implemented.
The function ibwrt() is used to send cnt bytes to the device, starting at
the address pointed to by buffer.
The function ibwrta() performs the same operation as ibwrt() in an asyn‐
chronous way, returning immediately to the caller. This function is
currently not implemented.
The function ibwrtf() opens the file named by flname, and sends its con‐
tents to the device. This function is currently not implemented.
The function ibwrtkey() is obsolete, and not implemented
The function ibxtrc() is obsolete, and not implemented.
RETURN VALUES
The function ibdev() returns a handle to be used for the remaining func‐
tions. Upon failure, -1 is returned.
All other functions return the value of the variable ibsta.
DIAGNOSTICS
None.
COMPATIBILITY
The ibclr library tries to be compatible with the Linux GPIB library,
which in turn appears to be compatible with the GPIB library shipped by
National Instruments.
ERRORS
Errors in the functions above might set errno to one of these values:
[ENOENT] No such file or directory.
[EIO] Input/output error.
[ENXIO] Device not configured.
[E2BIG] Argument list too long.
[ENOMEM] Cannot allocate memory.
[EACCES] Permission denied.
[EFAULT] Bad address.
[EBUSY] Device busy.
[EINVAL] Invalid argument.
[ENFILE] Too many open files in system.
[EMFILE] Too many open files.
[EOPNOTSUPP] Operation not supported.
SEE ALSOgpib(4)HISTORY
The ibclr library was written by Poul-Henning Kamp and first appeared in
FreeBSD 5.4.
AUTHORS
This manual page was written by Jörg Wunsch.
BUGS
Currently, the library can only handle a single gpib(4) device with
instance number 0.
Many functions are currently not implemented, see above for details.
BSD February 1, 2010 BSD