This is Unofficial EPICS BASE Doxygen Site
dbdToPv.h
Go to the documentation of this file.
1 
10 #ifndef DbdToPv_H
11 #define DbdToPv_H
12 
13 #include <shareLib.h>
14 #include <pv/pvAccess.h>
15 #include <cadef.h>
16 #include <pv/event.h>
17 #include "caChannel.h"
18 
19 namespace epics {
20 namespace pvAccess {
21 namespace ca {
22 
24 
25 class AlarmDbd;
26 typedef std::tr1::shared_ptr<AlarmDbd> AlarmDbdPtr;
27 class TimeStampDbd;
28 typedef std::tr1::shared_ptr<TimeStampDbd> TimeStampDbdPtr;
29 class DisplayDbd;
30 typedef std::tr1::shared_ptr<DisplayDbd> DisplayDbdPtr;
31 class ControlDbd;
32 typedef std::tr1::shared_ptr<ControlDbd> ControlDbdPtr;
33 class ValueAlarmDbd;
34 typedef std::tr1::shared_ptr<ValueAlarmDbd> ValueAlarmDbdPtr;
35 
36 struct CaAlarm
37 {
40  CaAlarm() : status(0), severity(0) {}
41 };
42 
43 struct CaDisplay
44 {
47  std::string units;
48  std::string format;
49  CaDisplay() : lower_disp_limit(0),upper_disp_limit(0) {}
50 };
51 
52 struct CaControl
53 {
56  CaControl() : upper_ctrl_limit(0),lower_ctrl_limit(0) {}
57 };
58 
60 {
66  upper_alarm_limit(0),
67  upper_warning_limit(0),
68  lower_warning_limit(0),
69  lower_alarm_limit(0)
70  {}
71 };
72 
73 class DbdToPv;
74 typedef std::tr1::shared_ptr<DbdToPv> DbdToPvPtr;
75 
76 typedef void ( caCallbackFunc ) (struct event_handler_args);
77 
83 class DbdToPv
84 {
85 public:
87  static DbdToPvPtr create(
88  CAChannelPtr const & caChannel,
89  epics::pvData::PVStructurePtr const & pvRequest,
90  IOType ioType
91  );
92  epics::pvData::Structure::const_shared_pointer getStructure();
93  void getChoices(CAChannelPtr const & caChannel);
94  epics::pvData::PVStructurePtr createPVStructure();
95  chtype getRequestType();
96  epics::pvData::Status getFromDBD(
97  epics::pvData::PVStructurePtr const & pvStructure,
98  epics::pvData::BitSet::shared_pointer const & bitSet,
99  struct event_handler_args &args
100  );
101  epics::pvData::Status putToDBD(
102  CAChannelPtr const & caChannel,
103  epics::pvData::PVStructurePtr const & pvStructure,
104  bool block,
105  caCallbackFunc putHandler,
106  void *userArg
107  );
108  void getChoicesDone(struct event_handler_args &args);
109 private:
110  DbdToPv(IOType ioType);
111  void activate(
112  CAChannelPtr const & caChannel,
113  epics::pvData::PVStructurePtr const & pvRequest
114  );
115  IOType ioType;
116  bool dbfIsUCHAR;
117  bool dbfIsUSHORT;
118  bool dbfIsULONG;
119  bool dbfIsINT64;
120  bool dbfIsUINT64;
121  bool valueRequested;
122  bool alarmRequested;
123  bool timeStampRequested;
124  bool displayRequested;
125  bool controlRequested;
126  bool valueAlarmRequested;
127  bool isArray;
128  bool charArrayIsString;
129  bool firstTime;
130  chtype caValueType;
131  chtype caRequestType;
132  unsigned long maxElements;
133  epics::pvData::Event choicesEvent;
134  epicsTimeStamp caTimeStamp;
135  CaAlarm caAlarm;
136  CaDisplay caDisplay;
137  CaControl caControl;
138  CaValueAlarm caValueAlarm;
139  epics::pvData::Structure::const_shared_pointer structure;
140  std::vector<std::string> choices;
141  epics::pvData::PVDoubleArrayPtr pvDoubleArray; //for dbfIsINT64 and dbfIsUINT64
142 };
143 
144 }
145 }
146 }
147 
148 #endif /* DbdToPv_H */
C++ wrapper for epicsEvent from EPICS base.
Definition: event.h:31
std::tr1::shared_ptr< ValueAlarmDbd > ValueAlarmDbdPtr
Definition: dbdToPv.h:33
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
Mark external symbols and entry points for shared libraries.
std::tr1::shared_ptr< CAChannel > CAChannelPtr
Definition: caChannel.h:31
#define POINTER_DEFINITIONS(clazz)
Definition: sharedPtr.h:198
std::tr1::shared_ptr< TimeStampDbd > TimeStampDbdPtr
Definition: dbdToPv.h:27
std::tr1::shared_ptr< AlarmDbd > AlarmDbdPtr
Definition: dbdToPv.h:25
DbdToPv converts between DBD data and pvData.
Definition: dbdToPv.h:83
void( caCallbackFunc)(struct event_handler_args)
Definition: dbdToPv.h:76
std::tr1::shared_ptr< PVStructure > PVStructurePtr
Definition: pvData.h:87
std::tr1::shared_ptr< DisplayDbd > DisplayDbdPtr
Definition: dbdToPv.h:29
long chtype
Definition: cadef.h:47
EPICS time stamp, for use from C code.
Definition: epicsTime.h:33
std::tr1::shared_ptr< DbdToPv > DbdToPvPtr
Definition: dbdToPv.h:73
epicsInt16 dbr_short_t
Definition: db_access.h:40
std::tr1::shared_ptr< PVDoubleArray > PVDoubleArrayPtr
Definition: pvData.h:1461
std::tr1::shared_ptr< ControlDbd > ControlDbdPtr
Definition: dbdToPv.h:31