Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

EPICS (Experimental Physics and Industrial Control System) is used for hardware control and readout of hardware status, values etc. These are called process variables (PV). pdsdata Pdsdata contains a package that holds the epics classes needed to read the process variables from the xtc file. This is not even a complete documentation of these classes, as it would be unneccesarily detailed. Here we aim just to include the main ingredients and what the user need to know to extract the data.

Class EpicsPvHeader

...

The following classes, typedefs and variables are part of Epics namespace:

Classes

Code Block

struct  	epicsTimeStamp
struct  	dbr_time_string
struct  	dbr_time_short
struct  	dbr_time_float
struct  	dbr_time_enum
struct  	dbr_time_char
struct  	dbr_time_long
struct  	dbr_time_double
struct  	dbr_sts_string
struct  	dbr_ctrl_int
struct  	dbr_ctrl_short
struct  	dbr_ctrl_float
struct  	dbr_ctrl_enum
struct  	dbr_ctrl_char
struct  	dbr_ctrl_long
struct  	dbr_ctrl_double

Typedefs

Code Block

typedef char 	                        epicsInt8
typedef unsigned char 	                epicsUInt8
typedef short 	                        epicsInt16
typedef unsigned short 	                epicsUInt16
typedef epicsUInt16 	                epicsEnum16
typedef int 	                        epicsInt32
typedef unsigned 	                epicsUInt32
typedef float 	                        epicsFloat32
typedef double 	                        epicsFloat64
typedef unsigned long 	                epicsIndex
typedef epicsInt32 	                epicsStatus
typedef char 	                        epicsOldString [MAX_STRING_SIZE]
typedef Pds::Epics::epicsTimeStamp 	epicsTimeStamp
typedef epicsOldString 	 EpicsPvHeader( short int iPvId1, short int iDbrType1, short int iNumElements1 ) :
                  iPvId(iPvId1),
  dbr_string_t
typedef epicsUInt8 	                iDbrType(iDbrType1),
    dbr_char_t
typedef epicsInt16 	                dbr_short_t
typedef epicsUInt16 	              iNumElements(iNumElements1)  {}

dbr_enum_t
typedef epicsInt32 	                dbr_long_t
typedef epicsFloat32 	              int printPv() const;

 dbr_float_t
typedef epicsFloat64 	                dbr_double_t
typedef epicsUInt16 	             static void* operator new(size dbr_put_ackt_t size, char* p)
typedef epicsUInt16 	             { return p; }
    // Disable ordinary (non-placement) new: only placement new and memory mapped objects are allowed
    // Disable placement delete: Not allow to delete memory mapped objects

Class EpicsPvCtrlHeader

 dbr_put_acks_t
typedef epicsOldString 	                dbr_stsack_string_t
typedef epicsOldString 	                dbr_class_name_t

Variables

Code Block

const char * 	epicsAlarmSeverityStrings [ALARM_NSEV]
const char * 	epicsAlarmConditionStrings [ALARM_NSTATUS]
const char * 	dbr_text [35]
const char * 	epicsAlarmSeverityStrings [ALARM_NSEV]
Initial value: 
{
    "NO_ALARM",
    "MINOR",
    "MAJOR",
    "INVALID",
}

const char * 	epicsAlarmConditionStrings [ALARM_NSTATUS]
Initial value:
{
    "NO_ALARM",
    "READ",
    "WRITE",
    "HIHI",
    "HIGH",
    "LOLO",
    "LOW",
    "STATE",
    "COS",
    "COMM",
    "TIMEOUT",
    "HWLIMIT",
    "CALC",
    "SCAN",
    "LINK",
    "SOFT",
    "BAD_SUB",
    "UDF",
    "DISABLE",
    "SIMM",
    "READ_ACCESS",
    "WRITE_ACCESS",
}

The following epics-related classes are not part of Epics namespace:

Class EpicsPvHeader

Public attributes:

Code Block

   short int iPvId
Code Block

/**
 * Layout of the EpicsPvCtrlHeader
 *
 *---------------------------------- EpicsPvHeader ---------------------------------------------
  *---------------------+-----------------+--------------+------------------------------------
 * Name                | Length(Bytes)   |     Type     |    Description
 *---------------------+-----------------+--------------+------------------------------------
 * iPvId                      2              Int16        Pv Id
 * iDbrType                   2//  process variable ID
   short int iDbrType     Int16      //  Epics Data Type
   short int iNumElements       //  Size of PV Array

Public Member Functions:

Code Block

   EpicsPvHeader( short int iPvId1, short int iDbrType1, short int iNumElements1 ) :
                  iPvId(iPvId1),                         //  process variable ID
 *                   iDbrType(iDbrType1),                   //  Epics Data Type
                  iNumElements(iNumElements1)  {}        //  Size of PV Array

    int printPv() const;

Public Member Functions:

Code Block

    static void* operator new(size_t size, char* p)     { return p; }
    // Disable ordinary (non-placement) new: only placement new and memory mapped objects are allowed
    // Disable placement delete: Not allow to delete memory mapped objects

Class EpicsPvCtrlHeader

Public attributes:

Code Block
Code Block

/**
 * Layout of the EpicsPvCtrlHeaderCtrl Types: DB_CTRL_STRING ~ DBR_CTRL_DOUBLE
 * iNumElements               2              Int16        Size of Pv Array
 *
 *---------------------------------- EpicsPvCtrlHeader ---------------------------------------------
 *---------------------+-----------------+--------------+------------------------------------
 * Name                | Length(Bytes)   |     Type     |    Description
 *---------------------+-----------------+--------------+------------------------------------
 * sPvName              _iMaxPvNameLength   char []       Null-terminated string,
 */

Class EpicsPvCtrl<iDbrType1,EpicsPvBase>

Class EpicsPvTime<iDbrType1,EpicsPvBase>

...