areaDetector pvAccess driver

May 5, 2015

Bruno Martins

Brookhaven National Laboratory

 

Table of Contents

Introduction

This is an EPICS areaDetector driver for importing an EPICSv4 NTNDArray via pvAccess into areaDetector. It does so by creating a monitor on the specified PV.

This driver inherits from ADDriver. It implements some of the parameters in asynNDArrayDriver.h and in ADArrayDriver.h, namely:

It also implements a few parameters that are specific to the pvAccess driver.

pvAccess driver specific parameters

The pvAccess driver-specific parameters are the following:

Parameter Definitions in pvaDriver.cpp and EPICS Record Definitions in pvaDriver.template
Parameter index variable asyn interface Access Description drvInfo string EPICS record name EPICS record type
OverrunCounter asynInt32 r/w Number of overruns occured OVERRUN_COUNTER $(P)$(R)OverrunCounter
$(P)$(R)OverrunCounter_RBV
longout
longin
PvName asynOctet r/w Name of the PV to monitor. This can be changed a run-time. PV_NAME $(P)$(R)PvName
$(P)$(R)PvName_RBV
waveform
waveform
PvConnectionStatus asynInt32 r/o Status of the connection to the server PV_CONNECTION $(P)$(R)PvConnection_RBV bi

Configuration

The pvaDriver driver is created with the pvaDriverConfig command, either from C/C++ or from the EPICS IOC shell.

int pvaDriverConfig(const char *portName, const char *pvName,
                      int maxSizeX, int maxSizeY, int dataType,
                      int maxBuffers, size_t maxMemory,
                      int priority, int stackSize)
  

The pvaDriver-specific fields in this command are:

For details on the meaning of the other parameters to this function refer to the detailed documentation on the pvaDriverConfig function in the pvaDriver.cpp documentation and in the documentation for the constructor for the pvaDriver class.

There is an example IOC boot directory and startup script provided with areaDetector.

The following MEDM screen for the pvaDriver.

ADPvaDriver.png