mrfioc2  2.3.0
Classes | Macros | Functions | Variables
evrGTIF.cpp File Reference
#include <epicsTypes.h>
#include <epicsTime.h>
#include <stdexcept>
#include <errlog.h>
#include <epicsMutex.h>
#include <epicsGuard.h>
#include <epicsVersion.h>
#include <initHooks.h>
#include <epicsExport.h>
#include "mrf/object.h"
#include "evr/evr.h"
#include "evrGTIF.h"
#include <generalTimeSup.h>
Include dependency graph for evrGTIF.cpp:

Go to the source code of this file.

Classes

struct  priv
 

Macros

#define S_time_unsynchronized   epicsTimeERROR
 

Functions

epicsShareFunc int EVRInitTime ()
 
int EVREventTime (epicsTimeStamp *pDest, int event)
 
int EVRCurrentTime (epicsTimeStamp *pDest)
 
void EVRTime_Registrar ()
 
 epicsExportRegistrar (EVRTime_Registrar)
 
 epicsExportAddress (int, mrmGTIFEnable)
 

Variables

int mrmGTIFEnable = 1
 

Macro Definition Documentation

◆ S_time_unsynchronized

#define S_time_unsynchronized   epicsTimeERROR

Definition at line 30 of file evrGTIF.cpp.

Function Documentation

◆ epicsExportAddress()

epicsExportAddress ( int  ,
mrmGTIFEnable   
)

◆ epicsExportRegistrar()

epicsExportRegistrar ( EVRTime_Registrar  )

◆ EVRCurrentTime()

int EVRCurrentTime ( epicsTimeStamp *  pDest)

Definition at line 95 of file evrGTIF.cpp.

96 {
97  return EVREventTime(pDest, epicsTimeEventCurrentTime);
98 }
int EVREventTime(epicsTimeStamp *pDest, int event)
Definition: evrGTIF.cpp:72

◆ EVREventTime()

int EVREventTime ( epicsTimeStamp *  pDest,
int  event 
)

Definition at line 72 of file evrGTIF.cpp.

73 {
74 try {
75  epicsMutexMustLock(lastLock);
76 
77  if(lastSrc) {
78  if(lastSrc->getTimeStamp(pDest, event)) {
79  epicsMutexUnlock(lastLock);
80  return epicsTimeOK;
81  }
82  }
83  priv p(pDest, event);
84  mrf::Object::visitObjects(&visitTime, (void*)&p);
85  epicsMutexUnlock(lastLock);
86  return p.ok;
87 } catch (std::exception& e) {
88  epicsMutexUnlock(lastLock);
89  epicsPrintf("EVREventTime failed: %s\n", e.what());
90  return S_time_unsynchronized;
91 }
92 }
static void visitObjects(bool(*)(Object *, void *), void *)
Definition: object.cpp:150
#define S_time_unsynchronized
Definition: evrGTIF.cpp:30
virtual bool getTimeStamp(epicsTimeStamp *ts, epicsUInt32 event)=0

◆ EVRInitTime()

epicsShareFunc int EVRInitTime ( )

Definition at line 45 of file evrGTIF.cpp.

46 {
47  if(lastLock)
48  return 0;
49 
50  lastLock = epicsMutexMustCreate();
51  return 0;
52 }

◆ EVRTime_Registrar()

void EVRTime_Registrar ( )

Definition at line 128 of file evrGTIF.cpp.

129 {
130  initHookRegister(&EVRTime_Hooks);
131 }

Variable Documentation

◆ mrmGTIFEnable

int mrmGTIFEnable = 1

Definition at line 100 of file evrGTIF.cpp.