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

#include <mrmevgseq.h>

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

Public Member Functions

 EvgSeqManager (evgMrm *owner, volatile epicsUInt8 *base)
 
virtual ~EvgSeqManager ()
 
virtual double getClkFreq () const
 
virtual void mapTriggerSrc (unsigned i, unsigned src)
 Called from ISR. More...
 
virtual epicsUInt32 testStartOfSeq ()
 Called from ISR. More...
 
- Public Member Functions inherited from SeqManager
 SeqManager (const std::string &name, Type t)
 
virtual ~SeqManager ()
 
virtual void lock () const OVERRIDE FINAL
 
virtual void unlock () const OVERRIDE FINAL
 
void doStartOfSequence (unsigned i)
 Call from ISR. More...
 
void doEndOfSequence (unsigned i)
 Call from ISR. More...
 
- Public Member Functions inherited from mrf::ObjectInst< SeqManager >
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

- Public Types inherited from SeqManager
enum  Type { TypeEVG, TypeEVR }
 
- 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)
 
- Static Public Member Functions inherited from SeqManager
static mrf::ObjectbuildSW (const std::string &name, const std::string &klass, const mrf::Object::create_args_t &args)
 
- Static Public Member Functions inherited from mrf::ObjectInst< SeqManager >
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 *)
 
- Public Attributes inherited from SeqManager
const Type type
 
- Protected Member Functions inherited from SeqManager
void addHW (unsigned i, volatile void *ctrl, volatile void *ram)
 
- Protected Member Functions inherited from mrf::ObjectInst< SeqManager >
 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 13 of file mrmevgseq.h.

Constructor & Destructor Documentation

◆ EvgSeqManager()

EvgSeqManager::EvgSeqManager ( evgMrm owner,
volatile epicsUInt8 *  base 
)

Definition at line 28 of file mrmevgseq.cpp.

29  :SeqManager(owner->name()+":SEQMGR", TypeEVG)
30  ,owner(owner)
31  ,base(base)
32 {
33  addHW(0, base + U32_SeqControl(0) , base + U32_SeqRamTS(0,0));
34  addHW(1, base + U32_SeqControl(1) , base + U32_SeqRamTS(1,0));
35 }
#define U32_SeqControl(n)
Definition: evgRegMap.h:142
#define U32_SeqRamTS(n, m)
Definition: evgRegMap.h:231
const std::string & name() const
Definition: object.h:393
void addHW(unsigned i, volatile void *ctrl, volatile void *ram)
Definition: mrmSeq.cpp:765
SeqManager(const std::string &name, Type t)
Definition: mrmSeq.cpp:687

◆ ~EvgSeqManager()

EvgSeqManager::~EvgSeqManager ( )
virtual

Definition at line 37 of file mrmevgseq.cpp.

37 {}

Member Function Documentation

◆ getClkFreq()

double EvgSeqManager::getClkFreq ( ) const
virtual

sub-class implement to provide scaling between time and frequency. Units of Hz called with a SoftSeq mutex held.

Implements SeqManager.

Definition at line 39 of file mrmevgseq.cpp.

40 {
41  return owner->getFrequency()*1e6;
42 }
epicsFloat64 getFrequency() const
Definition: evgEvtClk.cpp:15

◆ mapTriggerSrc()

void EvgSeqManager::mapTriggerSrc ( unsigned  i,
unsigned  src 
)
virtual

Called from ISR.

Implements SeqManager.

Definition at line 45 of file mrmevgseq.cpp.

46 {
47  assert(i<=1);
48  /* Input mapping special codes 0x02xxxxxx
49  *
50  * 0x20000000 - Disable
51  * 0x020100xx - Front panel in
52  * 0x020200xx - UV in
53  * 0x020300xx - TB in
54  */
55  if((src&0xff000000)!=0x02000000) {
56  DEBUG(0, ("EvgSeqManager::mapTriggerSrc unsupported %x\n", src));
57  return;
58  }
59 
60  InputType itype = (InputType)((src>>16)&0xff);
61  unsigned idx = src&0xff;
62 
63  for(evgMrm::inputs_iterator it = owner->beginInputs(), end = owner->endInputs();
64  it!=end; ++it)
65  {
66  bool match = it->first.second==itype && it->first.first==idx;
67  evgInput *inp = it->second;
68  epicsUInt32 map = inp->getSeqTrigMap();
69  // set or clear sequencer trigger bit
70  if(match)
71  map |= 1u<<i;
72  else
73  map &= ~(1u<<i);
74  inp->setSeqTrigMap(map);
75  }
76 }
epicsUInt32 getSeqTrigMap() const
Definition: evgInput.cpp:92
inputs_iterator endInputs()
Definition: evgMrm.h:187
InputType
Definition: evgInput.h:11
#define DEBUG(LVL, ARGS)
Definition: mrmevgseq.cpp:25
Input_t::iterator inputs_iterator
Definition: evgMrm.h:185
void setSeqTrigMap(epicsUInt32)
Definition: evgInput.cpp:78
inputs_iterator beginInputs()
Definition: evgMrm.h:186

◆ testStartOfSeq()

epicsUInt32 EvgSeqManager::testStartOfSeq ( )
virtual

Called from ISR.

Implements SeqManager.

Definition at line 79 of file mrmevgseq.cpp.

80 {
81  // SoS for sequencer 0 is bit 8
82  return (NAT_READ32(base, IrqFlag)>>8)&0x3;
83 }
#define NAT_READ32(base, offset)
Definition: mrfCommonIO.h:145

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