mrfioc2  2.3.0
drvemCML.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2010 Brookhaven Science Associates, as Operator of
3 * Brookhaven National Laboratory.
4 * mrfioc2 is distributed subject to a Software License Agreement found
5 * in file LICENSE that is included with this distribution.
6 \*************************************************************************/
7 /*
8  * Author: Michael Davidsaver <mdavidsaver@gmail.com>
9  */
10 
11 #ifndef EVRMRMCMLSHORT_HPP_INC
12 #define EVRMRMCMLSHORT_HPP_INC
13 
14 #include "evr/cml.h"
15 
16 #include "configurationInfo.h"
17 
18 class EVRMRM;
19 
20 class MRMCML : public CML
21 {
22 public:
24 
25  MRMCML(const std::string&, unsigned char, EVRMRM&, outkind, formFactor);
26  virtual ~MRMCML();
27 
28  virtual void lock() const OVERRIDE FINAL;
29  virtual void unlock() const OVERRIDE FINAL;
30 
31  virtual cmlMode mode() const OVERRIDE FINAL;
32  virtual void setMode(cmlMode) OVERRIDE FINAL;
33 
34  virtual bool enabled() const OVERRIDE FINAL;
35  virtual void enable(bool) OVERRIDE FINAL;
36 
37  virtual bool inReset() const OVERRIDE FINAL;
38  virtual void reset(bool) OVERRIDE FINAL;
39 
40  virtual bool powered() const OVERRIDE FINAL;
41  virtual void power(bool) OVERRIDE FINAL;
42 
43  virtual epicsUInt32 freqMultiple() const OVERRIDE FINAL {return mult;}
44 
45  virtual double fineDelay() const OVERRIDE FINAL;
46  virtual void setFineDelay(double) OVERRIDE FINAL;
47 
48  // For Frequency mode
49 
51  virtual bool polarityInvert() const OVERRIDE FINAL;
52  virtual void setPolarityInvert(bool) OVERRIDE FINAL;
53 
54  virtual epicsUInt32 countHigh() const OVERRIDE FINAL;
55  virtual epicsUInt32 countLow () const OVERRIDE FINAL;
56  virtual epicsUInt32 countInit () const OVERRIDE FINAL;
57  virtual void setCountHigh(epicsUInt32) OVERRIDE FINAL;
58  virtual void setCountLow (epicsUInt32) OVERRIDE FINAL;
59  virtual void setCountInit (epicsUInt32) OVERRIDE FINAL;
60  virtual double timeHigh() const OVERRIDE FINAL;
61  virtual double timeLow () const OVERRIDE FINAL;
62  virtual double timeInit () const OVERRIDE FINAL;
63  virtual void setTimeHigh(double) OVERRIDE FINAL;
64  virtual void setTimeLow (double) OVERRIDE FINAL;
65  virtual void setTimeInit (double) OVERRIDE FINAL;
66 
67  // For Pattern mode
68 
69  virtual bool recyclePat() const OVERRIDE FINAL;
70  virtual void setRecyclePat(bool) OVERRIDE FINAL;
71 
72  virtual epicsUInt32 lenPattern(pattern) const OVERRIDE FINAL;
73  virtual epicsUInt32 lenPatternMax(pattern) const OVERRIDE FINAL;
74  virtual epicsUInt32 getPattern(pattern, unsigned char*, epicsUInt32) const OVERRIDE FINAL;
75  virtual void setPattern(pattern, const unsigned char*, epicsUInt32) OVERRIDE FINAL;
76 
77 private:
78 
79  epicsUInt32 mult, wordlen;
80  volatile unsigned char *base;
81  unsigned char N;
82  EVRMRM& owner;
83 
84  epicsUInt32 shadowEnable;
85 
86  epicsUInt32 *shadowPattern[5]; // 5 is wavefrom + 4x pattern
87  epicsUInt32 shadowWaveformlength;
88 
89  void syncPattern(pattern);
90 
91  outkind kind;
92 };
93 
94 #endif // EVRMRMCMLSHORT_HPP_INC
virtual void setTimeLow(double) OVERRIDE FINAL
Definition: drvemCML.cpp:299
virtual double timeInit() const OVERRIDE FINAL
Definition: drvemCML.cpp:283
virtual void setFineDelay(double) OVERRIDE FINAL
Definition: drvemCML.cpp:184
virtual bool inReset() const OVERRIDE FINAL
Definition: drvemCML.cpp:142
virtual double timeLow() const OVERRIDE FINAL
Definition: drvemCML.cpp:275
outkind
Definition: drvemCML.h:23
virtual double timeHigh() const OVERRIDE FINAL
Definition: drvemCML.cpp:267
epicsUInt32 lenPatternMax() const
Definition: cml.h:94
virtual epicsUInt32 countInit() const OVERRIDE FINAL
Definition: drvemCML.cpp:227
virtual void setTimeHigh(double) OVERRIDE FINAL
Definition: drvemCML.cpp:291
virtual bool polarityInvert() const OVERRIDE FINAL
Trigger level.
Definition: drvemCML.cpp:204
Modular Register Map Event Receivers.
Definition: drvem.h:86
formFactor
pattern
Definition: cml.h:28
virtual epicsUInt32 countHigh() const OVERRIDE FINAL
Definition: drvemCML.cpp:210
Definition: cml.h:25
virtual double fineDelay() const OVERRIDE FINAL
delay by fraction of one event clock period. Units of sec
Definition: drvemCML.cpp:174
MRMCML(const std::string &, unsigned char, EVRMRM &, outkind, formFactor)
Definition: drvemCML.cpp:25
virtual void setTimeInit(double) OVERRIDE FINAL
Definition: drvemCML.cpp:307
virtual void setRecyclePat(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:323
virtual ~MRMCML()
Definition: drvemCML.cpp:60
virtual void setCountHigh(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:234
virtual void setCountLow(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:245
virtual void power(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:164
virtual void reset(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:148
virtual cmlMode mode() const OVERRIDE FINAL
Definition: drvemCML.cpp:70
virtual bool recyclePat() const OVERRIDE FINAL
Definition: drvemCML.cpp:317
virtual bool enabled() const OVERRIDE FINAL
Definition: drvemCML.cpp:126
virtual void setMode(cmlMode) OVERRIDE FINAL
Definition: drvemCML.cpp:85
virtual epicsUInt32 freqMultiple() const OVERRIDE FINAL
Speed of CML clock as a multiple of the event clock.
Definition: drvemCML.h:43
virtual epicsUInt32 countLow() const OVERRIDE FINAL
Definition: drvemCML.cpp:218
virtual void setCountInit(epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:256
virtual void unlock() const OVERRIDE FINAL
Definition: drvemCML.cpp:67
virtual bool powered() const OVERRIDE FINAL
Definition: drvemCML.cpp:158
cmlMode
Definition: cml.h:18
virtual epicsUInt32 getPattern(pattern, unsigned char *, epicsUInt32) const OVERRIDE FINAL
Definition: drvemCML.cpp:351
virtual void lock() const OVERRIDE FINAL
Definition: drvemCML.cpp:66
virtual void setPattern(pattern, const unsigned char *, epicsUInt32) OVERRIDE FINAL
Definition: drvemCML.cpp:388
epicsUInt32 lenPattern() const
Definition: cml.h:92
virtual void setPolarityInvert(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:194
virtual void enable(bool) OVERRIDE FINAL
Definition: drvemCML.cpp:132