2#ifndef HERMESMODULES_INCLUDE_HERMESCORECONTROLLER_HPP_
3#define HERMESMODULES_INCLUDE_HERMESCORECONTROLLER_HPP_
7#include "uhal/uhal.hpp"
14 "Hermes Link " << lid <<
" does not exist",
19 InputBufferDoesNotExist,
20 "Hermes Input Buffer " << bid <<
" does not exist",
26 "Hermes Magic number failed " << found <<
" (" << expected <<
")",
27 ((uint32_t)found)((uint32_t)expected)
33 "Hermes Link " << link <<
" is in error (err:" << err <<
", eth_rdy:" << eth_rdy <<
", src_rdy:" << src_rdy <<
", udp_rdy:" << udp_rdy <<
" )",
34 ((uint16_t)link)((
bool)err)((
bool)eth_rdy)((
bool)src_rdy)((
bool)udp_rdy)
71 void reset(
bool nuke=
false);
77 void config_mux(uint16_t link, uint16_t det, uint16_t crate, uint16_t slot);
79 void config_udp(uint16_t link, uint64_t src_mac, uint32_t src_ip, uint16_t src_port, uint64_t dst_mac, uint32_t dst_ip, uint16_t dst_port, uint32_t filters);
81 void config_fake_src(uint16_t link, uint16_t n_src, uint16_t data_len, uint16_t rate);
#define ERS_DECLARE_ISSUE(namespace_name, class_name, message, attributes)
const CoreInfo & get_info() const
void sel_udp_core(uint16_t i)
opmon::LinkInfo read_link_stats(uint16_t link)
HermesCoreController(uhal::HwInterface, std::string readout_id="")
virtual ~HermesCoreController()
void config_udp(uint16_t link, uint64_t src_mac, uint32_t src_ip, uint16_t src_port, uint64_t dst_mac, uint32_t dst_ip, uint16_t dst_port, uint32_t filters)
void config_mux(uint16_t link, uint16_t det, uint16_t crate, uint16_t slot)
void sel_tx_mux_buf(uint16_t i)
void reset(bool nuke=false)
const uhal::Node & m_readout
bool is_link_in_error(uint16_t link, bool do_throw=false)
void sel_tx_mux(uint16_t i)
LinkGeoInfo read_link_geo_info(uint16_t link)
void config_fake_src(uint16_t link, uint16_t n_src, uint16_t data_len, uint16_t rate)