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