qmca  0.0.20
Signals | Public Member Functions | Static Public Attributes | Protected Attributes | Private Member Functions | Private Attributes | List of all members
EpicsObject Class Referenceabstract

#include <epicsobject.h>

Inheritance diagram for EpicsObject:
Inheritance graph

Signals

void valueChanged ()
 

Public Member Functions

 EpicsObject (QString pvName, QObject *parent=0, int debug=0)
 
virtual ~EpicsObject ()
 
void changeConnection (QString pv)
 
int count ()
 
QString pvName ()
 
QString toolTip ()
 
virtual void connected ()
 
virtual void disconnected ()
 
chid channelID ()
 
int debug ()
 
void setDebug (int dbg)
 
void settle (double t)
 
void ca_pend_io (double t)
 

Static Public Attributes

static QMutex m_Mutex
 

Protected Attributes

chid m_ChannelID
 
evid m_EventID
 
bool m_HasEventHandler
 
int m_Debug
 

Private Member Functions

virtual caEventCallBackFunc * get_event_handler ()=0
 
 EpicsObject (const EpicsObject &copy)
 
EpicsObjectoperator= (const EpicsObject &copy)
 

Private Attributes

QString m_PVName
 

Detailed Description

Definition at line 9 of file epicsobject.h.

Constructor & Destructor Documentation

EpicsObject::EpicsObject ( QString  pvName,
QObject *  parent = 0,
int  debug = 0 
)

Definition at line 7 of file epicsobject.cpp.

References changeConnection().

8  : QObject(parent),
10  m_ChannelID(0),
11  m_EventID(0),
13  m_Debug(debug)
14 {
15 // printf("Epics Object %p Constructed - pvName = %s\n", this, qPrintable(pvName));
16 
18 }
bool m_HasEventHandler
Definition: epicsobject.h:50
QString pvName()
Definition: epicsobject.cpp:30
evid m_EventID
Definition: epicsobject.h:49
void changeConnection(QString pv)
Definition: epicsobject.cpp:84
QString m_PVName
Definition: epicsobject.h:45
chid m_ChannelID
Definition: epicsobject.h:48
EpicsObject::~EpicsObject ( )
virtual

Definition at line 20 of file epicsobject.cpp.

References m_ChannelID.

21 {
22 // printf ("EpicsObject::~EpicsObject(\"%s\")\n", qPrintable(m_PVName));
23 
24  if (m_ChannelID) {
25  SEVCHK(ca_clear_channel(m_ChannelID), 0);
26  m_ChannelID = 0;
27  }
28 }
chid m_ChannelID
Definition: epicsobject.h:48
EpicsObject::EpicsObject ( const EpicsObject copy)
private

Member Function Documentation

void EpicsObject::ca_pend_io ( double  t)
void EpicsObject::changeConnection ( QString  pv)

Definition at line 84 of file epicsobject.cpp.

References connection_handler(), debug(), m_ChannelID, and m_PVName.

Referenced by EpicsObject().

85 {
86 // printf("EpicsObject::changeConnection(this:%p,pvname:\"%s\",chann:%p)\n",
87 // this, qPrintable(m_PVName), m_ChannelID);
88 
89  if (m_ChannelID) {
90  SEVCHK(ca_clear_channel(m_ChannelID), 0);
91  m_ChannelID = 0;
92  }
93 
94  SEVCHK(ca_search(qPrintable(pv), &m_ChannelID), NULL);
95  ca_set_puser(m_ChannelID, this);
96  SEVCHK(ca_change_connection_event(m_ChannelID, &connection_handler), NULL);
97 
98  m_PVName = pv;
99 
100  if (debug()) {
101  printf("EpicsObject::changeConnection(this:%p,pvname:\"%s\",chann:%p)\n",
102  this, qPrintable(m_PVName), m_ChannelID);
103  }
104 }
static void connection_handler(struct connection_handler_args args)
Definition: epicsobject.cpp:68
QString m_PVName
Definition: epicsobject.h:45
chid m_ChannelID
Definition: epicsobject.h:48
chid EpicsObject::channelID ( )
void EpicsObject::connected ( )
virtual

Reimplemented in EpicsDouble, and EpicsEnumeration.

Definition at line 45 of file epicsobject.cpp.

References get_event_handler(), m_ChannelID, m_EventID, and m_HasEventHandler.

Referenced by connection_handler().

46 {
47  if (!m_HasEventHandler) {
48  chtype typ = ca_field_type(m_ChannelID);
49 
50  SEVCHK(ca_create_subscription(typ, 0, m_ChannelID, DBE_VALUE|DBE_ALARM,
51  get_event_handler(), this, &m_EventID), NULL);
52 
54 
55 // printf("Channel %s connected\n", qPrintable(pvName()));
56  }
57 }
virtual caEventCallBackFunc * get_event_handler()=0
bool m_HasEventHandler
Definition: epicsobject.h:50
evid m_EventID
Definition: epicsobject.h:49
chid m_ChannelID
Definition: epicsobject.h:48
int EpicsObject::count ( )

Definition at line 40 of file epicsobject.cpp.

References m_ChannelID.

Referenced by MCAPlotCurve::arrayValueChanged().

41 {
42  return ca_element_count(m_ChannelID);
43 }
chid m_ChannelID
Definition: epicsobject.h:48
int EpicsObject::debug ( )
void EpicsObject::disconnected ( )
virtual

Definition at line 59 of file epicsobject.cpp.

Referenced by connection_handler().

60 {
61 }
virtual caEventCallBackFunc* EpicsObject::get_event_handler ( )
privatepure virtual
EpicsObject& EpicsObject::operator= ( const EpicsObject copy)
private
QString EpicsObject::pvName ( )
void EpicsObject::setDebug ( int  dbg)

Definition at line 111 of file epicsobject.cpp.

References m_Debug.

112 {
113  m_Debug = dbg;
114 }
void EpicsObject::settle ( double  t)

Definition at line 116 of file epicsobject.cpp.

Referenced by BM12Controller::selectSCA().

117 {
118  ::ca_pend_event(t);
119 }
QString EpicsObject::toolTip ( )
void EpicsObject::valueChanged ( )
signal

Member Data Documentation

chid EpicsObject::m_ChannelID
protected
int EpicsObject::m_Debug
protected
evid EpicsObject::m_EventID
protected

Definition at line 49 of file epicsobject.h.

Referenced by EpicsEnumeration::connected(), EpicsDouble::connected(), and connected().

bool EpicsObject::m_HasEventHandler
protected

Definition at line 50 of file epicsobject.h.

Referenced by EpicsEnumeration::connected(), EpicsDouble::connected(), and connected().

QMutex EpicsObject::m_Mutex
static
QString EpicsObject::m_PVName
private

Definition at line 45 of file epicsobject.h.

Referenced by changeConnection(), pvName(), and toolTip().


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