summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libgpib/Makefile19
-rw-r--r--lib/libgpib/gpib.3738
2 files changed, 757 insertions, 0 deletions
diff --git a/lib/libgpib/Makefile b/lib/libgpib/Makefile
index caf6bcf..80e890bd 100644
--- a/lib/libgpib/Makefile
+++ b/lib/libgpib/Makefile
@@ -6,4 +6,23 @@ INCS= gpib.h
INCSDIR= ${INCLUDEDIR}/gpib
SRCS= ibfoo.c
+MAN= gpib.3
+
+# MLINKS are only provided for functions that are actually
+# implemented; update this if missing pieces have been filled in.
+MLINKS+= gpib.3 ibclr.3
+MLINKS+= gpib.3 ibdev.3
+MLINKS+= gpib.3 ibdma.3
+MLINKS+= gpib.3 ibeos.3
+MLINKS+= gpib.3 ibeot.3
+MLINKS+= gpib.3 ibloc.3
+MLINKS+= gpib.3 ibonl.3
+MLINKS+= gpib.3 ibpad.3
+MLINKS+= gpib.3 ibrd.3
+MLINKS+= gpib.3 ibsad.3
+MLINKS+= gpib.3 ibsic.3
+MLINKS+= gpib.3 ibtmo.3
+MLINKS+= gpib.3 ibtrg.3
+MLINKS+= gpib.3 ibwrt.3
+
.include <bsd.lib.mk>
diff --git a/lib/libgpib/gpib.3 b/lib/libgpib/gpib.3
new file mode 100644
index 0000000..a57d3a4
--- /dev/null
+++ b/lib/libgpib/gpib.3
@@ -0,0 +1,738 @@
+.\" Copyright (c) 2010, Joerg Wunsch
+.\" 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$
+.\"
+.Dd February 1, 2010
+.Dt GPIB 3
+.Os
+.Sh NAME
+.\" .Nm ibask ,
+.\" .Nm ibbna ,
+.\" .Nm ibcac ,
+.Nm ibclr ,
+.\" .Nm ibcmd ,
+.\" .Nm ibcmda ,
+.\" .Nm ibconfig ,
+.Nm ibdev ,
+.\" .Nm ibdiag ,
+.Nm ibdma ,
+.Nm ibeos ,
+.Nm ibeot ,
+.\" .Nm ibevent ,
+.\" .Nm ibfind ,
+.\" .Nm ibgts ,
+.\" .Nm ibist ,
+.\" .Nm iblines ,
+.\" .Nm ibllo ,
+.\" .Nm ibln ,
+.Nm ibloc ,
+.Nm ibonl ,
+.Nm ibpad ,
+.\" .Nm ibpct ,
+.\" .Nm ibpoke ,
+.\" .Nm ibppc ,
+.Nm ibrd ,
+.\" .Nm ibrda ,
+.\" .Nm ibrdf ,
+.\" .Nm ibrdkey ,
+.\" .Nm ibrpp ,
+.\" .Nm ibrsc ,
+.\" .Nm ibrsp ,
+.\" .Nm ibrsv ,
+.Nm ibsad ,
+.\" .Nm ibsgnl ,
+.Nm ibsic ,
+.\" .Nm ibsre ,
+.\" .Nm ibsrq ,
+.\" .Nm ibstop ,
+.Nm ibtmo ,
+.\" .Nm ibtrap ,
+.Nm ibtrg ,
+.\" .Nm ibwait ,
+.Nm ibwrt
+.\" .Nm ibwrta ,
+.\" .Nm ibwrtf ,
+.\" .Nm ibwrtkey ,
+.\" .Nm ibxtrc
+.Nd "GPIB library"
+.Sh LIBRARY
+.Lb libgpib
+.Sh SYNOPSIS
+.In gpib.h
+.Pp
+.Dv extern int ibcnt ,
+.Dv iberr ,
+.Dv ibsta ;
+.Pp
+.Ft int
+.Fn ibask "int handle" "int option" "int *retval"
+.Ft int
+.Fn ibbna "int handle" "char *bdname"
+.Ft int
+.Fn ibcac "int handle" "int v"
+.Ft int
+.Fn ibclr "int handle"
+.Ft int
+.Fn ibcmd "int handle" "void *buffer" "long cnt"
+.Ft int
+.Fn ibcmda "int handle" "void *buffer" "long cnt"
+.Ft int
+.Fn ibconfig "int handle" "int option" "int value"
+.Ft int
+.Fn ibdev "int boardID" "int pad" "int sad" "int tmo" "int eot" "int eos"
+.Ft int
+.Fn ibdiag "int handle" "void *buffer" "long cnt"
+.Ft int
+.Fn ibdma "int handle" "int v"
+.Ft int
+.Fn ibeos "int handle" "int eos"
+.Ft int
+.Fn ibeot "int handle" "int eot"
+.Ft int
+.Fn ibevent "int handle" "short *event"
+.Ft int
+.Fn ibfind "char *bdname"
+.Ft int
+.Fn ibgts "int handle" "int v"
+.Ft int
+.Fn ibist "int handle" "int v"
+.Ft int
+.Fn iblines "int handle" "short *lines"
+.Ft int
+.Fn ibllo "int handle"
+.Ft int
+.Fn ibln "int handle" "int padval" "int sadval" "short *listenflag"
+.Ft int
+.Fn ibloc "int handle"
+.Ft int
+.Fn ibonl "int handle" "int v"
+.Ft int
+.Fn ibpad "int handle" "int pad"
+.Ft int
+.Fn ibpct "int handle"
+.Ft int
+.Fn ibpoke "int handle" "int option" "int value"
+.Ft int
+.Fn ibppc "int handle" "int v"
+.Ft int
+.Fn ibrd "int handle" "void *buffer" "long cnt"
+.Ft int
+.Fn ibrda "int handle" "void *buffer" "long cnt"
+.Ft int
+.Fn ibrdf "int handle" "char *flname"
+.Ft int
+.Fn ibrdkey "int handle" "void *buffer" "int cnt"
+.Ft int
+.Fn ibrpp "int handle" "char *ppr"
+.Ft int
+.Fn ibrsc "int handle" "int v"
+.Ft int
+.Fn ibrsp "int handle" "char *spr"
+.Ft int
+.Fn ibrsv "int handle" "int v"
+.Ft int
+.Fn ibsad "int handle" "int sad"
+.Ft int
+.Fn ibsgnl "int handle" "int v"
+.Ft int
+.Fn ibsic "int handle"
+.Ft int
+.Fn ibsre "int handle" "int v"
+.Ft int
+.Fn ibsrq "(*func) void)"
+.Ft int
+.Fn ibstop "int handle"
+.Ft int
+.Fn ibtmo "int handle" "int tmo"
+.Ft int
+.Fn ibtrap "int mask" "int mode"
+.Ft int
+.Fn ibtrg "int handle"
+.Ft int
+.Fn ibwait "int handle" "int mask"
+.Ft int
+.Fn ibwrt "int handle" "const void *buffer" "long cnt"
+.Ft int
+.Fn ibwrta "int handle" "const void *buffer" "long cnt"
+.Ft int
+.Fn ibwrtf "int handle" "const char *flname"
+.Ft int
+.Fn ibwrtkey "int handle" "const void *buffer" "int cnt"
+.Ft int
+.Fn ibxtrc "int handle" "void *buffer" "long cnt"
+.Sh DESCRIPTION
+The
+.Nm
+library provides access to the
+.Xr gpib 4
+kernel devices.
+.Ss Variable Description
+The variable
+.Dv ibcnt
+contains the number of bytes transferred in the most recent call to
+.Fn ibcmd ,
+.Fn ibrd ,
+or
+.Fn ibwrt .
+.Pp
+The name
+.Dv ibcntl
+is an alias for
+.Dv ibcnt ,
+provided for backwards compatibility.
+.Pp
+The variable
+.Dv iberr
+provides an error code for the most recent library call.
+The possible error codes are:
+.Bl -tag -offset indent -compact
+.It EDVR
+System error
+.It ECIC
+Not Active Controller
+.It ENOL
+Nobody listening
+.It EADR
+Controller not addressed
+.It EARG
+Invalid argument
+.It ESAC
+Not System Controller
+.It EABO
+I/O Aborted/Time out
+.It ENEB
+No such controller
+.It EOIP
+Async I/O in progress
+.It ECAP
+No such capability
+.It EFSO
+File system error
+.It EBUS
+Command byte xfer error
+.It ESTB
+Serial poll status byte lost
+.It ESRQ
+SRQ line stuck
+.It ETAB
+Table problem
+.El
+.Pp
+The variable
+.Dv ibsta
+contains the controller status.
+This is an ORed status value, with the following individual bit names:
+.Bl -tag -offset indent -compact
+.It ERR
+Error
+.It TIMO
+Timeout
+.It END
+EOI/EOS
+.It SRQI
+SRQ
+.It RQS
+Device requests service
+.It SPOLL
+Serial Poll
+.It EVENT
+Event occured
+.It CMPL
+I/O complete
+.It LOK
+Lockout
+.It REM
+Remote
+.It CIC
+CIC
+.It ATN
+ATN
+.It TACS
+Talker
+.It LACS
+Listener
+.It DTAS
+Device trigger status
+.It DCAS
+Device clear state
+.El
+.Ss Function Description
+.Pp
+The function
+.Fn 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
+.Fa pad ,
+a numerical value between 0 and 30, possibly additionally by its
+secondary address
+.Fa sad ,
+a numerical value between 96 and 126, or 0 to not use secondary
+addressing.
+The
+.Fa tmo
+value specifies the timeout to use when communicating with the device.
+This can be any of the constants
+.Dv TNONE ,
+.Dv T10us ,
+.Dv T30us ,
+.Dv T100us ,
+.Dv T300us ,
+.Dv T1ms ,
+.Dv T3ms ,
+.Dv T10ms ,
+.Dv T30ms ,
+.Dv T100ms ,
+.Dv T300ms ,
+.Dv T1s ,
+.Dv T3s ,
+.Dv T10s ,
+.Dv T30s ,
+.Dv T100s ,
+.Dv T300s ,
+or
+.Dv T1000s .
+The boolean parameter
+.Fa eot
+specifies whether the bus signal
+.Li EOI
+(end-or-identify) should be asserted when sending the last byte of a
+message to the device.
+Finally, the
+.Fa 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
+.Fa eos
+are interpreted as an end-of-string character,
+.Li EOS .
+This character can be ORed with the following values:
+.Bl -tag -compact -offset indent
+.It Dv REOS
+When receiving a message byte on the bus that matches the
+.Li EOS
+character, treat it as if the
+.Li EOI
+signal were asserted, and stop receiving.
+.It Dv XEOS
+When transmitting a message byte on the bus that matches the
+.Li EOS
+character, assert the
+.Li EOI
+bus signal by the same time, and stop sending.
+.It Dv BIN
+If set, include all 8 bits of the
+.Li EOS
+character in the comparison; if unset, compare only 7 bit ASCII
+values.
+.El
+Passing 0 as
+.Fa eos
+will turn off any special character treatment, allowing for a fully
+8-bit transparent communications channel to the device.
+.Pp
+The function
+.Fn ibfind
+is meant to find the
+.Em board index
+of a board identified by the name
+.Fa bdname .
+.Em This function is currently not implemented.
+.Pp
+All remaining functions take the handle returned by calling
+.Fn ibdev
+as their first argument
+.Fa handle .
+.Pp
+The function
+.Fn ibask
+is used to query configuration values that have been set with
+.Fn ibconfig .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibbna
+is meant to change the access board for the given device to
+a new one, named
+.Fa bdname .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibcac
+is used to become the active controller on the bus, by asserting the
+.Li ATN
+signal line.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibclr
+is used to transmit a
+.Em Selected Device Clear
+command to the device.
+.Pp
+The function
+.Fn ibcmd
+is used to directly write
+.Fa cnt
+GPIB command bytes from a buffer starting at
+.Fa buffer
+to the device.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibcmda
+does the same as
+.Fn ibcmd
+except it operates asynchronously, so it returns to the caller
+immediately.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibconfig
+is used to set certain configuration parameters.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibdiag
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibdma
+is used to enable or disable DMA transfers.
+Parameter
+.Fa v
+is a boolean parameter indicating DMA transfers are to be used.
+Depending on the hardware and operating system configuration, DMA
+transfers might not be available for a particular access board.
+.Pp
+The function
+.Fn ibeos
+configures the end-of-string character.
+See
+.Fn ibdev
+for an explanation.
+.Pp
+The function
+.Fn ibeot
+configures the assertion of the
+.Li EOI
+signal line when transmitting the last byte of a message; see
+.Fn ibdev
+for an explanation.
+.Pp
+The function
+.Fn ibevent
+is used to obtain an event from the board's event queue.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibgts
+makes the current controller the standby controller, by deasserting
+the
+.Li ATN
+signal line.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibist
+sets the individual status bits of the controller to the value
+.Fa v .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn iblines
+returns the status of the control and handshake bus lines into the
+area pointed to by
+.Fa lines .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibllo
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibln
+checks for a listener at the primary address
+.Fa padval
+and the optional secondary address
+.Fa sadval .
+If a listener was found, the value pointed to by
+.Fa listenflag
+will be set to a non-zero value.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibloc
+turns the device into local mode.
+.Pp
+The function
+.Fn ibonl
+is used to close or reinitialize a device handle.
+If parameter
+.Fa 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;
+.Em this functionality is currently unsupported.
+.Pp
+The function
+.Fn ibpad
+is used to change the primary address of the device being communicated
+with to
+.Fa pad .
+See
+.Fn ibdev
+for an explanation.
+.Pp
+The function
+.Fn ibpct
+is used to make the device associated with the handle the
+controller-in-charge.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibpoke
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibppc
+is used to configure the parallel poll response to
+.Fa v .
+.Em This function is currently not implemented.
+.Pp
+The fucntion
+.Fn ibrd
+is used to receive
+.Fa cnt
+bytes from the device, and store it to the address passed as
+.Fa buffer .
+.Pp
+The function
+.Fn ibrda
+behaves similar to
+.Fn ibrd
+except it operates asynchronously, and returns immediately to the
+caller.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibrdf
+read data from the device, and appends it to the file with the name
+.Fa flname .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibrdkey
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibrpp
+performs a parallel poll, and stores the result at the location
+pointed to by
+.Fa ppr .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibrsc
+makes the board specified by the handle the
+.Em system controller
+if the argument
+.Fa v
+is non-zero.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibrsp
+conducts a serial poll, and stores the result in the byte pointed
+to by
+.Fa spr .
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibrsv
+sets the serial poll response of the board to
+.Fa v ,
+possibly requesting service from the controller if the SRQ bit (0x40)
+is set.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibsad
+changes the secondary address of the device being communicated with to
+.Fa sad .
+See
+.Fn ibdev
+for an explanation.
+.Pp
+The function
+.Fn ibsgnl
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibsic
+asserts the
+.Em 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.
+.Pp
+The function
+.Fn ibsre
+asserts the
+.Em Remote Enable (REN)
+signal line on the bus if argument
+.Fa v
+is non-zero, or deasserts it otherwise.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibsrq
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibstop
+stops or aborts any asynchronous I/O operation.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibtmo
+reconfigures the communication timeout.
+See
+.Fn ibdev
+for an explanation.
+.Pp
+The function
+.Fn ibtrap
+is obsolete, and not implemented.
+.Pp
+The function
+.Fn ibtrg
+sends a
+.Em Group Execute Trigger (GET)
+command to the device.
+.Pp
+The function
+.Fn ibwait
+waits for a status condition as specified by
+.Fa mask .
+If
+.Fa mask
+is given as zero, it returns immediately.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibwrt
+is used to send
+.Fa cnt
+bytes to the device, starting at the address pointed to by
+.Fa buffer .
+.Pp
+The function
+.Fn ibwrta
+performs the same operation as
+.Fn ibwrt
+in an asynchronous way, returning immediately to the caller.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibwrtf
+opens the file named by
+.Fa flname ,
+and sends its contents to the device.
+.Em This function is currently not implemented.
+.Pp
+The function
+.Fn ibwrtkey
+is obsolete, and not implemented
+.Pp
+The function
+.Fn ibxtrc
+is obsolete, and not implemented.
+.Sh RETURN VALUES
+The function
+.Fn ibdev
+returns a handle to be used for the remaining functions.
+Upon failure, -1 is returned.
+.Pp
+All other functions return the value of the variable
+.Dv ibsta .
+.Sh DIAGNOSTICS
+None.
+.Sh COMPATIBILITY
+The
+.Nm
+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.
+.Sh ERRORS
+Errors in the functions above might set
+.Dv errno
+to one of these values:
+.Bl -tag -width Er
+.It Bq Er ENOENT
+No such file or directory.
+.It Bq Er EIO
+Input/output error.
+.It Bq Er ENXIO
+Device not configured.
+.It Bq Er E2BIG
+Argument list too long.
+.It Bq Er ENOMEM
+Cannot allocate memory.
+.It Bq Er EACCES
+Permission denied.
+.It Bq Er EFAULT
+Bad address.
+.It Bq Er EBUSY
+Device busy.
+.It Bq Er EINVAL
+Invalid argument.
+.It Bq Er ENFILE
+Too many open files in system.
+.It Bq Er EMFILE
+Too many open files.
+.It Bq Er EOPNOTSUPP
+Operation not supported.
+.El
+.Sh SEE ALSO
+.Xr gpib 4
+.Sh HISTORY
+The
+.Nm
+library was written by
+.An Poul-Henning Kamp
+and first appeared in
+.Fx 5.4 .
+.Sh AUTHORS
+This manual page was written by
+.An J\(:org Wunsch .
+.Sh BUGS
+Currently, the library can only handle a single
+.Xr gpib 4
+device with instance number 0.
+.Pp
+Many functions are currently not implemented, see above for details.
OpenPOWER on IntegriCloud