Moved from base/man. Man pages are now installed.
This commit is contained in:
766
src/drv/ansi/drvEpvxi.3
Normal file
766
src/drv/ansi/drvEpvxi.3
Normal file
@@ -0,0 +1,766 @@
|
||||
.TH epvxiMsgLib 1 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH VERSION @(#)drvEpvxi.nr 1.9 8/13/93
|
||||
.SH NAME
|
||||
epvxiMsgLib.c - the VXI message based device interface library
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
|
||||
epvxiCmd - deliver a command to a message based device
|
||||
epvxiQuery - fetch a response from a message based device
|
||||
epvxiCmdQuery - send a command and fetch a response
|
||||
epvxiRead - read a string of bytes from a device
|
||||
epvxiWrite - write a string of bytes to a device
|
||||
epvxiSetTimeout - change the message based transfer timeout
|
||||
epvxiSetTraceEnable - turn trace mode on or off
|
||||
|
||||
int epvxiCmd (la, command)
|
||||
int epvxiQuery (la, presponse)
|
||||
int epvxiCmdQuery (la, command, presponse)
|
||||
int epvxiRead (la, pbuffer, count, pactual_count, option)
|
||||
int epvxiWrite (la, pbuffer, pcount, pactual_count, option)
|
||||
int epvxiSetTimeout (la, timeout)
|
||||
int epvxiSetTraceEnable(la, enable)
|
||||
|
||||
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This library provides a vendor independent interface to VXI message
|
||||
based devices. Device drivers which use this library may optionally
|
||||
open devices accessed by this library using epvxiOpen() prior to use.
|
||||
Opening a device prevents other drivers from using it.
|
||||
.SH RETURNS
|
||||
.nf
|
||||
less than zero- operation failed
|
||||
greater than zero- operation successful
|
||||
|
||||
#define VXI_SUCCESS 0 /* successful completion */
|
||||
#define VXI_NO_DEVICE (-1) /* device does not exist */
|
||||
#define VXI_NOT_SLOT0 (-2) /* not a slot zero device */
|
||||
#define VXI_UKN_DEVICE (-3) /* device not supported */
|
||||
#define VXI_BAD_TRIGGER (-4) /* no such trigger */
|
||||
#define VXI_BAD_TRIG_IO (-5) /* no such trigger io */
|
||||
#define VXI_DEVICE_OPEN (-6) /* device already open */
|
||||
#define VXI_NOT_OWNER (-7) /* dev in use by another drv */
|
||||
#define VXI_NO_MEMORY (-8) /* failed to allocate memory */
|
||||
#define VXI_NOT_OPEN (-9) /* device not open */
|
||||
#define VXI_NOT_MSG_DEVICE (-10) /* must be a message based dev */
|
||||
#define VXI_MSG_DEVICE_TMO (-11) /* message based dev timed out */
|
||||
#define VXI_MSG_DEVICE_FAILURE (-12) /* message based dev failed */
|
||||
#define VXI_BAD_LA (-13) /* logical addr out of range */
|
||||
#define VXI_MULTIPLE_QUERIES (-14) /* serial protocol error */
|
||||
#define VXI_UNSUPPORTED_CMD (-15) /* serial protocol error */
|
||||
#define VXI_DIR_VIOLATION (-16) /* serial protocol error */
|
||||
#define VXI_DOR_VIOLATION (-17) /* serial protocol error */
|
||||
#define VXI_RR_VIOLATION (-18) /* serial protocol error */
|
||||
#define VXI_WR_VIOLATION (-19) /* serial protocol error */
|
||||
#define VXI_ERR_FETCH_FAIL (-20) /* ukn serial protocol error */
|
||||
#define VXI_SELF_TEST_FAILED (-21) /* self test failed */
|
||||
|
||||
.SH INCLUDES
|
||||
epvxiLib.h
|
||||
.fi
|
||||
|
||||
|
||||
.TH epvxiCmd 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiCmd - deliver a command to a message based device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiCmd (la, command)
|
||||
unsigned la; /* logical address */
|
||||
unsigned long command; /* command */
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Delivers a command to a message based device.
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
.TH epvxiQuery 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiQuery - fetch a response from a message based device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiQuery (la, presponse)
|
||||
unsigned la; /* logical address */
|
||||
unsigned long *presponse; /* response pointer */
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Fetch a response from a message based device.
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the returns from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
.TH epvxiCmdQuery 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiCmdQuery - send a command and fetch a response from a message based device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiCmdQuery (la, command, presponse)
|
||||
unsigned la; /* logical address */
|
||||
unsigned long command; /* command */
|
||||
unsigned long *presponse; /* response pointer */
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Send a command and fetch a response from a message based device.
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
.TH epvxiRead 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiRead - read a string of bytes from a device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiRead (
|
||||
unsigned la, /* logical address */
|
||||
char *pbuffer, /* pointer to supplied buffer */
|
||||
unsigned long count, /* number of bytes to read */
|
||||
unsigned long *pactual_count, /* number of bytes read */
|
||||
unsigned long option /* read options */
|
||||
)
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Read a string of bytes from a message based device using the
|
||||
byte transfer protocol. Copy bytes into the supplied buffer
|
||||
until the end of string terminator is received from the device
|
||||
or the end of the buffer is reached as determined by the supplied
|
||||
count. Returns the number of bytes read in *pactual_count.
|
||||
The options argument is a mask with each bit potentially
|
||||
representing a different option. If you need to specify more
|
||||
than one option then you must bit or together the option
|
||||
constants which apply. Currently, no read options are supported.
|
||||
The option argument should be set to epvxiReadOptNone.
|
||||
|
||||
.nf
|
||||
Option Bit Mask Purpose
|
||||
--------------- -------
|
||||
epvxiReadOptNon no options
|
||||
.fi
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
|
||||
.TH epvxiWrite 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiWrite - write a string of bytes to a device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiWrite (
|
||||
unsigned la, /* logical address */
|
||||
char *pbuffer, /* pointer to supplied buffer */
|
||||
unsigned long count, /* number of bytes to write */
|
||||
unsigned long *pactual_count, /* number of bytes written */
|
||||
unsigned long option /* write options */
|
||||
)
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Write a string of bytes to a message based device using the
|
||||
byte transfer protocol. Copy count bytes from the supplied buffer
|
||||
to the device. Returns the number of bytes written in *pactual_count.
|
||||
The options argument is a mask with each bit potentially
|
||||
representing a different option. If you need to specify more
|
||||
than one option then you must bit or together the option
|
||||
constants which apply. Or in the constant epvxiWriteOptPartialMsg
|
||||
if the string sent is part of a larger message and it is
|
||||
not the last segment of the larger message.
|
||||
|
||||
.nf
|
||||
Option Bit Mask Purpose
|
||||
--------------- -------
|
||||
epvxiWriteOptNone no options
|
||||
epvxiWriteOptPartialMsg message continues after this transfer
|
||||
.fi
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for an description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
|
||||
.TH epvxiSetTimeout 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiSetTimeout - change the message based transfer timeout
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiSetTimeout (la, timeout)
|
||||
unsigned la; /* logical address */
|
||||
unsigned long timeout; /* milli-seconds prior to timeout */
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Set the delay prior to timeout for each portion of a message based
|
||||
VXI transfer. The default timeout is 10 seconds.
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
|
||||
.TH epvxiSetTraceEnable 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiSetTraceEnable - set trace mode on or off
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiSetTraceEnable(la, enable)
|
||||
unsigned la; /* logical address */
|
||||
int enable; /* T=trace on, F=trace off */
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Set trace mode on or off. If "enable" is true then trace mode is enabled.
|
||||
If "enable" is false then trace mode is turned off. Trace mode is enable
|
||||
for each VXI message based device independently.
|
||||
|
||||
.SH RETURNS
|
||||
See epvxiMsgLib(1) for a description of the return codes from this library.
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1), epvxiLib(1)
|
||||
|
||||
|
||||
|
||||
.TH epvxiLib 1 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiLib.c - the VXI driver support library
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
|
||||
epvxiLookupLA - find all devices matching a pattern
|
||||
epvxiUniqueDriverID - return a non zero unique identification for a VXI driver
|
||||
epvxiOpen - open a VXI device
|
||||
epvxiClose - close a VXI device
|
||||
epvxiPConfig - MACRO which returns a pointer to the drivers private structure
|
||||
epvxiFetchPConfig - similar to epvxiPConfig but with status
|
||||
epvxiRouteTriggerECL - route an ECL trigger to/from the front panel
|
||||
epvxiRouteTriggerTTL - route an TTL trigger to/from the front panel
|
||||
epvxiResman - perform VXI resource management and setup the MXI bus
|
||||
epvxiDeviceList - list which drivers own which devices
|
||||
epvxiCrateList - list all slot zero devices
|
||||
epvxiExtenderList - list all extender devices and there windows
|
||||
epvxiIOReport - list all VXI hardware in the system
|
||||
|
||||
|
||||
int epvxiLookupLA(pmatch_structure, pcallback, pargument)
|
||||
int epvxiUniqueDriverID()
|
||||
int epvxiOpen(la, driverID, structure_size, pioReportFunction)
|
||||
int epvxiClose(la, driverID)
|
||||
(<structure declaration> *) epvxiPConfig(la, driverID, <structure declaration>)
|
||||
int epvxiFetchPConfig(la, driverID, pConfig)
|
||||
int epvxiRouteTriggerECL (la, trigger, io)
|
||||
int epvxiRouteTriggerTTL(la, trigger, io)
|
||||
int epvxiResman()
|
||||
int epvxiDeviceList()
|
||||
int epvxiCrateList()
|
||||
int epvxiExtenderList()
|
||||
int epvxiIOReport(level)
|
||||
.fi
|
||||
|
||||
This is the structure used to specify search patterns for epvxiLookupLA().
|
||||
Set a bit in the flags member for each item that is to be a
|
||||
constraint on the search. All other items are ignored during
|
||||
the search. The call back routine will be called for all devices
|
||||
which exactly match all items specified in the flags field
|
||||
|
||||
.nf
|
||||
#define VXI_DSP_make (1<<0)
|
||||
#define VXI_DSP_model (1<<1)
|
||||
#define VXI_DSP_class (1<<2)
|
||||
#define VXI_DSP_slot (1<<3)
|
||||
#define VXI_DSP_slot_zero_la (1<<4)
|
||||
#define VXI_DSP_commander_la (1<<5)
|
||||
#define VXI_DSP_extender_la (1<<6) /* id crates that have one */
|
||||
|
||||
typedef struct {
|
||||
long flags; /* one bit enabling each field */
|
||||
unsigned short make; /* manufacture identification */
|
||||
unsigned short model; /* model code for the device */
|
||||
unsigned short class; /* VXI device class */
|
||||
unsigned char slot; /* slot where the device resides */
|
||||
unsigned char slot_zero_la; /* logical address of slot 0 device */
|
||||
unsigned char commander_la /* logical address of commander */
|
||||
unsigned char extender_la /* logical address of bus repeater */
|
||||
}epvxiDeviceSearchPattern;
|
||||
.fi
|
||||
|
||||
.SH DESCRIPTION
|
||||
.nf
|
||||
Low level support needed if you are writing a VXI driver:
|
||||
* Determine the logical address of all devices in a particular slot
|
||||
* Determine the logical address of all devices of a particular make or model
|
||||
* Prevent two drivers from accessing the same card
|
||||
* Prevent a driver from accessing a nonexistent card
|
||||
* Return a pointer to the driver's private variables given a logical address
|
||||
* Device independent front panel trigger routing on the slot zero device
|
||||
.fi
|
||||
|
||||
The message based device interface library epvxiMsgLib(1) is
|
||||
an example of a VXI driver which utilizes this core VXI driver support.
|
||||
|
||||
.SH INCLUDES
|
||||
epvxiLib.h
|
||||
|
||||
.SH RETURNS
|
||||
.nf
|
||||
less than zero- operation failed
|
||||
greater than zero- operation successful
|
||||
|
||||
#define VXI_SUCCESS 0 /* successful completion */
|
||||
#define VXI_NO_DEVICE (-1) /* device does not exist */
|
||||
#define VXI_NOT_SLOT0 (-2) /* not a slot zero device */
|
||||
#define VXI_UKN_DEVICE (-3) /* device not supported */
|
||||
#define VXI_BAD_TRIGGER (-4) /* no such trigger */
|
||||
#define VXI_BAD_TRIG_IO (-5) /* no such trigger io */
|
||||
#define VXI_DEVICE_OPEN (-6) /* device already open */
|
||||
#define VXI_NOT_OWNER (-7) /* dev in use by another drv */
|
||||
#define VXI_NO_MEMORY (-8) /* failed to allocate memory */
|
||||
#define VXI_NOT_OPEN (-9) /* device not open */
|
||||
#define VXI_NOT_MSG_DEVICE (-10) /* must be a message based dev */
|
||||
#define VXI_MSG_DEVICE_TMO (-11) /* message based dev timed out */
|
||||
#define VXI_MSG_DEVICE_FAILURE (-12) /* message based dev failed */
|
||||
#define VXI_BAD_LA (-13) /* logical addr out of range */
|
||||
#define VXI_MULTIPLE_QUERIES (-14) /* serial protocol error */
|
||||
#define VXI_UNSUPPORTED_CMD (-15) /* serial protocol error */
|
||||
#define VXI_DIR_VIOLATION (-16) /* serial protocol error */
|
||||
#define VXI_DOR_VIOLATION (-17) /* serial protocol error */
|
||||
#define VXI_RR_VIOLATION (-18) /* serial protocol error */
|
||||
#define VXI_WR_VIOLATION (-19) /* serial protocol error */
|
||||
#define VXI_ERR_FETCH_FAIL (-20) /* ukn serial protocol error */
|
||||
#define VXI_SELF_TEST_FAILED (-21) /* self test failed */
|
||||
#define VXI_TIMEOUT_TO_LARGE (-22) /* supplied timeout to long */
|
||||
#define VXI_PROTOCOL_ERROR (-23) /* protocol error */
|
||||
|
||||
|
||||
|
||||
.fi
|
||||
.SH SEE ALSO
|
||||
epvxiMsgLib(1)
|
||||
|
||||
.TH epvxiLookupLA 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiLookupLA - find all of the devices matching a search pattern
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiLookupLA(pmatch_structure, pcallback, pargument)
|
||||
epvxiDeviceSearchPattern *pmatch_structure;
|
||||
void (*pcallback)();
|
||||
void *pargument;
|
||||
|
||||
/*
|
||||
* your call back
|
||||
*/
|
||||
void callback(la, pargument)
|
||||
unsigned la;
|
||||
void *pargument;
|
||||
{
|
||||
}
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
Find all devices in the system matching the search pattern and call
|
||||
the specified call back for each of them. The search pattern is specified
|
||||
by filling fields in the structure epvxiDeviceSearchPattern and
|
||||
setting the flags field of the same structure to match. For example:
|
||||
|
||||
.nf
|
||||
epvxiDeviceSearchPattern dsp;
|
||||
dsp.make = VXI_MAKE_HP;
|
||||
dsp.model = 0xffc;
|
||||
dsp.flags = VXI_DSP_make | VXI_DSP_model;
|
||||
epvxiLookupLA(&dsp, pcallback, pargument);
|
||||
.fi
|
||||
|
||||
A list of these constants can be found in epvxiLib.h and
|
||||
device make codes can be found in epvxi.h
|
||||
|
||||
This is the structure used to specify search patterns for epvxiLookupLA().
|
||||
Set a bit in the flags member for each item that is to be a
|
||||
constraint on the search. All other items are ignored during
|
||||
the search. The call back routine will be called for all devices
|
||||
which exactly match all items specified in the flags field
|
||||
|
||||
.nf
|
||||
#define VXI_DSP_make (1<<0)
|
||||
#define VXI_DSP_model (1<<1)
|
||||
#define VXI_DSP_class (1<<2)
|
||||
#define VXI_DSP_slot (1<<3)
|
||||
#define VXI_DSP_slot_zero_la (1<<4)
|
||||
#define VXI_DSP_commander_la (1<<5)
|
||||
|
||||
typedef struct {
|
||||
long flags; /* one bit enabling each field */
|
||||
unsigned short make; /* manufacture identification */
|
||||
unsigned short model; /* model code for the device */
|
||||
unsigned short class; /* VXI device class */
|
||||
unsigned char slot; /* slot where the device resides */
|
||||
unsigned char slot_zero_la; /* logical address of slot 0 device */
|
||||
unsigned char commander_la /* logical address of commander */
|
||||
}epvxiDeviceSearchPattern;
|
||||
.fi
|
||||
|
||||
.SH RETURNS
|
||||
Returns a non zero unique constant to be used as a driver identification.
|
||||
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
.TH epvxiUniqueDriverID 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiUniqueDriverID - return a non zero unique identification for a VXI driver
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiUniqueDriverID ()
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
Should be called once only
|
||||
by each type of VXI driver to uniquely identify itself. The routines
|
||||
in epvxiDrvLib.c use this constant to prevent a VXI device from being
|
||||
accessed by the wrong driver.
|
||||
|
||||
.SH RETURNS
|
||||
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
.TH epvxiOpen 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiOpen - open a VXI device for a VXI driver
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiOpen (la, epvxiDriverID, structureSize, pio_report_func)
|
||||
unsigned la;
|
||||
int epvxiDriverID;
|
||||
unsigned long structureSize;
|
||||
void (*pio_report_func)();
|
||||
|
||||
void pio_report_func(la, level)
|
||||
unsigned la;
|
||||
int level;
|
||||
{
|
||||
}
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
Records this driver as the owner of the device at the specified logical
|
||||
address la and verifies that the device has passed it's self test.
|
||||
Allocates memory of size structureSize and saves a
|
||||
pointer to this memory with the logical address for future use by the
|
||||
driver with identification epvxiDriverID for its private configuration.
|
||||
Installs call back routine pio_report_func as an io report function to
|
||||
be called each time the user requests the status
|
||||
of VXI devices. This routine is called with the logical address
|
||||
and an integer specifying the detail level of the report
|
||||
as the first and second arguments respectively.
|
||||
The macro epvxiFetchPConfig returns a pointer to this block if the
|
||||
specified device has been opened by the specified driver.
|
||||
|
||||
.SH RETURNS
|
||||
|
||||
.SH SEE ALSO
|
||||
epvxiUniqueDriverID()
|
||||
epvxiFetchPConfig()
|
||||
epvxiLib(1),
|
||||
|
||||
.TH epvxiClose 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiClose - close a VXI device for a VXI driver
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiClose (la, vxiDriverID)
|
||||
unsigned la;
|
||||
int vxiDriverID;
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
Releases driver ownership of the device at the specified logical
|
||||
address la. Deallocates memory in use for the driver's private
|
||||
configuration.
|
||||
|
||||
.SH RETURNS
|
||||
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
|
||||
.TH epvxiFetchPConfig 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiFetchPConfig - macro which loads a pointer to the drivers private structure
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int evxiFetchPConfig (la, vxiDriverID, pConfig)
|
||||
unsigned la;
|
||||
int vxiDriverID;
|
||||
stuct XXXXXX *pConfig;
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
epvxiFetchPConfig() is a MACRO which loads a pointer to the devices
|
||||
private configuration block (ie pConfig above). This macro
|
||||
replaces the macro epvxiPConfig() which didnt return status.
|
||||
|
||||
This routine performs two functions:
|
||||
.nf
|
||||
1) Loads a pointer to the device's configuration block.
|
||||
2) Informs your driver if the specified device does not exist or has
|
||||
been opened by another driver.
|
||||
.fi
|
||||
|
||||
.SH RETURNS
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
|
||||
|
||||
|
||||
.TH epvxiRouteTriggerECL 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiRouteTriggerECL - route an ECL trigger to/from the front panel
|
||||
of a supported VXI device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiRouteTriggerECL (la, trigger, io)
|
||||
unsigned la; /* logical address */
|
||||
unsigned enable_map; /* bits 0-5 correspond to trig 0-5 */
|
||||
/* a 1 enables a trigger */
|
||||
/* a 0 disables a trigger */
|
||||
unsigned io_map; /* bits 0-5 correspond to trig 0-5 */
|
||||
/* a 1 sources the front panel */
|
||||
/* a 0 sources the back plane */
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
Route a VXI backplane trigger to or from the front panel of a slot zero
|
||||
device.
|
||||
The bits in argument enable_map correspond to an enable for triggers
|
||||
0-5 (1 enables the trigger and 0 disables the trigger). The bits
|
||||
in argument io_map set the direction for triggers 0-5 (1 sources
|
||||
the front panel and 0 sources the backplane).
|
||||
|
||||
Most VXI slot zero devices have one trigger output and one trigger input
|
||||
connector. The trigger input connector can drive multiple VXI backplane
|
||||
triggers. The trigger output connector should be driven by only one of
|
||||
the backplane triggers at a time.
|
||||
|
||||
.SH RETURNS
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
|
||||
.TH epvxiRouteTriggerTTL 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiRouteTriggerTTL - route an TTL trigger to/from the front panel
|
||||
of a supported VXI device
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiRouteTriggerTTL (la, trigger, io)
|
||||
unsigned la; /* logical address */
|
||||
unsigned enable_map; /* bits 0-5 correspond to trig 0-5 */
|
||||
/* a 1 enables a trigger */
|
||||
/* a 0 disables a trigger */
|
||||
unsigned io_map; /* bits 0-5 correspond to trig 0-5 */
|
||||
/* a 1 sources the front panel */
|
||||
/* a 0 sources the back plane */
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.SH DESCRIPTION
|
||||
|
||||
Route a VXI backplane trigger to or from the front panel of a slot zero
|
||||
device.
|
||||
The bits in argument enable_map correspond to an enable for triggers
|
||||
0-5 (1 enables the trigger and 0 disables the trigger). The bits
|
||||
in argument io_map set the direction for triggers 0-5 (1 sources
|
||||
the front panel and 0 sources the backplane).
|
||||
|
||||
Most VXI slot zero devices have one trigger output and one trigger input
|
||||
connector. The trigger input connector can drive multiple VXI backplane
|
||||
triggers. The trigger output connector should be driven by only one of
|
||||
the backplane triggers at a time.
|
||||
|
||||
.SH RETURNS
|
||||
.SH SEE ALSO
|
||||
epvxiLib(1),
|
||||
|
||||
|
||||
|
||||
|
||||
.TH epvxiResman 2 "" "EPICS Reference Manual"
|
||||
.ad b
|
||||
.SH NAME
|
||||
epvxiResman - perform VXI resource management and MXI bus setup
|
||||
.SH SYNOPSIS
|
||||
.CS
|
||||
.nf
|
||||
#include <epvxiLib.h>
|
||||
int epvxiResman ()
|
||||
|
||||
.fi
|
||||
.CE
|
||||
.nf
|
||||
MXI bus background information
|
||||
|
||||
o A MXI bus extender facilitates bus communication between
|
||||
a VME bus master and a VME bus slave that are installed
|
||||
in different crates. MXI bus extenders can be joined
|
||||
together in a hierarchy interconnected by the MXI bus.
|
||||
|
||||
o A MXI bus extender's LA window determines the VXI LA range
|
||||
over which local VME bus master initiated requests are
|
||||
extended onto the MXI bus.
|
||||
|
||||
o A MXI bus extender's LA window also determines the MXI
|
||||
LA range over which MXI extended bus master requests
|
||||
are allowed to be further extended into the local VXI bus.
|
||||
|
||||
o MXI bus extenders are always SC devices. A MXI bus
|
||||
extenders are always accessible from the MXI bus
|
||||
invariant of the location of its LA window.
|
||||
Conclusion: the LA of a MXI does not constrain the
|
||||
location of its LA window.
|
||||
|
||||
o Each MXI's LA window must be large enough to contain all
|
||||
of the MXI bus extender LA windows beneath it in the
|
||||
hierarchy. A MXI's LA window may not overlap the windows of
|
||||
any other MXI'at the same level in the hierarchy.
|
||||
|
||||
o SC devices within one crate must be within a block
|
||||
which does not overlap the LA windows of other
|
||||
MXI bus extenders at the same level in the
|
||||
hierarchy. Likewise SC devices within one crate
|
||||
must not overlap the LA windows of MXI bus
|
||||
extenders at a lower level in the hierarchy.
|
||||
|
||||
|
||||
EPICS VXI resource manager background information
|
||||
|
||||
o The EPICS VXI resource manager will always successfully
|
||||
allocate all DC devices in a DC MXI bus system if
|
||||
the available LA address range is large enough and
|
||||
if all devices other than the resource manager and
|
||||
the MXIs are DC.
|
||||
|
||||
o Otherwise if some of the devices in the system
|
||||
(other than the MXIs and the resource manager) are
|
||||
SC then the burden is placed on the project
|
||||
engineer to guarantee that SC devices are located
|
||||
such that nonoverlapping MXI LA windows can
|
||||
be allocated by the resource manager. Additionally
|
||||
the project enginner must locate the SC devices
|
||||
so that there is sufficient space to allocate the LAs
|
||||
of DC devices into nonoverlapping MXI LA windows.
|
||||
If the project engineer locates SC devices
|
||||
correctly the resource manager will always find the
|
||||
corresponding window hierarchy that provides
|
||||
access to all devices. If the project engineer
|
||||
improperly locates SC devices the resource manager
|
||||
will detect it and print a message.
|
||||
|
||||
o The CPU running the EPICS VXI resource manager is at the
|
||||
root of the MXI hierarchy.
|
||||
|
||||
o The resource manager will never allocate a DC device
|
||||
at a LA overlapping an interrupt vector already
|
||||
allocated to another device (use "veclist()" to
|
||||
determine what vectors are in use).
|
||||
|
||||
|
||||
|
||||
Resource manager DC device allocation rules
|
||||
|
||||
o When DC devices are allocated they will be placed between
|
||||
existing SC devices (in the same extender) first.
|
||||
Next they will be placed after existing DC devices
|
||||
(in the same extender). If there isn't room above existing
|
||||
DC devices then the resource manager will attempt to
|
||||
allocate DC device beneath the existing SC devices.
|
||||
If devices in other extenders (the limits of other windows)
|
||||
bracket the upper and lower limits of an extender's
|
||||
window there may not be enough space to allocate
|
||||
all of the DC devices present in a crate.
|
||||
If so, a warning message will be printed and the DC
|
||||
device will not be allocated a valid LA.
|
||||
|
||||
o If the only SC device in a crate is the MXI granting access
|
||||
to the crate then the resource manager will be free to place
|
||||
any DC devices found in a contiguous block where there is room.
|
||||
The resource manager requires block allocation because the MXI
|
||||
address window must contain only the DC device LA assignments
|
||||
for the current crate. This contiguous block will be placed
|
||||
at the highest open LA block available. If a contiguous block
|
||||
of sufficient size is not found then none of the DC devices will
|
||||
be allocated (assigned) valid LAs and a warning message
|
||||
will be printed. This block will not be anchored in any way
|
||||
to the SC LA of the extender that provides access to the
|
||||
DC devices in the crate.
|
||||
|
||||
|
||||
.fi
|
||||
Reference in New Issue
Block a user