mrfioc2  2.3.0
Public Types | Public Member Functions | List of all members
MRMCML Class Reference

#include <drvemCML.h>

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

Public Types

enum  outkind { typeCML, typeTG300, typeTG203 }
 
- Public Types inherited from CML
enum  pattern {
  patternWaveform, patternRise, patternHigh, patternFall,
  patternLow
}
 
- 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

 MRMCML (const std::string &, unsigned char, EVRMRM &, outkind, formFactor)
 
virtual ~MRMCML ()
 
virtual void lock () const OVERRIDE FINAL
 
virtual void unlock () const OVERRIDE FINAL
 
virtual cmlMode mode () const OVERRIDE FINAL
 
virtual void setMode (cmlMode) OVERRIDE FINAL
 
virtual bool enabled () const OVERRIDE FINAL
 
virtual void enable (bool) OVERRIDE FINAL
 
virtual bool inReset () const OVERRIDE FINAL
 
virtual void reset (bool) OVERRIDE FINAL
 
virtual bool powered () const OVERRIDE FINAL
 
virtual void power (bool) OVERRIDE FINAL
 
virtual epicsUInt32 freqMultiple () const OVERRIDE FINAL
 Speed of CML clock as a multiple of the event clock. More...
 
virtual double fineDelay () const OVERRIDE FINAL
 delay by fraction of one event clock period. Units of sec More...
 
virtual void setFineDelay (double) OVERRIDE FINAL
 
virtual bool polarityInvert () const OVERRIDE FINAL
 Trigger level. More...
 
virtual void setPolarityInvert (bool) OVERRIDE FINAL
 
virtual epicsUInt32 countHigh () const OVERRIDE FINAL
 
virtual epicsUInt32 countLow () const OVERRIDE FINAL
 
virtual epicsUInt32 countInit () const OVERRIDE FINAL
 
virtual void setCountHigh (epicsUInt32) OVERRIDE FINAL
 
virtual void setCountLow (epicsUInt32) OVERRIDE FINAL
 
virtual void setCountInit (epicsUInt32) OVERRIDE FINAL
 
virtual double timeHigh () const OVERRIDE FINAL
 
virtual double timeLow () const OVERRIDE FINAL
 
virtual double timeInit () const OVERRIDE FINAL
 
virtual void setTimeHigh (double) OVERRIDE FINAL
 
virtual void setTimeLow (double) OVERRIDE FINAL
 
virtual void setTimeInit (double) OVERRIDE FINAL
 
virtual bool recyclePat () const OVERRIDE FINAL
 
virtual void setRecyclePat (bool) OVERRIDE FINAL
 
virtual epicsUInt32 lenPattern (pattern) const OVERRIDE FINAL
 
virtual epicsUInt32 lenPatternMax (pattern) const OVERRIDE FINAL
 
virtual epicsUInt32 getPattern (pattern, unsigned char *, epicsUInt32) const OVERRIDE FINAL
 
virtual void setPattern (pattern, const unsigned char *, epicsUInt32) OVERRIDE FINAL
 
- Public Member Functions inherited from CML
 CML (const std::string &n)
 
virtual ~CML ()=0
 
template<pattern P>
epicsUInt32 lenPattern () const
 
template<pattern P>
epicsUInt32 lenPatternMax () const
 
template<pattern P>
epicsUInt32 getPattern (unsigned char *b, epicsUInt32 l) const
 
template<pattern P>
void setPattern (const unsigned char *b, epicsUInt32 l)
 
void setModRaw (epicsUInt16 r)
 
epicsUInt16 modeRaw () const
 
- Public Member Functions inherited from mrf::ObjectInst< CML >
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)
 

Additional Inherited Members

- Static Public Member Functions inherited from mrf::ObjectInst< CML >
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< CML >
 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 20 of file drvemCML.h.

Member Enumeration Documentation

◆ outkind

Enumerator
typeCML 
typeTG300 
typeTG203 

Definition at line 23 of file drvemCML.h.

Constructor & Destructor Documentation

◆ MRMCML()

MRMCML::MRMCML ( const std::string &  n,
unsigned char  i,
EVRMRM o,
outkind  k,
formFactor  f 
)

Definition at line 25 of file drvemCML.cpp.

26  :CML(n)
27  // CML word length
28  ,mult(f==formFactor_CPCIFULL || f==formFactor_mTCA ? 40 : 20)
29  // # of 32-bit dwords used to store 1 CML word
30  // 40 bits fit in 2 dwords, 20 bits fit in 1
31  ,wordlen(f==formFactor_CPCIFULL || f==formFactor_mTCA ? 2 : 1)
32  ,base(o.base)
33  ,N(i)
34  ,owner(o)
35  ,shadowEnable(0)
36  ,shadowWaveformlength(0)
37  ,kind(k)
38 {
39  epicsUInt32 val=READ32(base, OutputCMLEna(N));
40 
42 
43  switch(kind) {
44  case typeCML: break;
45  case typeTG203: val|=OutputCMLEna_type_203; break;
46  case typeTG300: val|=OutputCMLEna_type_300; break;
47  default:
48  throw std::invalid_argument("Invalid CML kind");
49  }
50 
51  for(size_t i=0; i<NELEMENTS(shadowPattern); i++) {
52  epicsUInt32 L = wordlen * (lenPatternMax((pattern)i)/mult);
53  shadowPattern[i] = new epicsUInt32[L];
54  std::fill(shadowPattern[i], shadowPattern[i]+L, 0);
55  }
56 
57  shadowEnable=val;
58 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
volatile unsigned char *const base
Definition: drvem.h:223
epicsUInt32 lenPatternMax() const
Definition: cml.h:94
#define OutputCMLEna_type_203
Definition: evrRegMap.h:298
pattern
Definition: cml.h:28
#define OutputCMLEna_type_300
Definition: evrRegMap.h:297
#define OutputCMLEna_type_mask
Definition: evrRegMap.h:296
CML(const std::string &n)
Definition: cml.h:36

◆ ~MRMCML()

MRMCML::~MRMCML ( )
virtual

Definition at line 60 of file drvemCML.cpp.

61 {
62  for(size_t i=0; i<NELEMENTS(shadowPattern); i++)
63  delete[] shadowPattern[i];
64 }

Member Function Documentation

◆ countHigh()

epicsUInt32 MRMCML::countHigh ( ) const
virtual

Implements CML.

Definition at line 210 of file drvemCML.cpp.

211 {
212  epicsUInt32 val = READ32(base, OutputCMLCount(N));
213  val >>= OutputCMLCount_high_shft;
214  return val & OutputCMLCount_mask;
215 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
#define OutputCMLCount_mask
Definition: evrRegMap.h:312
#define OutputCMLCount_high_shft
Definition: evrRegMap.h:313

◆ countInit()

epicsUInt32 MRMCML::countInit ( ) const
virtual

Implements CML.

Definition at line 227 of file drvemCML.cpp.

228 {
229  epicsUInt32 v = shadowEnable & OutputCMLEna_ftrig_mask;
230  return v >> OutputCMLEna_ftrig_shft;
231 }
#define OutputCMLEna_ftrig_shft
Definition: evrRegMap.h:295
#define OutputCMLEna_ftrig_mask
Definition: evrRegMap.h:294

◆ countLow()

epicsUInt32 MRMCML::countLow ( ) const
virtual

Implements CML.

Definition at line 218 of file drvemCML.cpp.

219 {
220  epicsUInt32 val = READ32(base, OutputCMLCount(N));
221  val >>= OutputCMLCount_low_shft;
222  return val & OutputCMLCount_mask;
223 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
#define OutputCMLCount_mask
Definition: evrRegMap.h:312
#define OutputCMLCount_low_shft
Definition: evrRegMap.h:314

◆ enable()

void MRMCML::enable ( bool  s)
virtual

Implements CML.

Definition at line 132 of file drvemCML.cpp.

133 {
134  if(s)
135  shadowEnable |= OutputCMLEna_ena;
136  else
137  shadowEnable &= ~OutputCMLEna_ena;
138  WRITE32(base, OutputCMLEna(N), shadowEnable);
139 }
#define OutputCMLEna_ena
Definition: evrRegMap.h:310
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ enabled()

bool MRMCML::enabled ( ) const
virtual

Implements CML.

Definition at line 126 of file drvemCML.cpp.

127 {
128  return shadowEnable&OutputCMLEna_ena;
129 }
#define OutputCMLEna_ena
Definition: evrRegMap.h:310

◆ fineDelay()

double MRMCML::fineDelay ( ) const
virtual

delay by fraction of one event clock period. Units of sec

Implements CML.

Definition at line 174 of file drvemCML.cpp.

175 {
176  // The GTX output fine delay is an external chip
177  // and not related to the clock frequency.
178  // So just scale it to [0, 1) and use ESLO for the
179  // actual calibration
180  return READ32(base, GTXDelay(N))/1024.0;
181 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114

◆ freqMultiple()

virtual epicsUInt32 MRMCML::freqMultiple ( ) const
inlinevirtual

Speed of CML clock as a multiple of the event clock.

Implements CML.

Definition at line 43 of file drvemCML.h.

43 {return mult;}

◆ getPattern()

epicsUInt32 MRMCML::getPattern ( pattern  p,
unsigned char *  buf,
epicsUInt32  blen 
) const
virtual

Implements CML.

Definition at line 351 of file drvemCML.cpp.

352 {
353  epicsUInt32 plen=lenPattern(p);
354 
355  // number of bytes of 'buf' to fill
356  blen = std::min(plen, blen);
357 
358  epicsUInt32 val=0;
359  for(epicsUInt32 i=0; i<blen; i++) {
360  size_t cmlword = (i/mult);
361  size_t cmlbit = (i%mult);
362 
363  size_t cpuword, cpubit;
364  bool first; // first bit in CPU word
365 
366  if(mult<32) {
367  first = cmlbit==0;
368  cpuword = cmlword;
369  cpubit = 19 - cmlbit;
370  } else {
371  first = cmlbit==0 || cmlbit==8;
372  cpuword = 2*cmlword + (cmlbit<8 ? 0 : 1);
373  cpubit = cmlbit<8 ? 7-cmlbit : 31-(cmlbit-8);
374  }
375 
376  if(first) {
377  val=shadowPattern[p][cpuword];
378  }
379 
380  buf[i]=val>>cpubit;
381  buf[i]&=0x1;
382 
383  }
384  return blen;
385 }
epicsUInt32 lenPattern() const
Definition: cml.h:92

◆ inReset()

bool MRMCML::inReset ( ) const
virtual

Implements CML.

Definition at line 142 of file drvemCML.cpp.

143 {
144  return (shadowEnable & OutputCMLEna_rst) != 0;
145 }
#define OutputCMLEna_rst
Definition: evrRegMap.h:308

◆ lenPattern()

epicsUInt32 MRMCML::lenPattern ( pattern  p) const
virtual

Implements CML.

Definition at line 333 of file drvemCML.cpp.

334 {
335  if(p==patternWaveform)
336  return mult*shadowWaveformlength;
337  else
338  return mult;
339 }

◆ lenPatternMax()

epicsUInt32 MRMCML::lenPatternMax ( pattern  p) const
virtual

Implements CML.

Definition at line 342 of file drvemCML.cpp.

343 {
344  if(p==patternWaveform)
345  return mult*OutputCMLPatLengthMax;
346  else
347  return mult;
348 }
#define OutputCMLPatLengthMax
Definition: evrRegMap.h:316

◆ lock()

void MRMCML::lock ( ) const
virtual

Implements mrf::Object.

Definition at line 66 of file drvemCML.cpp.

66 {owner.lock();};
virtual void lock() const OVERRIDE FINAL
Definition: drvem.h:121

◆ mode()

cmlMode MRMCML::mode ( ) const
virtual

Implements CML.

Definition at line 70 of file drvemCML.cpp.

71 {
72  switch(shadowEnable&OutputCMLEna_mode_mask) {
74  return cmlModeOrig;
76  return cmlModeFreq;
78  return cmlModePattern;
79  default:
80  return cmlModeInvalid;
81  }
82 }
#define OutputCMLEna_mode_mask
Definition: evrRegMap.h:304
#define OutputCMLEna_mode_patt
Definition: evrRegMap.h:307
#define OutputCMLEna_mode_freq
Definition: evrRegMap.h:306
#define OutputCMLEna_mode_orig
Definition: evrRegMap.h:305

◆ polarityInvert()

bool MRMCML::polarityInvert ( ) const
virtual

Trigger level.

Implements CML.

Definition at line 204 of file drvemCML.cpp.

205 {
206  return (shadowEnable & OutputCMLEna_ftrg) != 0;
207 }
#define OutputCMLEna_ftrg
Definition: evrRegMap.h:303

◆ power()

void MRMCML::power ( bool  s)
virtual

Implements CML.

Definition at line 164 of file drvemCML.cpp.

165 {
166  if(!s)
167  shadowEnable |= OutputCMLEna_pow;
168  else
169  shadowEnable &= ~OutputCMLEna_pow;
170  WRITE32(base, OutputCMLEna(N), shadowEnable);
171 }
#define OutputCMLEna_pow
Definition: evrRegMap.h:309
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ powered()

bool MRMCML::powered ( ) const
virtual

Implements CML.

Definition at line 158 of file drvemCML.cpp.

159 {
160  return !(shadowEnable & OutputCMLEna_pow);
161 }
#define OutputCMLEna_pow
Definition: evrRegMap.h:309

◆ recyclePat()

bool MRMCML::recyclePat ( ) const
virtual

Implements CML.

Definition at line 317 of file drvemCML.cpp.

318 {
319  return (shadowEnable & OutputCMLEna_cycl) != 0;
320 }
#define OutputCMLEna_cycl
Definition: evrRegMap.h:302

◆ reset()

void MRMCML::reset ( bool  s)
virtual

Implements CML.

Definition at line 148 of file drvemCML.cpp.

149 {
150  if(s)
151  shadowEnable |= OutputCMLEna_rst;
152  else
153  shadowEnable &= ~OutputCMLEna_rst;
154  WRITE32(base, OutputCMLEna(N), shadowEnable);
155 }
#define OutputCMLEna_rst
Definition: evrRegMap.h:308
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setCountHigh()

void MRMCML::setCountHigh ( epicsUInt32  v)
virtual

Implements CML.

Definition at line 234 of file drvemCML.cpp.

235 {
236  v = std::max(kind==typeTG300?40u:20u, std::min(v, 65535u));
237 
238  epicsUInt32 val = READ32(base, OutputCMLCount(N));
240  val |= v << OutputCMLCount_high_shft;
241  WRITE32(base, OutputCMLCount(N), val);
242 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
#define OutputCMLCount_mask
Definition: evrRegMap.h:312
#define OutputCMLCount_high_shft
Definition: evrRegMap.h:313
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setCountInit()

void MRMCML::setCountInit ( epicsUInt32  v)
virtual

Implements CML.

Definition at line 256 of file drvemCML.cpp.

257 {
258  v = std::min(v, 65535u);
259 
261  shadowEnable &= ~OutputCMLEna_ftrig_mask;
262  shadowEnable |= v;
263  WRITE32(base, OutputCMLEna(N), shadowEnable);
264 }
#define OutputCMLEna_ftrig_shft
Definition: evrRegMap.h:295
#define OutputCMLEna_ftrig_mask
Definition: evrRegMap.h:294
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setCountLow()

void MRMCML::setCountLow ( epicsUInt32  v)
virtual

Implements CML.

Definition at line 245 of file drvemCML.cpp.

246 {
247  v = std::max(kind==typeTG300?40u:20u, std::min(v, 65535u));
248 
249  epicsUInt32 val = READ32(base, OutputCMLCount(N));
251  val |= v << OutputCMLCount_low_shft;
252  WRITE32(base, OutputCMLCount(N), val);
253 }
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
#define OutputCMLCount_mask
Definition: evrRegMap.h:312
#define OutputCMLCount_low_shft
Definition: evrRegMap.h:314
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setFineDelay()

void MRMCML::setFineDelay ( double  v)
virtual

Implements CML.

Definition at line 184 of file drvemCML.cpp.

185 {
186  if(v>1024.0){
187  printf("Delay will be set to 1024 instead of %f\n", v);
188  v=1024.0;
189  }
190  WRITE32(base, GTXDelay(N), roundToUInt(v*1024.0));
191 }
epicsUInt32 roundToUInt(double val, epicsUInt32 max)
Definition: mrfCommon.cpp:43
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setMode()

void MRMCML::setMode ( cmlMode  m)
virtual

Implements CML.

Definition at line 85 of file drvemCML.cpp.

86 {
87  epicsUInt32 mask=0;
88  switch(m) {
89  case cmlModeOrig: mask |= OutputCMLEna_mode_orig; break;
90  case cmlModeFreq: mask |= OutputCMLEna_mode_freq; break;
91  case cmlModePattern: mask |= OutputCMLEna_mode_patt; break;
92  default:
93  throw std::out_of_range("Invalid CML Mode");
94  }
95  bool wasenabled = enabled();
96  shadowEnable &= ~OutputCMLEna_ena; // disable while syncing
97  shadowEnable &= ~OutputCMLEna_mode_mask;
98  shadowEnable |= mask;
99  WRITE32(base, OutputCMLEna(N), shadowEnable);
100 
101 
102  switch(m) {
103  case cmlModeOrig:
104  WRITE32(base, OutputCMLPatLength(N), 0);
105  syncPattern(patternFall);
106  syncPattern(patternHigh);
107  syncPattern(patternLow);
108  syncPattern(patternRise);
109  break;
110 
111  case cmlModePattern:
112  WRITE32(base, OutputCMLPatLength(N), shadowWaveformlength-1);
113  syncPattern(patternWaveform);
114  break;
115 
116  default:
117  break;
118  }
119 
120  if(wasenabled)
121  shadowEnable |= OutputCMLEna_ena; // enable after syncing
122  WRITE32(base, OutputCMLEna(N), shadowEnable);
123 }
#define OutputCMLEna_ena
Definition: evrRegMap.h:310
#define OutputCMLEna_mode_mask
Definition: evrRegMap.h:304
#define OutputCMLEna_mode_patt
Definition: evrRegMap.h:307
#define OutputCMLEna_mode_freq
Definition: evrRegMap.h:306
virtual bool enabled() const OVERRIDE FINAL
Definition: drvemCML.cpp:126
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119
#define OutputCMLEna_mode_orig
Definition: evrRegMap.h:305

◆ setPattern()

void MRMCML::setPattern ( pattern  p,
const unsigned char *  buf,
epicsUInt32  blen 
)
virtual

Implements CML.

Definition at line 388 of file drvemCML.cpp.

389 {
390  // If we are given a length that is not a multiple of CML word size
391  // then truncate.
392  if(blen%mult){
393  printf("Given length is not a multiple of %u (CML word size). Truncating...\n", mult);
394  blen-=blen%mult;
395  }
396 
397  if(blen>lenPatternMax(p))
398  throw std::out_of_range("Pattern is too long");
399 
400 
401  epicsUInt32 val=0;
402  for(epicsUInt32 i=0; i<blen; i++) {
403  size_t cmlword = (i/mult);
404  size_t cmlbit = (i%mult);
405  size_t cpuword, cpubit;
406  if(mult<32) {
407  cpuword = cmlword;
408  cpubit = 19 - cmlbit;
409  } else {
410  cpuword = 2*cmlword + (cmlbit<8 ? 0 : 1);
411  cpubit = cmlbit<8 ? 7-cmlbit : 31-(cmlbit-8);
412  }
413 
414  val|=(!!buf[i])<<cpubit;
415 
416  // cpubit is counting down.
417  // write complete dword after the last bit is set
418  if(cpubit==0) {
419  shadowPattern[p][cpuword] = val;
420  val=0;
421  }
422  }
423 
424  if(p==patternWaveform)
425  shadowWaveformlength = blen/mult;
426 
427  // temporarly disable when changing multi dword patterns
428  // to prevent output of incomplete patterns
429  bool active=enabled();
430  if(active)
431  enable(false);
432 
433  if(mode()==cmlModePattern)
434  WRITE32(base, OutputCMLPatLength(N), shadowWaveformlength-1);
435 
436  syncPattern(p);
437 
438  if(active)
439  enable(true);
440 }
epicsUInt32 lenPatternMax() const
Definition: cml.h:94
virtual cmlMode mode() const OVERRIDE FINAL
Definition: drvemCML.cpp:70
virtual bool enabled() const OVERRIDE FINAL
Definition: drvemCML.cpp:126
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119
virtual void enable(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:132

◆ setPolarityInvert()

void MRMCML::setPolarityInvert ( bool  s)
virtual

Implements CML.

Definition at line 194 of file drvemCML.cpp.

195 {
196  if(s)
197  shadowEnable |= OutputCMLEna_ftrg;
198  else
199  shadowEnable &= ~OutputCMLEna_ftrg;
200  WRITE32(base, OutputCMLEna(N), shadowEnable);
201 }
#define OutputCMLEna_ftrg
Definition: evrRegMap.h:303
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setRecyclePat()

void MRMCML::setRecyclePat ( bool  s)
virtual

Implements CML.

Definition at line 323 of file drvemCML.cpp.

324 {
325  if(s)
326  shadowEnable |= OutputCMLEna_cycl;
327  else
328  shadowEnable &= ~OutputCMLEna_cycl;
329  WRITE32(base, OutputCMLEna(N), shadowEnable);
330 }
#define OutputCMLEna_cycl
Definition: evrRegMap.h:302
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119

◆ setTimeHigh()

void MRMCML::setTimeHigh ( double  v)
virtual

Implements CML.

Definition at line 291 of file drvemCML.cpp.

292 {
293  double period=1.0/(mult*owner.clock());
294 
295  setCountHigh(roundToUInt(v/period));
296 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual void setCountHigh(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:234
epicsUInt32 roundToUInt(double val, epicsUInt32 max)
Definition: mrfCommon.cpp:43

◆ setTimeInit()

void MRMCML::setTimeInit ( double  v)
virtual

Implements CML.

Definition at line 307 of file drvemCML.cpp.

308 {
309  double period=1.0/(mult*owner.clock());
310 
311  setCountInit(roundToUInt(v/period));
312 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual void setCountInit(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:256
epicsUInt32 roundToUInt(double val, epicsUInt32 max)
Definition: mrfCommon.cpp:43

◆ setTimeLow()

void MRMCML::setTimeLow ( double  v)
virtual

Implements CML.

Definition at line 299 of file drvemCML.cpp.

300 {
301  double period=1.0/(mult*owner.clock());
302 
303  setCountLow(roundToUInt(v/period));
304 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual void setCountLow(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:245
epicsUInt32 roundToUInt(double val, epicsUInt32 max)
Definition: mrfCommon.cpp:43

◆ timeHigh()

double MRMCML::timeHigh ( ) const
virtual

Implements CML.

Definition at line 267 of file drvemCML.cpp.

268 {
269  double period=1.0/(mult*owner.clock());
270 
271  return countHigh()*period;
272 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual epicsUInt32 countHigh() const OVERRIDE FINAL
Definition: drvemCML.cpp:210

◆ timeInit()

double MRMCML::timeInit ( ) const
virtual

Implements CML.

Definition at line 283 of file drvemCML.cpp.

284 {
285  double period=1.0/(mult*owner.clock());
286 
287  return countInit()*period;
288 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual epicsUInt32 countInit() const OVERRIDE FINAL
Definition: drvemCML.cpp:227

◆ timeLow()

double MRMCML::timeLow ( ) const
virtual

Implements CML.

Definition at line 275 of file drvemCML.cpp.

276 {
277  double period=1.0/(mult*owner.clock());
278 
279  return countLow()*period;
280 }
virtual double clock() const OVERRIDE FINAL
Definition: drvem.h:141
virtual epicsUInt32 countLow() const OVERRIDE FINAL
Definition: drvemCML.cpp:218

◆ unlock()

void MRMCML::unlock ( ) const
virtual

Implements mrf::Object.

Definition at line 67 of file drvemCML.cpp.

67 {owner.unlock();};
virtual void unlock() const OVERRIDE FINAL
Definition: drvem.h:122

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