mrfioc2  2.3.0
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
EVRMRMTSBuffer Struct Reference

#include <drvemTSBuffer.h>

Inheritance diagram for EVRMRMTSBuffer:
Inheritance graph
[legend]
Collaboration diagram for EVRMRMTSBuffer:
Collaboration graph
[legend]

Classes

struct  ebuf_t
 

Public Types

typedef mrf::ObjectInst< EVRMRMTSBufferbase_t
 
- Public Types inherited from mrf::Object
typedef m_obj_children_t::const_iterator child_iterator
 
typedef std::map< std::string, std::string > create_args_t
 
typedef Object *(* create_factory_t) (const std::string &name, const std::string &klass, const create_args_t &args)
 

Public Member Functions

 EVRMRMTSBuffer (const std::string &n, EVRMRM *evr)
 
virtual ~EVRMRMTSBuffer ()
 
virtual void lock () const OVERRIDE FINAL
 
virtual void unlock () const OVERRIDE FINAL
 
epicsUInt32 dropCount () const
 
epicsUInt16 timeEvent () const
 
void flushTimeSet (epicsUInt16 v)
 
epicsUInt16 flushEvent () const
 
void flushEventSet (epicsUInt16 v)
 
void flushNow ()
 
void doFlush ()
 
epicsUInt32 getTimesRelFirst (epicsInt32 *arr, epicsUInt32 count) const
 
epicsUInt32 getTimesRelFlush (epicsInt32 *arr, epicsUInt32 count) const
 
epicsUInt32 getTimesRelPrevFlush (epicsInt32 *arr, epicsUInt32 count) const
 
IOSCANPVT flushed () const
 
- Public Member Functions inherited from mrf::ObjectInst< EVRMRMTSBuffer >
virtual propertyBasegetPropertyBase (const char *pname, const std::type_info &ptype)
 
virtual void visitProperties (bool(*cb)(propertyBase *, void *), void *arg)
 
- Public Member Functions inherited from mrf::Object
const std::string & name () const
 
const Objectparent () const
 
child_iterator beginChild () const
 
child_iterator endChild () const
 
template<typename P >
mrf::auto_ptr< property< P > > getProperty (const char *pname)
 

Public Attributes

EVRMRM *const evr
 
epicsUInt32 dropped
 
IOSCANPVT scan
 
epicsUInt8 timeEvt
 
epicsUInt8 flushEvt
 
struct EVRMRMTSBuffer::ebuf_t ebufs [2]
 
unsigned char active
 

Additional Inherited Members

- Static Public Member Functions inherited from mrf::ObjectInst< EVRMRMTSBuffer >
static int initObject ()
 
- Static Public Member Functions inherited from mrf::Object
static ObjectgetObject (const std::string &name)
 
static ObjectgetCreateObject (const std::string &name, const std::string &klass, const create_args_t &args=create_args_t())
 
static void addFactory (const std::string &klass, create_factory_t fn)
 
static void visitObjects (bool(*)(Object *, void *), void *)
 
- Protected Member Functions inherited from mrf::ObjectInst< EVRMRMTSBuffer >
 ObjectInst (const std::string &n)
 
 ObjectInst (const std::string &n, A &a)
 
virtual ~ObjectInst ()
 
- Protected Member Functions inherited from mrf::Object
 Object (const std::string &n, const Object *par=0)
 
virtual ~Object ()=0
 

Detailed Description

Definition at line 18 of file drvemTSBuffer.h.

Member Typedef Documentation

◆ base_t

Definition at line 20 of file drvemTSBuffer.h.

Constructor & Destructor Documentation

◆ EVRMRMTSBuffer()

EVRMRMTSBuffer::EVRMRMTSBuffer ( const std::string &  n,
EVRMRM evr 
)
explicit

Definition at line 11 of file drvemTSBuffer.cpp.

12  :base_t(n)
13  ,evr(evr)
14  ,dropped(0u)
15  ,timeEvt(0u)
16  ,flushEvt(0u)
17  ,active(0u)
18 {
19  scanIoInit(&scan);
20 }
epicsUInt8 flushEvt
Definition: drvemTSBuffer.h:52
epicsUInt32 dropped
Definition: drvemTSBuffer.h:47
mrf::ObjectInst< EVRMRMTSBuffer > base_t
Definition: drvemTSBuffer.h:20
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
epicsUInt8 timeEvt
Definition: drvemTSBuffer.h:51
unsigned char active
Definition: drvemTSBuffer.h:70
IOSCANPVT scan
Definition: drvemTSBuffer.h:49

◆ ~EVRMRMTSBuffer()

EVRMRMTSBuffer::~EVRMRMTSBuffer ( )
virtual

Definition at line 22 of file drvemTSBuffer.cpp.

23 {
24 
25 }

Member Function Documentation

◆ doFlush()

void EVRMRMTSBuffer::doFlush ( )

Definition at line 86 of file drvemTSBuffer.cpp.

87 {
88  bool prevok = ebufs[active].ok;
89  epicsTimeStamp prevflushtime = ebufs[active].flushtime;
90 
91  active ^= 1u;
92 
93  ebufs[active].pos = 0u;
94  // a valid buffer requires timestamp validity at start and end flush
96  ebufs[active].drop = false;
97 
98  ebufs[active].prevok = prevok;
99  ebufs[active].prevflushtime = prevflushtime;
100 
101  scanIoRequest(scan);
102 }
epicsTimeStamp flushtime
Definition: drvemTSBuffer.h:57
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
epicsTimeStamp prevflushtime
Definition: drvemTSBuffer.h:57
unsigned char active
Definition: drvemTSBuffer.h:70
virtual bool TimeStampValid() const OVERRIDE FINAL
Definition: drvem.cpp:768
IOSCANPVT scan
Definition: drvemTSBuffer.h:49
struct EVRMRMTSBuffer::ebuf_t ebufs[2]

◆ dropCount()

epicsUInt32 EVRMRMTSBuffer::dropCount ( ) const
inline

Definition at line 28 of file drvemTSBuffer.h.

28 { return dropped; }
epicsUInt32 dropped
Definition: drvemTSBuffer.h:47

◆ flushed()

IOSCANPVT EVRMRMTSBuffer::flushed ( ) const
inline

Definition at line 43 of file drvemTSBuffer.h.

43 { return scan; }
IOSCANPVT scan
Definition: drvemTSBuffer.h:49

◆ flushEvent()

epicsUInt16 EVRMRMTSBuffer::flushEvent ( ) const
inline

Definition at line 33 of file drvemTSBuffer.h.

33 { return flushEvt; }
epicsUInt8 flushEvt
Definition: drvemTSBuffer.h:52

◆ flushEventSet()

void EVRMRMTSBuffer::flushEventSet ( epicsUInt16  v)

Definition at line 55 of file drvemTSBuffer.cpp.

56 {
57  if(v==flushEvt)
58  return;
59  if(v==timeEvt || v>0xff)
60  throw std::invalid_argument("Can't flush with capture code or >255");
61 
62  if(flushEvt) {
63  evr->events[flushEvt].tbufs.erase(this);
65  }
66  if(v) {
67  evr->interestedInEvent(v, true);
68  evr->events[v].tbufs.insert(this);
69  }
70  flushEvt = v;
71 }
epicsUInt8 flushEvt
Definition: drvemTSBuffer.h:52
virtual bool interestedInEvent(epicsUInt32 event, bool set) OVERRIDE FINAL
Definition: drvem.cpp:745
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
epicsUInt8 timeEvt
Definition: drvemTSBuffer.h:51
tbufs_t tbufs
Definition: drvem.h:63

◆ flushNow()

void EVRMRMTSBuffer::flushNow ( )

Definition at line 74 of file drvemTSBuffer.cpp.

75 {
76  if(epicsTimeGetCurrent(&ebufs[active].flushtime)) {
77  ebufs[active].flushtime.secPastEpoch = 0u;
78  ebufs[active].flushtime.nsec = 0u;
79  ebufs[active].ok = false;
80  ebufs[active].drop = false;
81  }
82 
83  doFlush();
84 }
epicsTimeStamp flushtime
Definition: drvemTSBuffer.h:57
unsigned char active
Definition: drvemTSBuffer.h:70
struct EVRMRMTSBuffer::ebuf_t ebufs[2]

◆ flushTimeSet()

void EVRMRMTSBuffer::flushTimeSet ( epicsUInt16  v)

Definition at line 37 of file drvemTSBuffer.cpp.

38 {
39  if(v==timeEvt)
40  return;
41  if(v==flushEvent() || v>0xff)
42  throw std::invalid_argument("Can't capture with flush code or >255");
43 
44  if(timeEvt) {
45  evr->events[timeEvt].tbufs.erase(this);
46  evr->interestedInEvent(timeEvt, false);
47  }
48  if(v) {
49  evr->interestedInEvent(v, true);
50  evr->events[v].tbufs.insert(this);
51  }
52  timeEvt = v;
53 }
virtual bool interestedInEvent(epicsUInt32 event, bool set) OVERRIDE FINAL
Definition: drvem.cpp:745
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
epicsUInt8 timeEvt
Definition: drvemTSBuffer.h:51
epicsUInt16 flushEvent() const
Definition: drvemTSBuffer.h:33
tbufs_t tbufs
Definition: drvem.h:63

◆ getTimesRelFirst()

epicsUInt32 EVRMRMTSBuffer::getTimesRelFirst ( epicsInt32 *  arr,
epicsUInt32  count 
) const

Definition at line 171 of file drvemTSBuffer.cpp.

172 {
173  return getTimes(this, arr, count, TimesRefEvt0);
174 }

◆ getTimesRelFlush()

epicsUInt32 EVRMRMTSBuffer::getTimesRelFlush ( epicsInt32 *  arr,
epicsUInt32  count 
) const

Definition at line 176 of file drvemTSBuffer.cpp.

177 {
178  return getTimes(this, arr, count, TimesRefFlush);
179 }

◆ getTimesRelPrevFlush()

epicsUInt32 EVRMRMTSBuffer::getTimesRelPrevFlush ( epicsInt32 *  arr,
epicsUInt32  count 
) const

Definition at line 181 of file drvemTSBuffer.cpp.

182 {
183  return getTimes(this, arr, count, TimesRefPrevFlush);
184 }

◆ lock()

void EVRMRMTSBuffer::lock ( ) const
virtual

Implements mrf::Object.

Definition at line 27 of file drvemTSBuffer.cpp.

28 {
29  evr->lock();
30 }
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
virtual void lock() const OVERRIDE FINAL
Definition: drvem.h:121

◆ timeEvent()

epicsUInt16 EVRMRMTSBuffer::timeEvent ( ) const
inline

Definition at line 30 of file drvemTSBuffer.h.

30 { return timeEvt; }
epicsUInt8 timeEvt
Definition: drvemTSBuffer.h:51

◆ unlock()

void EVRMRMTSBuffer::unlock ( ) const
virtual

Implements mrf::Object.

Definition at line 32 of file drvemTSBuffer.cpp.

33 {
34  evr->unlock();
35 }
EVRMRM *const evr
Definition: drvemTSBuffer.h:45
virtual void unlock() const OVERRIDE FINAL
Definition: drvem.h:122

Member Data Documentation

◆ active

unsigned char EVRMRMTSBuffer::active

Definition at line 70 of file drvemTSBuffer.h.

◆ dropped

epicsUInt32 EVRMRMTSBuffer::dropped

Definition at line 47 of file drvemTSBuffer.h.

◆ ebufs

struct EVRMRMTSBuffer::ebuf_t EVRMRMTSBuffer::ebufs[2]

◆ evr

EVRMRM* const EVRMRMTSBuffer::evr

Definition at line 45 of file drvemTSBuffer.h.

◆ flushEvt

epicsUInt8 EVRMRMTSBuffer::flushEvt

Definition at line 52 of file drvemTSBuffer.h.

◆ scan

IOSCANPVT EVRMRMTSBuffer::scan

Definition at line 49 of file drvemTSBuffer.h.

◆ timeEvt

epicsUInt8 EVRMRMTSBuffer::timeEvt

Definition at line 51 of file drvemTSBuffer.h.


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