12#ifndef TIMING_INCLUDE_TIMING_MASTERNODE_HPP_
13#define TIMING_INCLUDE_TIMING_MASTERNODE_HPP_
26#include "uhal/DerivedNode.hpp"
48 std::string
get_status(
bool print_out =
false)
const override;
70 uint32_t number_of_commands = 1)
const override;
83 uint32_t coarse_delay,
86 bool measure_rtt =
false,
87 bool control_sfp =
true)
const override;
121 std::vector<uint32_t>
transmit_async_packet(
const std::vector<uint32_t>& packet,
int timeout=500)
const;
126 void write_endpoint_data(uint16_t endpoint_address, uint8_t reg_address, std::vector<uint8_t> data,
bool address_mode)
const;
131 std::vector<uint32_t>
read_endpoint_data(uint16_t endpoint_address, uint8_t reg_address, uint8_t data_length,
bool address_mode)
const;
Base class for timing IO nodes.
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.
Class for PD-II/DUNE master timing nodes.
uint32_t get_required_minor_firmware_version() const override
Required minor firmware version.
static const uint32_t required_minor_firmware_version
static const uint32_t required_major_firmware_version
std::string get_status_tables() const
Get the status tables.
uint32_t get_required_major_firmware_version() const override
Required major firmware version.
void set_timestamp(TimestampSource source) const override
Set the timestamp to current time.
std::string get_status(bool print_out=false) const override
Print the status of the timing node.
std::string get_status_with_date(uint32_t clock_frequency_hz, bool print_out=false) const
Print the status of the timing node.
std::vector< uint32_t > transmit_async_packet(const std::vector< uint32_t > &packet, int timeout=500) const
Send an async packet.
void enable_timestamp_broadcast() const
Enable timestamp sending.
uint64_t read_timestamp() const override
Read the current timestamp word.
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 override
Apply delay to endpoint.
std::vector< uint32_t > read_endpoint_data(uint16_t endpoint_address, uint8_t reg_address, uint8_t data_length, bool address_mode) const
Read some data from endpoint registers.
uint32_t measure_endpoint_rtt(uint32_t address, bool control_sfp=true) const override
Measure the endpoint round trip time.
void switch_endpoint_sfp(uint32_t address, bool turn_on) const override
Control the tx line of endpoint sfp.
void disable_timestamp_broadcast() const
Disable timestamp sending.
static const uint32_t required_patch_firmware_version
timingfirmware::EndpointCheckResult scan_endpoint(uint16_t endpoint_address, bool control_sfp) const override
Scan endpoint.
void enable_upstream_endpoint() const override
Enable RTT endpoint.
void sync_timestamp(TimestampSource source) const override
Set timestamp to current machine time.
void configure_endpoint_command_decoder(uint16_t endpoint_address, uint8_t slot, uint8_t command) const
Configure endpoint command decoder.
void get_info(timingfirmwareinfo::MasterMonitorData &mon_data) const
Fill the PD-I master monitoring structure.
MasterNode(const uhal::Node &node)
void reset_command_counters() const
Read some data from endpoint registers.
uint32_t get_required_patch_firmware_version() const override
Required patch firmware version.
void write_endpoint_data(uint16_t endpoint_address, uint8_t reg_address, std::vector< uint8_t > data, bool address_mode) const
Write some data to endpoint registers.
void send_fl_cmd(uint32_t command, uint32_t channel, uint32_t number_of_commands=1) const override
Send a fixed length command.