8UHAL_REGISTER_DERIVED_NODE(MasterMuxDesign)
29 std::stringstream status;
34 TLOG() << status.str();
62 uint32_t coarse_delay,
71 if (control_sfp && measure_rtt)
90 std::vector<uint32_t> locked_channels;
93 uint32_t number_of_mux_channels = 8;
94 for (uint32_t i = 0; i < number_of_mux_channels; ++i)
103 TLOG_DEBUG(0) <<
"Slot " << i <<
" not locked";
108 locked_channels.push_back(i);
111 if (locked_channels.size()) {
112 TLOG() <<
"Slots locked: " <<
vec_fmt(locked_channels);
114 TLOG() <<
"No slots locked";
116 return locked_channels;
virtual std::string get_pll_status(bool print_out=false) const
Print status of on-board PLL.
Base class for timing master designs.
Base class for timing master designs.
const MasterNodeInterface * get_master_node_plain() const override
Get master node pointer.
Class for PDI timing master design on mux board.
void resync_active_cdr() const override
Resync active cdr.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
virtual ~MasterMuxDesign()
std::vector< uint32_t > scan_sfp_mux() const override
Scan SFP for alive timing transmitters.
uint32_t measure_endpoint_rtt(uint32_t address, bool control_sfp=true, int sfp_mux=-1) const override
Measure the endpoint round trip time.
void apply_endpoint_delay(uint32_t address, uint32_t coarse_delay, uint32_t fine_delay, uint32_t phase_delay, bool measure_rtt=false, bool control_sfp=true, int sfp_mux=-1) const override
Apply delay to endpoint.
virtual void apply_endpoint_delay(uint32_t address, uint32_t coarse_delay, uint32_t fine_delay, uint32_t phase_delay, bool measure_rtt=false, bool control_sfp=true) const =0
Apply delay to endpoint.
virtual uint32_t measure_endpoint_rtt(uint32_t address, bool control_sfp=true) const =0
Measure the endpoint round trip time.
virtual void enable_upstream_endpoint() const =0
Enable RTT endpoint.
Base class for timing endpoint design nodes.
Class for timing fanout designs.
void switch_mux(uint8_t mux_channel, bool resync_cdr=false) const override
Switch the SFP mux channel.
virtual std::string get_status(bool print_out=false) const =0
Get the status string of the timing node. Optionally print it.
Base class for timing top design nodes.
const IONode * get_io_node_plain() const override
Get io node pointer.
#define TLOG_DEBUG(lvl,...)
std::string vec_fmt(const std::vector< T > &vec)