10 #include <pv/bitSet.h> 11 #include <pv/convert.h> 12 #include <pv/pvTimeStamp.h> 13 #define epicsExportSharedSymbols 22 using std::tr1::static_pointer_cast;
26 namespace epics {
namespace pvCopy{
28 static ConvertPtr convert = getConvert();
29 static std::string name(
"timestamp");
31 PVTimestampPlugin::PVTimestampPlugin()
35 PVTimestampPlugin::~PVTimestampPlugin()
39 void PVTimestampPlugin::create()
41 static bool firstTime =
true;
45 PVPluginRegistry::registerPlugin(name,pvPlugin);
50 const std::string & requestValue,
52 const PVFieldPtr & master)
54 return PVTimestampFilter::create(requestValue,master);
57 PVTimestampFilter::~PVTimestampFilter()
63 const std::string & requestValue,
64 const PVFieldPtr & master)
66 PVTimeStamp pvTimeStamp;
70 if(requestValue.compare(
"current")==0) {
72 }
else if(requestValue.compare(
"copy")==0){
82 PVTimestampFilter::PVTimestampFilter(
bool current,
bool copy,PVFieldPtr
const & master)
90 bool PVTimestampFilter::filter(
const PVFieldPtr & pvCopy,
const BitSetPtr & bitSet,
bool toCopy)
93 timeStamp.getCurrent();
95 if(!pvTimeStamp.attach(pvCopy))
return false;
97 if(!pvTimeStamp.attach(master))
return false;
99 pvTimeStamp.set(timeStamp);
100 bitSet->set(pvCopy->getFieldOffset());
105 if(!pvTimeStamp.attach(master))
return false;
106 pvTimeStamp.get(timeStamp);
107 if(!pvTimeStamp.attach(pvCopy))
return false;
108 pvTimeStamp.set(timeStamp);
109 bitSet->set(pvCopy->getFieldOffset());
111 if(!pvTimeStamp.attach(pvCopy))
return false;
112 pvTimeStamp.get(timeStamp);
113 if(!pvTimeStamp.attach(master))
return false;
114 pvTimeStamp.set(timeStamp);
121 string PVTimestampFilter::getName()
A plugin for a filter that sets a timeStamp to the current time.
std::tr1::shared_ptr< PVFilter > PVFilterPtr
std::tr1::shared_ptr< PVCopy > PVCopyPtr
A filter that sets a timeStamp to/from the current field or pvCopy.
std::tr1::shared_ptr< PVTimestampPlugin > PVTimestampPluginPtr
std::tr1::shared_ptr< PVTimestampFilter > PVTimestampFilterPtr