13 std::srand(source_id*12345);
15 for (
int i = 0; i <
size; i++) {
16 int random_ch = std::rand()%64;
21template<
class ReadoutType>
33template<
class ReadoutType>
43 std::mt19937 mt(rand());
44 std::uniform_real_distribution<double> dis(0.0, 1.0);
67 for (
size_t i = 0; i <
m_dropouts.size(); ++i) {
80 TLOG() <<
"Generated pattern.";
97template<
class ReadoutType>
109template<
class ReadoutType>
114 std::this_thread::sleep_for(std::chrono::milliseconds(100));
118template<
class ReadoutType>
126 this->
publish(std::move(info));
129template<
class ReadoutType>
143 std::this_thread::sleep_for(std::chrono::milliseconds(100));
147 auto rptr =
reinterpret_cast<ReadoutType*
>(source.data());
150 uint64_t ts_0 = rptr->get_timestamp();
152 auto time_now = std::chrono::system_clock::now().time_since_epoch();
153 uint64_t current_time =
154 std::chrono::duration_cast<std::chrono::microseconds>(time_now).count();
157 ts_0 = 625 * current_time / 10;
161 uint64_t timestamp = ts_0;
162 int dropout_index = 0;
168 if (
offset == num_elem || (
offset + 1) *
sizeof(ReadoutType) > source.size()) {
172 bool create_frame =
m_dropouts[dropout_index];
173 dropout_index = (dropout_index + 1) %
m_dropouts.size();
177 ::memcpy(
static_cast<void*
>(&payload),
178 static_cast<void*
>(source.data() +
offset *
sizeof(ReadoutType)),
179 sizeof(ReadoutType));
188 std::vector<uint16_t> frame_errs;
189 for (
size_t i = 0; i < rptr->get_num_frames(); ++i) {
192 payload.fake_frame_errors(&frame_errs);
207 catch (std::exception & ex) {
221 (*m_raw_data_callback)(std::move(payload));
uint32_t get_random_population_size() const
Get "random_population_size" attribute value.
bool get_generate_periodic_adc_pattern() const
Get "generate_periodic_adc_pattern" attribute value.
bool get_set_t0() const
Get "set_t0" attribute value. Set first timestamp to now.
uint32_t get_input_file_size_limit() const
Get "input_file_size_limit" attribute value.
float get_frame_error_rate_hz() const
Get "frame_error_rate_hz" attribute value.
const std::string & get_data_file_name() const
Get "data_file_name" attribute value.
float get_TP_rate_per_channel() const
Get "TP_rate_per_channel" attribute value. TP rate per channel in units of 100 Hz.
const dunedaq::confmodel::GeoId * get_geo_id() const
Get "geo_id" relationship value.
uint32_t get_source_id() const
Get "source_id" attribute value.
uint32_t get_stream_id() const
Get "stream_id" attribute value.
uint32_t get_slot_id() const
Get "slot_id" attribute value.
uint32_t get_crate_id() const
Get "crate_id" attribute value.
static std::shared_ptr< DataMoveCallbackRegistry > get()
uint m_frame_errors_length
uint64_t m_pattern_generator_previous_ts
uint32_t m_this_link_number
virtual void generate_opmon_data() override
utilities::ReusableThread m_producer_thread
std::unique_ptr< RateLimiter > m_rate_limiter
void stop(const appfwk::DAQModule::CommandData_t &)
std::vector< bool > m_dropouts
daqdataformats::SourceID m_sourceid
SourceEmulatorPatternGenerator m_pattern_generator
std::atomic< bool > & m_run_marker
ErrorBitGenerator m_error_bit_generator
void conf(const confmodel::DetectorStream *stream_conf, const appmodel::StreamEmulationParameters *emu_conf)
void start(const appfwk::DAQModule::CommandData_t &)
uint16_t m_frames_per_tick
std::atomic< int > m_packet_count_tot
std::shared_ptr< std::function< void(ReadoutType &&)> > m_raw_data_callback
std::atomic< int > m_packet_count
void set_sender(const appmodel::DataMoveCallbackConf *conf)
uint64_t m_time_tick_diff
bool m_generate_periodic_adc_pattern
double m_frame_error_rate
std::unique_ptr< FileSourceBuffer > m_file_source
std::vector< int > m_channel
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept
Base class for any user define issue.
#define TLOG_DEBUG(lvl,...)
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
void warning(const Issue &issue)
void fatal(const Issue &issue)