6 #ifndef NTMULTICHANNEL_H 7 #define NTMULTICHANNEL_H 12 #ifdef epicsExportSharedSymbols 13 # define ntmultiChannelEpicsExportSharedSymbols 14 # undef epicsExportSharedSymbols 17 #include <pv/pvDisplay.h> 18 #include <pv/pvControl.h> 20 #ifdef ntmultiChannelEpicsExportSharedSymbols 21 # define epicsExportSharedSymbols 22 # undef ntmultiChannelEpicsExportSharedSymbols 30 namespace epics {
namespace nt {
46 public std::tr1::enable_shared_from_this<NTMultiChannelBuilder>
55 shared_pointer value(epics::pvData::UnionConstPtr valuePtr);
61 shared_pointer addDescriptor();
67 shared_pointer addAlarm();
73 shared_pointer addTimeStamp();
79 shared_pointer addSeverity();
85 shared_pointer addStatus();
91 shared_pointer addMessage();
97 shared_pointer addSecondsPastEpoch();
103 shared_pointer addNanoseconds();
109 shared_pointer addUserTag();
115 shared_pointer addIsConnected();
122 epics::pvData::StructureConstPtr createStructure();
129 epics::pvData::PVStructurePtr createPVStructure();
136 NTMultiChannelPtr create();
144 shared_pointer add(std::string
const & name, epics::pvData::FieldConstPtr
const & field);
151 epics::pvData::UnionConstPtr valueType;
158 bool secondsPastEpoch;
164 epics::pvData::StringArray extraFieldNames;
165 epics::pvData::FieldConstPtrArray extraFields;
167 friend class ::epics::nt::NTMultiChannel;
186 static const std::string
URI;
199 static shared_pointer wrap(epics::pvData::PVStructurePtr
const & pvStructure);
210 static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr
const & pvStructure);
223 static bool is_a(epics::pvData::StructureConstPtr
const & structure);
236 static bool is_a(epics::pvData::PVStructurePtr
const & pvStructure);
247 static bool isCompatible(
248 epics::pvData::StructureConstPtr
const &structure);
259 static bool isCompatible(
260 epics::pvData::PVStructurePtr
const &pvStructure);
277 static NTMultiChannelBuilderPtr createBuilder();
289 bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp)
const;
297 bool attachAlarm(epics::pvData::PVAlarm &pvAlarm)
const;
304 {
return pvNTMultiChannel;}
311 {
return pvDescriptor;}
318 {
return pvTimeStamp;}
339 {
return pvChannelName;};
346 {
return pvIsConnected;};
374 {
return pvSecondsPastEpoch;}
381 {
return pvNanoseconds;}
391 NTMultiChannel(epics::pvData::PVStructurePtr
const & pvStructure);
392 epics::pvData::PVStructurePtr pvNTMultiChannel;
393 epics::pvData::PVStructurePtr pvTimeStamp;
394 epics::pvData::PVStructurePtr pvAlarm;
395 epics::pvData::PVUnionArrayPtr pvValue;
396 epics::pvData::PVStringArrayPtr pvChannelName;
397 epics::pvData::PVBooleanArrayPtr pvIsConnected;
398 epics::pvData::PVIntArrayPtr pvSeverity;
399 epics::pvData::PVIntArrayPtr pvStatus;
400 epics::pvData::PVStringArrayPtr pvMessage;
401 epics::pvData::PVLongArrayPtr pvSecondsPastEpoch;
402 epics::pvData::PVIntArrayPtr pvNanoseconds;
403 epics::pvData::PVIntArrayPtr pvUserTag;
404 epics::pvData::PVStringPtr pvDescriptor;
epics::pvData::PVStringArrayPtr getChannelName() const
epics::pvData::PVIntArrayPtr getUserTag() const
epics::pvData::PVIntArrayPtr getSeverity() const
epics::pvData::PVStringPtr getDescriptor() const
Interface for in-line creating of NTMultiChannel.
epics::pvData::PVBooleanArrayPtr getIsConnected() const
epics::pvData::PVStructurePtr getAlarm() const
epics::pvData::PVStringArrayPtr getMessage() const
epics::pvData::PVUnionArrayPtr getValue() const
epics::pvData::PVStructurePtr getPVStructure() const
Convenience Class for NTMultiChannel.
static const std::string URI
std::tr1::shared_ptr< NTMultiChannel > NTMultiChannelPtr
epics::pvData::PVIntArrayPtr getStatus() const
epics::pvData::PVLongArrayPtr getSecondsPastEpoch() const
std::tr1::shared_ptr< detail::NTMultiChannelBuilder > NTMultiChannelBuilderPtr
epics::pvData::PVIntArrayPtr getNanoseconds() const
epics::pvData::PVStructurePtr getTimeStamp() const