File readout_fe.cpp

FileList > midas_fe > readout_fe.cpp

Go to the source code of this file

MIDAS frontend for MUPIX data readout and DMA handling. More...

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <sys/mman.h>
  • #include <unistd.h>
  • #include <iomanip>
  • #include <iostream>
  • #include <list>
  • #include <sstream>
  • #include <string>
  • #include "midas.h"
  • #include <chrono>
  • #include "DummyFEBSlowcontrolInterface.h"
  • #include "FEBSlowcontrolInterface.h"
  • #include "mcstd.h"
  • #include "mfe.h"
  • #include "missing_hardware.h"
  • #include "msystem.h"
  • #include "mudaq_device.h"
  • #include "odb_setup.h"
  • #include "odbxx.h"
  • #include "utils.h"

Public Attributes

Type Name
mudaq::DmaMudaqDevice::DataBlock block
uint32_t cnt_loop = 0
volatile uint32_t * dma_buf
uint32_t * dma_buf_local
EQUIPMENT equipment = /* multi line expression */
BOOL equipment_common_overwrite = TRUE
uint16_t eventID_data = 301
const char * frontend_file_name = \_\_FILE\_\_
const char * frontend_name = "Readout"
std::vector< uint32_t > lvds_banks
midas::odb m_settings
uint32_t maxwords = 0
std::map< uint64_t, std::list< mevent_t > > mevents
mudaq::DmaMudaqDevice * mup = nullptr
uint32_t n_mevents = 0
uint32_t readout_state_regs = 0
uint32_t readout_timeout = 1000
uint32_t reset_regs = 0
bool saw_readout_enabled = false
bool use_software_dummy = false
uint32_t use_timeout = true

Public Functions

Type Name
int begin_of_run ()
int create_midas_events (uint32_t * dmaBuffer, uint32_t dmaBufSize, int rbh)
int end_of_run ()
int frontend_exit_user ()
int frontend_init ()
uint64_t generate_random_pixel_hit_swb (bool print)
int init_mudaq (mudaq::MudaqDevice & mu)
int read_stream_thread (void *)

Public Static Functions

Type Name
void print_swb_counters (mudaq::DmaMudaqDevice & mu)

Detailed Description

This frontend handles the real-time data acquisition for MUPIX devices, using direct memory access (DMA) to collect data blocks and transfer them to MIDAS events. It sets up necessary buffers, device interfaces, and ODB configuration to support robust data streaming.

Key functionalities: * Initializes and maps a DMA buffer for high-throughput data acquisition. * Manages device communication through mudaq::DmaMudaqDevice. * Handles multiple event streams via software buffering (mevents). * Provides run-time configuration through MIDAS Online Database (ODB). * Supports both real hardware and dummy simulation via preprocessor flags.

This file complements quads_config_fe.cpp by performing the actual data acquisition, while quads_config_fe.cpp handles initialization and configuration.

Note:

Define NO_A10_BOARD to build without hardware-specific mappings.

Author:

Marius Snella Köppel

Date:

2025-07-04

Public Attributes Documentation

variable block

mudaq::DmaMudaqDevice::DataBlock block;

variable cnt_loop

uint32_t cnt_loop;

variable dma_buf

volatile uint32_t* dma_buf;

variable dma_buf_local

uint32_t* dma_buf_local;

variable equipment

EQUIPMENT equipment[];

variable equipment_common_overwrite

BOOL equipment_common_overwrite;

variable eventID_data

uint16_t eventID_data;

variable frontend_file_name

const char* frontend_file_name;

variable frontend_name

const char* frontend_name;

variable lvds_banks

std::vector<uint32_t> lvds_banks;

variable m_settings

midas::odb m_settings;

variable maxwords

uint32_t maxwords;

variable mevents

std::map<uint64_t, std::list<mevent_t> > mevents;

variable mup

mudaq::DmaMudaqDevice* mup;

variable n_mevents

uint32_t n_mevents;

variable readout_state_regs

uint32_t readout_state_regs;

variable readout_timeout

uint32_t readout_timeout;

variable reset_regs

uint32_t reset_regs;

variable saw_readout_enabled

bool saw_readout_enabled;

variable use_software_dummy

bool use_software_dummy;

variable use_timeout

uint32_t use_timeout;

Public Functions Documentation

function begin_of_run

int begin_of_run () 

function create_midas_events

int create_midas_events (
    uint32_t * dmaBuffer,
    uint32_t dmaBufSize,
    int rbh
) 

function end_of_run

int end_of_run () 

function frontend_exit_user

int frontend_exit_user () 

function frontend_init

int frontend_init () 

function generate_random_pixel_hit_swb

uint64_t generate_random_pixel_hit_swb (
    bool print
) 

function init_mudaq

int init_mudaq (
    mudaq::MudaqDevice & mu
) 

function read_stream_thread

int read_stream_thread (
    void *
) 

Public Static Functions Documentation

function print_swb_counters

static void print_swb_counters (
    mudaq::DmaMudaqDevice & mu
) 


The documentation for this class was generated from the following file midas_fe/readout_fe.cpp