mrfioc2  2.3.0
Public Member Functions | Public Attributes | List of all members
TimeStampSource::Impl Struct Reference
Collaboration diagram for TimeStampSource::Impl:
Collaboration graph
[legend]

Public Member Functions

 Impl (TimeStampSource *owner, double period)
 
 ~Impl ()
 
void runTimeout ()
 

Public Attributes

TimeStampSource *const owner
 
epicsMutex mutex
 
epicsEvent wakeup
 
epicsThreadRunableMethod< Impl, &Impl::runTimeouttimeoutRun
 
mrf::auto_ptr< epicsThread > timeout
 
bool stop
 
bool resync
 
unsigned okCnt
 
double lastError
 
const double period
 
epicsUInt32 next
 

Detailed Description

Definition at line 31 of file mrmtimesrc.cpp.

Constructor & Destructor Documentation

◆ Impl()

TimeStampSource::Impl::Impl ( TimeStampSource owner,
double  period 
)
inline

Definition at line 34 of file mrmtimesrc.cpp.

35  :owner(owner)
36  ,timeoutRun(*this)
37 #ifdef HAVE_CNS
38  ,softsrcRun(*this)
39  ,stopsrc(true)
40 #endif
41  ,stop(false)
42  ,resync(true)
43  ,okCnt(0u)
44  ,lastError(-1.0)
45  ,period(period*1.1) // our timeout period is 10% longer than the expected reset period
46  ,next(0u)
47  {}
TimeStampSource *const owner
Definition: mrmtimesrc.cpp:33
epicsThreadRunableMethod< Impl, &Impl::runTimeout > timeoutRun
Definition: mrmtimesrc.cpp:124

◆ ~Impl()

TimeStampSource::Impl::~Impl ( )
inline

Definition at line 48 of file mrmtimesrc.cpp.

49  {
50  {
51  Guard G(mutex);
52  stop = true;
53  }
54  wakeup.signal();
55  if(timeout.get()) timeout->exitWait();
56  }
mrf::auto_ptr< epicsThread > timeout
Definition: mrmtimesrc.cpp:125
epicsGuard< epicsMutex > Guard
Definition: mrmtimesrc.cpp:28

Member Function Documentation

◆ runTimeout()

void TimeStampSource::Impl::runTimeout ( )
inline

Definition at line 68 of file mrmtimesrc.cpp.

69  {
70  Guard G(mutex);
71 
72  while(!stop) {
73  bool ok;
74  {
75  UnGuard U(G);
76  ok = wakeup.wait(1.1); // false == timeout
77  }
78  if(ok && okCnt<5) {
79  okCnt++;
80  } else if(!ok) {
81  okCnt = 0u;
82  }
83  }
84  }
epicsGuardRelease< epicsMutex > UnGuard
Definition: mrmtimesrc.cpp:29
epicsGuard< epicsMutex > Guard
Definition: mrmtimesrc.cpp:28

Member Data Documentation

◆ lastError

double TimeStampSource::Impl::lastError

Definition at line 137 of file mrmtimesrc.cpp.

◆ mutex

epicsMutex TimeStampSource::Impl::mutex

Definition at line 122 of file mrmtimesrc.cpp.

◆ next

epicsUInt32 TimeStampSource::Impl::next

Definition at line 140 of file mrmtimesrc.cpp.

◆ okCnt

unsigned TimeStampSource::Impl::okCnt

Definition at line 136 of file mrmtimesrc.cpp.

◆ owner

TimeStampSource* const TimeStampSource::Impl::owner

Definition at line 33 of file mrmtimesrc.cpp.

◆ period

const double TimeStampSource::Impl::period

Definition at line 138 of file mrmtimesrc.cpp.

◆ resync

bool TimeStampSource::Impl::resync

Definition at line 135 of file mrmtimesrc.cpp.

◆ stop

bool TimeStampSource::Impl::stop

Definition at line 134 of file mrmtimesrc.cpp.

◆ timeout

mrf::auto_ptr<epicsThread> TimeStampSource::Impl::timeout

Definition at line 125 of file mrmtimesrc.cpp.

◆ timeoutRun

epicsThreadRunableMethod<Impl, &Impl::runTimeout> TimeStampSource::Impl::timeoutRun

Definition at line 124 of file mrmtimesrc.cpp.

◆ wakeup

epicsEvent TimeStampSource::Impl::wakeup

Definition at line 123 of file mrmtimesrc.cpp.


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