asyn 4-18
Public Member Functions | Public Attributes | Protected Attributes
asynPortDriver Class Reference

Base class for asyn port drivers; handles most of the bookkeeping for writing an asyn port driver with standard asyn interfaces and a parameter library. More...

#include <asynPortDriver.h>

Inheritance diagram for asynPortDriver:
testAsynPortDriver

List of all members.

Public Member Functions

 asynPortDriver (const char *portName, int maxAddr, int paramTableSize, int interfaceMask, int interruptMask, int asynFlags, int autoConnect, int priority, int stackSize)
 Constructor for the asynPortDriver class.
virtual ~asynPortDriver ()
 Destructor for asynPortDriver class; frees resources allocated when port driver is created.
virtual asynStatus lock ()
 Locks the driver to prevent multiple threads from accessing memory at the same time.
virtual asynStatus unlock ()
 Unocks the driver; called when an asyn client or driver is done accessing common memory.
virtual asynStatus getAddress (asynUser *pasynUser, int *address)
 Returns the asyn address associated with a pasynUser structure.
virtual asynStatus readInt32 (asynUser *pasynUser, epicsInt32 *value)
 Called when asyn clients call pasynInt32->read().
virtual asynStatus writeInt32 (asynUser *pasynUser, epicsInt32 value)
 Called when asyn clients call pasynInt32->write().
virtual asynStatus readUInt32Digital (asynUser *pasynUser, epicsUInt32 *value, epicsUInt32 mask)
 Called when asyn clients call pasynUInt32Digital->read().
virtual asynStatus writeUInt32Digital (asynUser *pasynUser, epicsUInt32 value, epicsUInt32 mask)
 Called when asyn clients call pasynUInt32Digital->write().
virtual asynStatus setInterruptUInt32Digital (asynUser *pasynUser, epicsUInt32 mask, interruptReason reason)
 Called when asyn clients call pasynUInt32Digital->setInterrupt().
virtual asynStatus clearInterruptUInt32Digital (asynUser *pasynUser, epicsUInt32 mask)
 Called when asyn clients call pasynUInt32Digital->clearInterrupt().
virtual asynStatus getInterruptUInt32Digital (asynUser *pasynUser, epicsUInt32 *mask, interruptReason reason)
 Called when asyn clients call pasynUInt32Digital->getInterrupt().
virtual asynStatus getBounds (asynUser *pasynUser, epicsInt32 *low, epicsInt32 *high)
 Called when asyn clients call pasynInt32->getBounds(), returning the bounds on the asynInt32 interface for drivers that use raw units.
virtual asynStatus readFloat64 (asynUser *pasynUser, epicsFloat64 *value)
 Called when asyn clients call pasynFloat64->read().
virtual asynStatus writeFloat64 (asynUser *pasynUser, epicsFloat64 value)
 Called when asyn clients call pasynFloat64->write().
virtual asynStatus readOctet (asynUser *pasynUser, char *value, size_t maxChars, size_t *nActual, int *eomReason)
 Called when asyn clients call pasynOctet->read().
virtual asynStatus writeOctet (asynUser *pasynUser, const char *value, size_t maxChars, size_t *nActual)
 Called when asyn clients call pasynOctet->write().
virtual asynStatus readInt8Array (asynUser *pasynUser, epicsInt8 *value, size_t nElements, size_t *nIn)
 Called when asyn clients call pasynInt8Array->read().
virtual asynStatus writeInt8Array (asynUser *pasynUser, epicsInt8 *value, size_t nElements)
 Called when asyn clients call pasynInt8Array->write().
virtual asynStatus doCallbacksInt8Array (epicsInt8 *value, size_t nElements, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynInt8Array interface.
virtual asynStatus readInt16Array (asynUser *pasynUser, epicsInt16 *value, size_t nElements, size_t *nIn)
 Called when asyn clients call pasynInt16Array->read().
virtual asynStatus writeInt16Array (asynUser *pasynUser, epicsInt16 *value, size_t nElements)
 Called when asyn clients call pasynInt16Array->write().
virtual asynStatus doCallbacksInt16Array (epicsInt16 *value, size_t nElements, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynInt16Array interface.
virtual asynStatus readInt32Array (asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
 Called when asyn clients call pasynInt32Array->read().
virtual asynStatus writeInt32Array (asynUser *pasynUser, epicsInt32 *value, size_t nElements)
 Called when asyn clients call pasynInt32Array->write().
virtual asynStatus doCallbacksInt32Array (epicsInt32 *value, size_t nElements, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynInt32Array interface.
virtual asynStatus readFloat32Array (asynUser *pasynUser, epicsFloat32 *value, size_t nElements, size_t *nIn)
 Called when asyn clients call pasynFloat32Array->read().
virtual asynStatus writeFloat32Array (asynUser *pasynUser, epicsFloat32 *value, size_t nElements)
 Called when asyn clients call pasynFloat32Array->write().
virtual asynStatus doCallbacksFloat32Array (epicsFloat32 *value, size_t nElements, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynFloat32Array interface.
virtual asynStatus readFloat64Array (asynUser *pasynUser, epicsFloat64 *value, size_t nElements, size_t *nIn)
 Called when asyn clients call pasynFloat64Array->read().
virtual asynStatus writeFloat64Array (asynUser *pasynUser, epicsFloat64 *value, size_t nElements)
 Called when asyn clients call pasynFloat64Array->write().
virtual asynStatus doCallbacksFloat64Array (epicsFloat64 *value, size_t nElements, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynFloat64Array interface.
virtual asynStatus readGenericPointer (asynUser *pasynUser, void *pointer)
 Called when asyn clients call pasynGenericPointer->read().
virtual asynStatus writeGenericPointer (asynUser *pasynUser, void *pointer)
 Called when asyn clients call pasynGenericPointer->write().
virtual asynStatus doCallbacksGenericPointer (void *pointer, int reason, int addr)
 Called by driver to do the callbacks to registered clients on the asynGenericPointer interface.
virtual asynStatus drvUserCreate (asynUser *pasynUser, const char *drvInfo, const char **pptypeName, size_t *psize)
 Called by asynManager to pass a pasynUser structure and drvInfo string to the driver; Assigns pasynUser->reason based on the value of the drvInfo string.
virtual asynStatus drvUserGetType (asynUser *pasynUser, const char **pptypeName, size_t *psize)
 Returns strings associated with driver-specific commands.
virtual asynStatus drvUserDestroy (asynUser *pasynUser)
 Frees any resources allocated by drvUserCreate.
virtual void report (FILE *fp, int details)
 Reports on status of the driver.
virtual asynStatus connect (asynUser *pasynUser)
 Connects driver to device; the base class implementation simply calls pasynManager->exceptionConnect.
virtual asynStatus disconnect (asynUser *pasynUser)
 Disconnects driver from device; the base class implementation simply calls pasynManager->exceptionDisconnect.
virtual asynStatus createParam (const char *name, asynParamType type, int *index)
 Creates a parameter in the parameter library.
virtual asynStatus createParam (int list, const char *name, asynParamType type, int *index)
 Creates a parameter in the parameter library.
virtual asynStatus findParam (const char *name, int *index)
 Finds a parameter in the parameter library.
virtual asynStatus findParam (int list, const char *name, int *index)
 Finds a parameter in the parameter library.
virtual asynStatus getParamName (int index, const char **name)
 Returns the name of a parameter in the parameter library.
virtual asynStatus getParamName (int list, int index, const char **name)
 Returns the name of a parameter in the parameter library.
virtual void reportSetParamErrors (asynStatus status, int index, int list, const char *functionName)
 Reports errors when setting parameters.
virtual void reportGetParamErrors (asynStatus status, int index, int list, const char *functionName)
 Reports errors when getting parameters.
virtual asynStatus setIntegerParam (int index, int value)
 Sets the value for an integer in the parameter library.
virtual asynStatus setIntegerParam (int list, int index, int value)
 Sets the value for an integer in the parameter library.
virtual asynStatus setUIntDigitalParam (int index, epicsUInt32 value, epicsUInt32 valueMask)
 Sets the value for a UInt32Digital in the parameter library.
virtual asynStatus setUIntDigitalParam (int list, int index, epicsUInt32 value, epicsUInt32 valueMask)
 Sets the value for a UInt32Digital in the parameter library.
virtual asynStatus setUIntDigitalParam (int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask)
 Sets the value for a UInt32Digital in the parameter library.
virtual asynStatus setUIntDigitalParam (int list, int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask)
 Sets the value for a UInt32Digital in the parameter library.
virtual asynStatus setUInt32DigitalInterrupt (int index, epicsUInt32 mask, interruptReason reason)
 Sets the interrupt mask and reason in the parameter library Calls paramList::setUInt32Interrupt (0, index, mask, reason) i.e.
virtual asynStatus setUInt32DigitalInterrupt (int list, int index, epicsUInt32 mask, interruptReason reason)
 Sets the interrupt mask and reason in the parameter library Calls paramList::setUInt32Interrupt (index, mask, reason) for the parameter list indexed by list.
virtual asynStatus clearUInt32DigitalInterrupt (int index, epicsUInt32 mask)
 Clears the interrupt mask in the parameter library Calls paramList::clearUInt32Interrupt (0, index, mask) i.e.
virtual asynStatus clearUInt32DigitalInterrupt (int list, int index, epicsUInt32 mask)
 Clears the interrupt mask in the parameter library Calls paramList::clearUInt32Interrupt (index, mask) for the parameter list indexed by list.
virtual asynStatus getUInt32DigitalInterrupt (int index, epicsUInt32 *mask, interruptReason reason)
 Gets the interrupt mask and reason in the parameter library Calls paramList::getUInt32Interrupt (0, index, mask, reason) i.e.
virtual asynStatus getUInt32DigitalInterrupt (int list, int index, epicsUInt32 *mask, interruptReason reason)
 Gets the interrupt mask and reason in the parameter library Calls paramList::getUInt32Interrupt (index, mask, reason) for the parameter list indexed by list.
virtual asynStatus setDoubleParam (int index, double value)
 Sets the value for a double in the parameter library.
virtual asynStatus setDoubleParam (int list, int index, double value)
 Sets the value for a double in the parameter library.
virtual asynStatus setStringParam (int index, const char *value)
 Sets the value for a string in the parameter library.
virtual asynStatus setStringParam (int list, int index, const char *value)
 Sets the value for a string in the parameter library.
virtual asynStatus getIntegerParam (int index, int *value)
 Returns the value for an integer from the parameter library.
virtual asynStatus getIntegerParam (int list, int index, int *value)
 Returns the value for an integer from the parameter library.
virtual asynStatus getUIntDigitalParam (int index, epicsUInt32 *value, epicsUInt32 mask)
 Returns the value for an UInt32Digital parameter from the parameter library.
virtual asynStatus getUIntDigitalParam (int list, int index, epicsUInt32 *value, epicsUInt32 mask)
 Returns the value for an UInt32Digital parameter from the parameter library.
virtual asynStatus getDoubleParam (int index, double *value)
 Returns the value for a double from the parameter library.
virtual asynStatus getDoubleParam (int list, int index, double *value)
 Returns the value for a double from the parameter library.
virtual asynStatus getStringParam (int index, int maxChars, char *value)
 Returns the value for a string from the parameter library.
virtual asynStatus getStringParam (int list, int index, int maxChars, char *value)
 Returns the value for a string from the parameter library.
virtual asynStatus callParamCallbacks ()
 Calls callParamCallbacks(0, 0) i.e.
virtual asynStatus callParamCallbacks (int addr)
 Calls callParamCallbacks(addr, addr) i.e.
virtual asynStatus callParamCallbacks (int list, int addr)
 Calls paramList::callCallbacks(addr) for a specific parameter list.
virtual void reportParams (FILE *fp, int details)
 Calls paramList::report(fp, details) for each parameter list that the driver supports.
void callbackTask ()

Public Attributes

char * portName
 The name of this asyn port.
int maxAddr
 The maximum asyn address (addr) supported by this driver.

Protected Attributes

asynUser * pasynUserSelf
 asynUser connected to ourselves for asynTrace
asynStandardInterfaces asynStdInterfaces
 The asyn interfaces this driver implements.

Detailed Description

Base class for asyn port drivers; handles most of the bookkeeping for writing an asyn port driver with standard asyn interfaces and a parameter library.


Constructor & Destructor Documentation

asynPortDriver::asynPortDriver ( const char *  portNameIn,
int  maxAddrIn,
int  paramTableSize,
int  interfaceMask,
int  interruptMask,
int  asynFlags,
int  autoConnect,
int  priority,
int  stackSize 
)

Constructor for the asynPortDriver class.

Parameters:
[in]portNameInThe name of the asyn port driver to be created.
[in]maxAddrInThe maximum number of asyn addr addresses this driver supports. Often it is 1 (which is the minimum), but some drivers, for example a 16-channel D/A or A/D would support values > 1. This controls the number of parameter tables that are created.
[in]paramTableSizeThe number of parameters that this driver supports. This controls the size of the parameter tables.
[in]interfaceMaskBit mask defining the asyn interfaces that this driver supports. The bit mask values are defined in asynPortDriver.h, e.g. asynInt32Mask.
[in]interruptMaskBit mask definining the asyn interfaces that can generate interrupts (callbacks). The bit mask values are defined in asynPortDriver.h, e.g. asynInt8ArrayMask.
[in]asynFlagsFlags when creating the asyn port driver; includes ASYN_CANBLOCK and ASYN_MULTIDEVICE.
[in]autoConnectThe autoConnect flag for the asyn port driver. 1 if the driver should autoconnect.
[in]priorityThe thread priority for the asyn port driver thread if ASYN_CANBLOCK is set in asynFlags. If it is 0 then the default value of epicsThreadPriorityMedium will be assigned by asynManager.
[in]stackSizeThe stack size for the asyn port driver thread if ASYN_CANBLOCK is set in asynFlags. If it is 0 then the default value of epicsThreadGetStackSize(epicsThreadStackMedium) will be assigned by asynManager.
asynPortDriver::~asynPortDriver ( ) [virtual]

Destructor for asynPortDriver class; frees resources allocated when port driver is created.


Member Function Documentation

void asynPortDriver::callbackTask ( )
asynStatus asynPortDriver::callParamCallbacks ( ) [virtual]

Calls callParamCallbacks(0, 0) i.e.

with both list and asyn address.

asynStatus asynPortDriver::callParamCallbacks ( int  addr) [virtual]

Calls callParamCallbacks(addr, addr) i.e.

with list=addr, which is normal.

asynStatus asynPortDriver::callParamCallbacks ( int  list,
int  addr 
) [virtual]

Calls paramList::callCallbacks(addr) for a specific parameter list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]addrThe asyn address to be used in the callback. Typically the same value as list.
asynStatus asynPortDriver::clearInterruptUInt32Digital ( asynUser *  pasynUser,
epicsUInt32  mask 
) [virtual]

Called when asyn clients call pasynUInt32Digital->clearInterrupt().

The base class implementation simply sets the value in the parameter library. Derived classes will reimplement this function if they need to perform an action when an clearInterrupt is called.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]maskInterrupt mask.
asynStatus asynPortDriver::clearUInt32DigitalInterrupt ( int  index,
epicsUInt32  mask 
) [virtual]

Clears the interrupt mask in the parameter library Calls paramList::clearUInt32Interrupt (0, index, mask) i.e.

for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]maskInterrupt mask.
asynStatus asynPortDriver::clearUInt32DigitalInterrupt ( int  list,
int  index,
epicsUInt32  mask 
) [virtual]

Clears the interrupt mask in the parameter library Calls paramList::clearUInt32Interrupt (index, mask) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]maskInterrupt mask.
asynStatus asynPortDriver::connect ( asynUser *  pasynUser) [virtual]

Connects driver to device; the base class implementation simply calls pasynManager->exceptionConnect.

Derived classes can reimplement this function for real connection management.

Parameters:
[in]pasynUserThe pasynUser structure which contains information about the port and address
asynStatus asynPortDriver::createParam ( const char *  name,
asynParamType  type,
int *  index 
) [virtual]

Creates a parameter in the parameter library.

Calls paramList::createParam (list, name, index) for all parameters lists.

Parameters:
[in]nameParameter name
[in]typeParameter type
[out]indexParameter number
asynStatus asynPortDriver::createParam ( int  list,
const char *  name,
asynParamType  type,
int *  index 
) [virtual]

Creates a parameter in the parameter library.

Calls paramList::addParam (name, index) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]nameParameter name
[in]typeParameter type
[out]indexParameter number
asynStatus asynPortDriver::disconnect ( asynUser *  pasynUser) [virtual]

Disconnects driver from device; the base class implementation simply calls pasynManager->exceptionDisconnect.

Derived classes can reimplement this function for real connection management.

Parameters:
[in]pasynUserThe pasynUser structure which contains information about the port and address
asynStatus asynPortDriver::doCallbacksFloat32Array ( epicsFloat32 *  value,
size_t  nElements,
int  reason,
int  addr 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynFloat32Array interface.

Parameters:
[in]valueAddress of the array.
[in]nElementsNumber of elements in the array.
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addrA client will be called if addr matches the asyn address registered for that client.
asynStatus asynPortDriver::doCallbacksFloat64Array ( epicsFloat64 *  value,
size_t  nElements,
int  reason,
int  addr 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynFloat64Array interface.

Parameters:
[in]valueAddress of the array.
[in]nElementsNumber of elements in the array.
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addrA client will be called if addr matches the asyn address registered for that client.
asynStatus asynPortDriver::doCallbacksGenericPointer ( void *  genericPointer,
int  reason,
int  address 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynGenericPointer interface.

Parameters:
[in]genericPointerPointer to the object
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addressA client will be called if address matches the address registered for that client.
asynStatus asynPortDriver::doCallbacksInt16Array ( epicsInt16 *  value,
size_t  nElements,
int  reason,
int  addr 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynInt16Array interface.

Parameters:
[in]valueAddress of the array.
[in]nElementsNumber of elements in the array.
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addrA client will be called if addr matches the asyn address registered for that client.
asynStatus asynPortDriver::doCallbacksInt32Array ( epicsInt32 *  value,
size_t  nElements,
int  reason,
int  addr 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynInt32Array interface.

Parameters:
[in]valueAddress of the array.
[in]nElementsNumber of elements in the array.
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addrA client will be called if addr matches the asyn address registered for that client.
asynStatus asynPortDriver::doCallbacksInt8Array ( epicsInt8 *  value,
size_t  nElements,
int  reason,
int  addr 
) [virtual]

Called by driver to do the callbacks to registered clients on the asynInt8Array interface.

Parameters:
[in]valueAddress of the array.
[in]nElementsNumber of elements in the array.
[in]reasonA client will be called if reason matches pasynUser->reason registered for that client.
[in]addrA client will be called if addr matches the asyn address registered for that client.
asynStatus asynPortDriver::drvUserCreate ( asynUser *  pasynUser,
const char *  drvInfo,
const char **  pptypeName,
size_t *  psize 
) [virtual]

Called by asynManager to pass a pasynUser structure and drvInfo string to the driver; Assigns pasynUser->reason based on the value of the drvInfo string.

This base class implementation looks up the drvInfo string in the parameter list.

Parameters:
[in]pasynUserpasynUser structure that driver will modify
[in]drvInfoString containing information about what driver function is being referenced
[out]pptypeNameLocation in which driver can write information.
[out]psizeLocation where driver can write information about size of pptypeName
asynStatus asynPortDriver::drvUserDestroy ( asynUser *  pasynUser) [virtual]

Frees any resources allocated by drvUserCreate.

This base class implementation does nothing. Derived classes could reimplement this function if they allocate any resources in drvUserCreate, but asynPortDriver classes typically do not need to do so.

asynStatus asynPortDriver::drvUserGetType ( asynUser *  pasynUser,
const char **  pptypeName,
size_t *  psize 
) [virtual]

Returns strings associated with driver-specific commands.

This base class implementation does nothing. Derived classes could reimplement this function to return the requested information, but most do not reimplement this.

Parameters:
[in]pasynUserpasynUser structure that driver will modify
[out]pptypeNameLocation in which driver can write information.
[out]psizeLocation where driver can write information about size of pptypeName
asynStatus asynPortDriver::findParam ( const char *  name,
int *  index 
) [virtual]

Finds a parameter in the parameter library.

Calls findParam(0, name, index), i.e. for parameter list 0.

Parameters:
[in]nameParameter name
[out]indexParameter number
asynStatus asynPortDriver::findParam ( int  list,
const char *  name,
int *  index 
) [virtual]

Finds a parameter in the parameter library.

Calls paramList::findParam (name, index) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]nameParameter name
[out]indexParameter number
asynStatus asynPortDriver::getAddress ( asynUser *  pasynUser,
int *  address 
) [virtual]

Returns the asyn address associated with a pasynUser structure.

Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[out]addressReturned address.
Returns:
Returns asynError if the address is > maxAddr value passed to asynPortDriver::asynPortDriver.
asynStatus asynPortDriver::getBounds ( asynUser *  pasynUser,
epicsInt32 *  low,
epicsInt32 *  high 
) [virtual]

Called when asyn clients call pasynInt32->getBounds(), returning the bounds on the asynInt32 interface for drivers that use raw units.

Device support uses these values for unit conversion. The base class implementation simply returns low=0, high=65535. Derived classes can reimplement this function if they support raw units with different limits.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[out]lowAddress of the low limit.
[out]highAddress of the high limit.
asynStatus asynPortDriver::getDoubleParam ( int  index,
double *  value 
) [virtual]

Returns the value for a double from the parameter library.

Calls getDoubleParam(0, index, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[out]valueAddress of value to get.
asynStatus asynPortDriver::getDoubleParam ( int  list,
int  index,
double *  value 
) [virtual]

Returns the value for a double from the parameter library.

Calls paramList::getDouble (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[out]valueAddress of value to get.
asynStatus asynPortDriver::getIntegerParam ( int  index,
int *  value 
) [virtual]

Returns the value for an integer from the parameter library.

Calls getIntegerParam(0, index, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[out]valueAddress of value to get.
asynStatus asynPortDriver::getIntegerParam ( int  list,
int  index,
int *  value 
) [virtual]

Returns the value for an integer from the parameter library.

Calls paramList::getInteger (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[out]valueAddress of value to get.
asynStatus asynPortDriver::getInterruptUInt32Digital ( asynUser *  pasynUser,
epicsUInt32 *  mask,
interruptReason  reason 
) [virtual]

Called when asyn clients call pasynUInt32Digital->getInterrupt().

The base class implementation simply returns the value from the parameter library. Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[out]maskInterrupt mask address.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::getParamName ( int  index,
const char **  name 
) [virtual]

Returns the name of a parameter in the parameter library.

Calls getParamName(0, index, name) i.e. for parameter list 0.

Parameters:
[in]indexParameter number
[out]nameParameter name
asynStatus asynPortDriver::getParamName ( int  list,
int  index,
const char **  name 
) [virtual]

Returns the name of a parameter in the parameter library.

Calls paramList::getName (index, name) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexParameter number
[out]nameParameter name
asynStatus asynPortDriver::getStringParam ( int  index,
int  maxChars,
char *  value 
) [virtual]

Returns the value for a string from the parameter library.

Calls getStringParam(0, index, maxChars, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]maxCharsMaximum number of characters to return.
[out]valueAddress of value to get.
asynStatus asynPortDriver::getStringParam ( int  list,
int  index,
int  maxChars,
char *  value 
) [virtual]

Returns the value for a string from the parameter library.

Calls paramList::getString (index, maxChars, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]maxCharsMaximum number of characters to return.
[out]valueAddress of value to get.
asynStatus asynPortDriver::getUInt32DigitalInterrupt ( int  index,
epicsUInt32 *  mask,
interruptReason  reason 
) [virtual]

Gets the interrupt mask and reason in the parameter library Calls paramList::getUInt32Interrupt (0, index, mask, reason) i.e.

for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]maskInterrupt mask.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::getUInt32DigitalInterrupt ( int  list,
int  index,
epicsUInt32 *  mask,
interruptReason  reason 
) [virtual]

Gets the interrupt mask and reason in the parameter library Calls paramList::getUInt32Interrupt (index, mask, reason) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]maskInterrupt mask.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::getUIntDigitalParam ( int  index,
epicsUInt32 *  value,
epicsUInt32  mask 
) [virtual]

Returns the value for an UInt32Digital parameter from the parameter library.

Calls getUIntDigitalParam(0, index, value, mask) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[out]valueAddress of value to get.
[in]maskThe mask to apply when getting the value
asynStatus asynPortDriver::getUIntDigitalParam ( int  list,
int  index,
epicsUInt32 *  value,
epicsUInt32  mask 
) [virtual]

Returns the value for an UInt32Digital parameter from the parameter library.

Calls paramList::getUInt32 (index, value, mask) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[out]valueAddress of value to get.
[in]maskThe mask to apply when getting the value.
asynStatus asynPortDriver::lock ( ) [virtual]

Locks the driver to prevent multiple threads from accessing memory at the same time.

This function is called whenever asyn clients call the functions on the asyn interfaces. Drivers with their own background threads must call lock() to protect conflicts with asyn clients. They can call unlock() to permit asyn clients to run during times that the driver thread is idle or is performing compute bound work that does not access memory also accessible by clients.

asynStatus asynPortDriver::readFloat32Array ( asynUser *  pasynUser,
epicsFloat32 *  value,
size_t  nElements,
size_t *  nIn 
) [virtual]

Called when asyn clients call pasynFloat32Array->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to read.
[in]nElementsNumber of elements to read.
[out]nInNumber of elements actually read.
asynStatus asynPortDriver::readFloat64 ( asynUser *  pasynUser,
epicsFloat64 *  value 
) [virtual]

Called when asyn clients call pasynFloat64->read().

The base class implementation simply returns the value from the parameter library. Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueAddress of the value to read.
asynStatus asynPortDriver::readFloat64Array ( asynUser *  pasynUser,
epicsFloat64 *  value,
size_t  nElements,
size_t *  nIn 
) [virtual]

Called when asyn clients call pasynFloat64Array->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to read.
[in]nElementsNumber of elements to read.
[out]nInNumber of elements actually read.

Reimplemented in testAsynPortDriver.

asynStatus asynPortDriver::readGenericPointer ( asynUser *  pasynUser,
void *  genericPointer 
) [virtual]

Called when asyn clients call pasynGenericPointer->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]genericPointerPointer to the object to read.
asynStatus asynPortDriver::readInt16Array ( asynUser *  pasynUser,
epicsInt16 *  value,
size_t  nElements,
size_t *  nIn 
) [virtual]

Called when asyn clients call pasynInt16Array->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to read.
[in]nElementsNumber of elements to read.
[out]nInNumber of elements actually read.
asynStatus asynPortDriver::readInt32 ( asynUser *  pasynUser,
epicsInt32 *  value 
) [virtual]

Called when asyn clients call pasynInt32->read().

The base class implementation simply returns the value from the parameter library. Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[out]valueAddress of the value to read.
asynStatus asynPortDriver::readInt32Array ( asynUser *  pasynUser,
epicsInt32 *  value,
size_t  nElements,
size_t *  nIn 
) [virtual]

Called when asyn clients call pasynInt32Array->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to read.
[in]nElementsNumber of elements to read.
[out]nInNumber of elements actually read.
asynStatus asynPortDriver::readInt8Array ( asynUser *  pasynUser,
epicsInt8 *  value,
size_t  nElements,
size_t *  nIn 
) [virtual]

Called when asyn clients call pasynInt8Array->read().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to read.
[in]nElementsNumber of elements to read.
[out]nInNumber of elements actually read.
asynStatus asynPortDriver::readOctet ( asynUser *  pasynUser,
char *  value,
size_t  maxChars,
size_t *  nActual,
int *  eomReason 
) [virtual]

Called when asyn clients call pasynOctet->read().

The base class implementation simply returns the value from the parameter library. Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueAddress of the string to read.
[in]maxCharsMaximum number of characters to read.
[out]nActualNumber of characters actually read. Base class sets this to strlen(value).
[out]eomReasonReason that read terminated. Base class sets this to ASYN_EOM_END.
asynStatus asynPortDriver::readUInt32Digital ( asynUser *  pasynUser,
epicsUInt32 *  value,
epicsUInt32  mask 
) [virtual]

Called when asyn clients call pasynUInt32Digital->read().

The base class implementation simply returns the value from the parameter library. Derived classes rarely need to reimplement this function.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[out]valueAddress of the value to read.
[in]maskMask value to use when reading the value.
void asynPortDriver::report ( FILE *  fp,
int  details 
) [virtual]

Reports on status of the driver.

Parameters:
[in]fpThe file pointer on which report information will be written
[in]detailsThe level of report detail desired

If details > 1 then information is printed about the contents of the parameter library. If details > 2 then information is printed about all of the interrupt callbacks registered. Derived classes typically reimplement this function to print driver-specific details and then call this base class function.

void asynPortDriver::reportGetParamErrors ( asynStatus  status,
int  index,
int  list,
const char *  functionName 
) [virtual]

Reports errors when getting parameters.

asynParamBadIndex and asynParamWrongType are printed with ASYN_TRACE_ERROR because they should never happen. asynParamUndefined is printed with ASYN_TRACE_FLOW because it is an expected error if the value is read before it is defined, which device support can do.

Parameters:
[in]statusThe error status.
[in]indexThe parameter number
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]functionNameThe name of the function that generated the error
void asynPortDriver::reportParams ( FILE *  fp,
int  details 
) [virtual]

Calls paramList::report(fp, details) for each parameter list that the driver supports.

Parameters:
[in]fpThe file pointer on which report information will be written
[in]detailsThe level of report detail desired.
void asynPortDriver::reportSetParamErrors ( asynStatus  status,
int  index,
int  list,
const char *  functionName 
) [virtual]

Reports errors when setting parameters.

Parameters:
[in]statusThe error status.
[in]indexThe parameter number
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]functionNameThe name of the function that generated the error
asynStatus asynPortDriver::setDoubleParam ( int  list,
int  index,
double  value 
) [virtual]

Sets the value for a double in the parameter library.

Calls paramList::setDouble (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]valueValue to set.
asynStatus asynPortDriver::setDoubleParam ( int  index,
double  value 
) [virtual]

Sets the value for a double in the parameter library.

Calls setDoubleParam(0, index, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]valueValue to set.
asynStatus asynPortDriver::setIntegerParam ( int  index,
int  value 
) [virtual]

Sets the value for an integer in the parameter library.

Calls setIntegerParam(0, index, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]valueValue to set.
asynStatus asynPortDriver::setIntegerParam ( int  list,
int  index,
int  value 
) [virtual]

Sets the value for an integer in the parameter library.

Calls paramList::setInteger (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]valueValue to set.
asynStatus asynPortDriver::setInterruptUInt32Digital ( asynUser *  pasynUser,
epicsUInt32  mask,
interruptReason  reason 
) [virtual]

Called when asyn clients call pasynUInt32Digital->setInterrupt().

The base class implementation simply sets the value in the parameter library. Derived classes will reimplement this function if they need to perform an action when an setInterrupt is called.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]maskInterrupt mask.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::setStringParam ( int  list,
int  index,
const char *  value 
) [virtual]

Sets the value for a string in the parameter library.

Calls paramList::setString (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]valueAddress of value to set.
asynStatus asynPortDriver::setStringParam ( int  index,
const char *  value 
) [virtual]

Sets the value for a string in the parameter library.

Calls setStringParam(0, index, value) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]valueAddress of value to set.
asynStatus asynPortDriver::setUInt32DigitalInterrupt ( int  list,
int  index,
epicsUInt32  mask,
interruptReason  reason 
) [virtual]

Sets the interrupt mask and reason in the parameter library Calls paramList::setUInt32Interrupt (index, mask, reason) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]maskInterrupt mask.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::setUInt32DigitalInterrupt ( int  index,
epicsUInt32  mask,
interruptReason  reason 
) [virtual]

Sets the interrupt mask and reason in the parameter library Calls paramList::setUInt32Interrupt (0, index, mask, reason) i.e.

for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]maskInterrupt mask.
[in]reasonInterrupt reason.
asynStatus asynPortDriver::setUIntDigitalParam ( int  index,
epicsUInt32  value,
epicsUInt32  valueMask,
epicsUInt32  interruptMask 
) [virtual]

Sets the value for a UInt32Digital in the parameter library.

Calls setUIntDigitalParam(0, index, value, valueMask, interruptMask) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]valueValue to set.
[in]valueMaskThe mask to use when setting the value.
[in]interruptMaskA mask that indicates which bits have changed even if the value is the same, so callbacks will be done
asynStatus asynPortDriver::setUIntDigitalParam ( int  list,
int  index,
epicsUInt32  value,
epicsUInt32  valueMask 
) [virtual]

Sets the value for a UInt32Digital in the parameter library.

Calls paramList::setUIntDigitalParam(list, index, value, valueMask, 0) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]valueValue to set.
[in]valueMaskThe mask to use when setting the value.
asynStatus asynPortDriver::setUIntDigitalParam ( int  list,
int  index,
epicsUInt32  value,
epicsUInt32  valueMask,
epicsUInt32  interruptMask 
) [virtual]

Sets the value for a UInt32Digital in the parameter library.

Calls paramList::setInteger (index, value) for the parameter list indexed by list.

Parameters:
[in]listThe parameter list number. Must be < maxAddr passed to asynPortDriver::asynPortDriver.
[in]indexThe parameter number
[in]valueValue to set
[in]valueMaskThe mask to use when setting the value.
[in]interruptMaskA mask that indicates which bits have changed even if the value is the same, so callbacks will be done
asynStatus asynPortDriver::setUIntDigitalParam ( int  index,
epicsUInt32  value,
epicsUInt32  valueMask 
) [virtual]

Sets the value for a UInt32Digital in the parameter library.

Calls setUIntDigitalParam(0, index, value, valueMask, 0) i.e. for parameter list 0.

Parameters:
[in]indexThe parameter number
[in]valueValue to set.
[in]valueMaskThe mask to use when setting the value.
asynStatus asynPortDriver::unlock ( ) [virtual]

Unocks the driver; called when an asyn client or driver is done accessing common memory.

asynStatus asynPortDriver::writeFloat32Array ( asynUser *  pasynUser,
epicsFloat32 *  value,
size_t  nElements 
) [virtual]

Called when asyn clients call pasynFloat32Array->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to write.
[in]nElementsNumber of elements to write.
asynStatus asynPortDriver::writeFloat64 ( asynUser *  pasynUser,
epicsFloat64  value 
) [virtual]

Called when asyn clients call pasynFloat64->write().

The base class implementation simply sets the value in the parameter library and calls any registered callbacks for this pasynUser->reason and address. Derived classes will reimplement this function if they need to perform an action when an asynFloat64 value is written.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueValue to write.

Reimplemented in testAsynPortDriver.

asynStatus asynPortDriver::writeFloat64Array ( asynUser *  pasynUser,
epicsFloat64 *  value,
size_t  nElements 
) [virtual]

Called when asyn clients call pasynFloat64Array->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to write.
[in]nElementsNumber of elements to write.
asynStatus asynPortDriver::writeGenericPointer ( asynUser *  pasynUser,
void *  genericPointer 
) [virtual]

Called when asyn clients call pasynGenericPointer->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]genericPointerPointer to the object to write.
asynStatus asynPortDriver::writeInt16Array ( asynUser *  pasynUser,
epicsInt16 *  value,
size_t  nElements 
) [virtual]

Called when asyn clients call pasynInt16Array->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to write.
[in]nElementsNumber of elements to write.
asynStatus asynPortDriver::writeInt32 ( asynUser *  pasynUser,
epicsInt32  value 
) [virtual]

Called when asyn clients call pasynInt32->write().

The base class implementation simply sets the value in the parameter library and calls any registered callbacks for this pasynUser->reason and address. Derived classes will reimplement this function if they need to perform an action when an asynInt32 value is written.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueValue to write.

Reimplemented in testAsynPortDriver.

asynStatus asynPortDriver::writeInt32Array ( asynUser *  pasynUser,
epicsInt32 *  value,
size_t  nElements 
) [virtual]

Called when asyn clients call pasynInt32Array->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to write.
[in]nElementsNumber of elements to write.
asynStatus asynPortDriver::writeInt8Array ( asynUser *  pasynUser,
epicsInt8 *  value,
size_t  nElements 
) [virtual]

Called when asyn clients call pasynInt8Array->write().

The base class implementation simply prints an error message. Derived classes may reimplement this function if required.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valuePointer to the array to write.
[in]nElementsNumber of elements to write.
asynStatus asynPortDriver::writeOctet ( asynUser *  pasynUser,
const char *  value,
size_t  nChars,
size_t *  nActual 
) [virtual]

Called when asyn clients call pasynOctet->write().

The base class implementation simply sets the value in the parameter library and calls any registered callbacks for this pasynUser->reason and address. Derived classes will reimplement this function if they need to perform an action when an asynOctet value is written.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueAddress of the string to write.
[in]nCharsNumber of characters to write.
[out]nActualNumber of characters actually written.
asynStatus asynPortDriver::writeUInt32Digital ( asynUser *  pasynUser,
epicsUInt32  value,
epicsUInt32  mask 
) [virtual]

Called when asyn clients call pasynUInt32Digital->write().

The base class implementation simply sets the value in the parameter library and calls any registered callbacks for this pasynUser->reason and address. Derived classes will reimplement this function if they need to perform an action when an asynInt32 value is written.

Parameters:
[in]pasynUserpasynUser structure that encodes the reason and address.
[in]valueValue to write.
[in]maskMask value to use when writinging the value.

Member Data Documentation

asynStandardInterfaces asynPortDriver::asynStdInterfaces [protected]

The asyn interfaces this driver implements.

The maximum asyn address (addr) supported by this driver.

asynUser* asynPortDriver::pasynUserSelf [protected]

asynUser connected to ourselves for asynTrace

The name of this asyn port.


The documentation for this class was generated from the following files: