My Project  v0.0.16
ClockingNode.hpp
Go to the documentation of this file.
1 #ifndef _mp7_ClockingNode_hpp_
2 #define _mp7_ClockingNode_hpp_
3 
4 // MP7 Headers
5 #include "uhal/DerivedNode.hpp"
6 
7 // C++ Headers
8 #include <map>
9 
10 namespace mp7 {
11 
22 class ClockingNode : public uhal::Node {
24 public:
25 
26  enum Clk40Select {
30  };
31 
32  enum RefClkSelect {
35  };
36 
37  // PUBLIC METHODS
38  ClockingNode(const uhal::Node&);
39  virtual ~ClockingNode();
40 
42  void configure(const std::string aConfig) const;
43 
45  void configureXpoint(Clk40Select aClk40Src, RefClkSelect aRefSrc) const;
46 
48  void configureU3(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const;
49 
51  void configureU15(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const;
52 
54  void configureU36(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const;
55 
57  void si5326Reset() const;
58 
59  // Wait for SI5326 configuration to complete
60  void si5326WaitConfigured(uint32_t aMaxTries = 1000) const;
61 
63  bool si5326LossOfLock() const;
64 
66  bool si5326Interrupt() const;
67 
68 protected:
69 
70  // PROTECTED METHODS
71  void configureUX(const std::string& chip, uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const;
72 
73 private:
74  struct Config {
77  std::string si5626Cfg;
78  };
79 
80  typedef boost::unordered_map<std::string,Config> ConfigMap;
81 
83  static const ConfigMap mConfigurations;
84 
86  static ConfigMap makeDefaultConfigs();
87 };
88 
89 
90 }
91 
92 
93 
94 #endif /* _mp7_ClockingNode_hpp_ */
95 
96 
void si5326WaitConfigured(uint32_t aMaxTries = 1000) const
Definition: ClockingNode.cpp:216
void configureUX(const std::string& chip, uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const
Definition: ClockingNode.cpp:132
static const ConfigMap mConfigurations
Map of the known configurations.
Definition: ClockingNode.hpp:83
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
boost::unordered_map<std::string,Config> ConfigMap
Definition: ClockingNode.hpp:80
Definition: ClockingNode.hpp:28
static ConfigMap makeDefaultConfigs()
Method to generate the default configurations.
Definition: ClockingNode.cpp:27
Definition: ClockingNode.hpp:29
void configureU15(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const
Configure the U15 switch.
Definition: ClockingNode.cpp:180
RefClkSelect
Definition: ClockingNode.hpp:32
Clk40Select clk40
Definition: ClockingNode.hpp:75
void configureU3(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const
Configure the U3 switch.
Definition: ClockingNode.cpp:169
Clk40Select
Definition: ClockingNode.hpp:26
bool si5326LossOfLock() const
Check the SI5326 loss of lock.
Definition: ClockingNode.cpp:242
Definition: ClockingNode.hpp:27
bool si5326Interrupt() const
What is this?
Definition: ClockingNode.cpp:249
void configureU36(uint SelForOut0, uint SelForOut1, uint SelForOut2, uint SelForOut3) const
Configure the U36 switch.
Definition: ClockingNode.cpp:191
Definition: ClockingNode.hpp:34
Definition: ClockingNode.hpp:33
std::string si5626Cfg
Definition: ClockingNode.hpp:77
virtual ~ClockingNode()
Definition: ClockingNode.cpp:52
void configure(const std::string aConfig) const
Configure the routing by logical states.
Definition: ClockingNode.cpp:56
ClockingNode(const uhal::Node&)
Definition: ClockingNode.cpp:48
void si5326Reset() const
Reset the SI5326.
Definition: ClockingNode.cpp:205
RefClkSelect refClk
Definition: ClockingNode.hpp:76
void configureXpoint(Clk40Select aClk40Src, RefClkSelect aRefSrc) const
Configure the routing by logical states.
Definition: ClockingNode.cpp:93
UHAL_DERIVEDNODE(ClockingNode)