Files
Jungfraujoch/fpga/pcie_driver/ActionConfig.h

94 lines
1.9 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#ifndef JUNGFRAUJOCH_ACTIONCONFIG_H
#define JUNGFRAUJOCH_ACTIONCONFIG_H
#ifdef __KERNEL__
typedef __u32 uint32_t;
typedef __u64 uint64_t;
#else
#include <cstdint>
#endif
#pragma pack(push)
#pragma pack(4)
struct DataCollectionConfig {
uint32_t nmodules;
uint32_t mode;
uint32_t one_over_energy;
uint32_t nframes;
uint32_t nstorage_cells;
};
struct DataCollectionStatus {
uint32_t ctrl_reg;
uint32_t reserved_0;
uint32_t set_led;
uint32_t git_sha1;
uint32_t action_type;
uint32_t release_level;
uint32_t reserved_3;
uint32_t reserved_1;
uint32_t max_modules;
uint32_t modules_internal_packet_generator;
uint64_t pipeline_stalls_host;
uint64_t pipeline_stalls_hbm;
uint32_t fifo_status;
uint32_t hbm_size_bytes;
uint64_t packets_processed;
uint64_t packets_eth;
uint64_t packets_icmp;
uint64_t packets_udp;
uint64_t packets_sls;
uint32_t udp_err_len;
uint32_t udp_err_eth;
};
struct DeviceStatus {
uint32_t mailbox_status_reg;
uint32_t mailbox_err_reg;
uint32_t fpga_temp_C;
uint32_t fpga_pcie_12V_I_mA;
uint32_t fpga_pcie_3p3V_I_mA;
uint32_t fpga_pcie_12V_V_mV;
uint32_t fpga_pcie_3p3V_V_mV;
uint32_t pcie_h2c_descriptors;
uint32_t pcie_c2h_descriptors;
uint32_t pcie_h2c_beats;
uint32_t pcie_c2h_beats;
uint32_t pcie_h2c_status;
uint32_t pcie_c2h_status;
uint32_t hbm_0_temp_C;
uint32_t hbm_1_temp_C;
bool ethernet_aligned;
};
struct FrameGeneratorConfig {
uint32_t frames;
uint32_t modules;
uint64_t dest_mac_addr;
uint32_t dest_ipv4_addr;
uint64_t bunchid;
uint32_t exptime;
uint32_t debug;
};
struct RegisterConfig {
uint32_t addr;
uint32_t val;
};
struct SpotFinderParameters {
int16_t count_threshold;
uint16_t snr_threshold;
};
#pragma pack(pop)
#endif //JUNGFRAUJOCH_ACTIONCONFIG_H