My Project  v0.0.16
CtrlNode.hpp
Go to the documentation of this file.
1 #ifndef _mp7_CSRNode_hpp_
2 #define _mp7_CSRNode_hpp_
3 
4 // MP7 Headers
5 #include "uhal/DerivedNode.hpp"
6 
7 namespace mp7 {
23  class CtrlNode : public uhal::Node {
25 
26  public:
27 
28  enum BufferSelection { Rx, Tx };
29 
30  enum RegionType { RegEmpty = 0, RegBuffer = 1, RegMGT = 2 };
31 
36  class Clock40Guard {
37  public:
38  Clock40Guard( const CtrlNode& aCtrl, double aMilliSleep=1000 );
39 
40  virtual ~Clock40Guard();
41 
42  private:
43  const CtrlNode& mCtrl;
44  bool mReset;
45  double mMilliSleep;
46  friend class CtrlNode;
47  };
48 
49  // PUBLIC METHODS
50  CtrlNode( const uhal::Node& );
51  virtual ~CtrlNode( );
52 
54  void hardReset( double aMilliSleep=1000 ) const;
55 
57  void softReset() const;
58 
60  void resetClock40( bool aReset=true ) const;
61 
63  bool clock40Locked( ) const;
64 
66  void waitClk40Lock( uint32_t aMaxTries=1000 ) const;
67 
69  void selectClk40Source( bool aExternalClock=true, double aMilliSleep=1000 ) const;
70 
72  void selectChannel( uint32_t channel ) const;
73 
75  void selectRegion( uint32_t quad ) const;
76 
78  void selectRegChan( uint32_t quad, uint32_t chan ) const;
79 
81  void selectLink( uint32_t link ) const;
82 
84  void selectLinkBuffer( uint32_t aLink, BufferSelection aBuffer ) const;
85 
87  std::vector<uint32_t> getRegions() const;
88 
90  std::vector<uint32_t> getBufferRegions() const;
91 
93  std::vector<uint32_t> getMGTRegions() const;
94 
96  boost::unordered_map<std::string, uint32_t> getGenerics() const;
97  /*
99  void configureClocking( ) const;
100  */
101 
102  };
103 
104 }
105 
106 #endif /* _mp7_CSRNode_hpp_ */
107 
void selectRegion( uint32_t quad ) const
Select quad to access to.
Definition: CtrlNode.cpp:111
void hardReset( double aMilliSleep=1000 ) const
Nuke the board and reset the 40 Mhz clock.
Definition: CtrlNode.cpp:33
void softReset() const
Soft reset.
Definition: CtrlNode.cpp:40
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
void resetClock40( bool aReset=true ) const
Reset Clock 40.
Definition: CtrlNode.cpp:46
Definition: CtrlNode.hpp:28
CtrlNode( const uhal::Node& )
Definition: CtrlNode.cpp:26
void selectClk40Source( bool aExternalClock=true, double aMilliSleep=1000 ) const
Select the clock.
Definition: CtrlNode.cpp:52
void selectLink( uint32_t link ) const
Select link.
Definition: CtrlNode.cpp:125
bool clock40Locked( ) const
Return the locking status of the 40Mhz clock.
Definition: CtrlNode.cpp:71
RegionType
Definition: CtrlNode.hpp:30
std::vector<uint32_t> getRegions() const
Returns the overall list of regions.
Definition: CtrlNode.cpp:142
Definition: CtrlNode.hpp:30
friend class CtrlNode
Definition: CtrlNode.hpp:46
Clock40Guard( const CtrlNode& aCtrl, double aMilliSleep=1000 )
Definition: CtrlNode.cpp:205
bool mReset
Definition: CtrlNode.hpp:44
tuple link
Definition: dave_demux.py:79
void selectChannel( uint32_t channel ) const
Select the channel to access to.
Definition: CtrlNode.cpp:104
virtual ~CtrlNode( )
Definition: CtrlNode.cpp:29
virtual ~Clock40Guard()
Definition: CtrlNode.cpp:211
Definition: CtrlNode.hpp:28
const CtrlNode& mCtrl
Definition: CtrlNode.hpp:43
std::vector<uint32_t> getBufferRegions() const
Returns the list of regions with buffers.
Definition: CtrlNode.cpp:150
void waitClk40Lock( uint32_t aMaxTries=1000 ) const
wait (up to 100 ms) for the clock lock
Definition: CtrlNode.cpp:78
UHAL_DERIVEDNODE( CtrlNode )
double mMilliSleep
Definition: CtrlNode.hpp:45
Definition: CtrlNode.hpp:30
BufferSelection
Definition: CtrlNode.hpp:28
std::vector<uint32_t> getMGTRegions() const
Returns the list of regions with mgts.
Definition: CtrlNode.cpp:176
Definition: CtrlNode.hpp:30
boost::unordered_map<std::string, uint32_t> getGenerics() const
Definition: CtrlNode.cpp:201
void selectLinkBuffer( uint32_t aLink, BufferSelection aBuffer ) const
Select buffer.
Definition: CtrlNode.cpp:131
void selectRegChan( uint32_t quad, uint32_t chan ) const
Select quad and channel.
Definition: CtrlNode.cpp:118