DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
fddetdataformats
include
fddetdataformats
DAPHNEStreamFrame.hpp
Go to the documentation of this file.
1
14
15
#ifndef FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_DAPHNESTREAMFRAME_HPP_
16
#define FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_DAPHNESTREAMFRAME_HPP_
17
18
#include "
fddetdataformats/FrameConcepts.hpp
"
19
#include "
fddetdataformats/Utils.hpp
"
20
21
#include "
detdataformats/DAQHeader.hpp
"
// For unified DAQ header
22
23
#include <algorithm>
// For std::min
24
#include <cassert>
// For assert()
25
#include <cstdint>
// For uint32_t etc
26
#include <cstdio>
27
#include <cstdlib>
28
#include <stdexcept>
// For std::out_of_range
29
30
namespace
dunedaq::fddetdataformats
{
31
32
// NOLINTBEGIN(build/unsigned)
33
34
struct
DAPHNEStreamFrame
35
{
36
// The definition of the format is in terms of 32-bit words
37
using
word_t
= uint32_t;
38
39
static
constexpr
int
s_bits_per_adc
= 14;
40
static
constexpr
int
s_bits_per_word
= 8 *
sizeof
(
word_t
);
41
static
constexpr
int
s_channels_per_frame
= 4;
42
static
constexpr
int
s_adcs_per_channel
= 64;
43
static
constexpr
int
s_daphnes_per_frame
= 1;
44
static
constexpr
int
s_num_adc_words
=
s_channels_per_frame
*
s_adcs_per_channel
*
s_bits_per_adc
/
s_bits_per_word
;
45
46
struct
Header
47
{
48
word_t
channel_0
: 6,
channel_1
: 6,
channel_2
: 6,
channel_3
: 6,
tbd_0
: 8;
49
word_t
tbd_1
: 32;
50
};
51
static_assert
(
sizeof
(
Header
) == 8);
52
53
struct
Trailer
54
{
55
word_t
tbd
: 32;
56
};
57
static_assert
(
sizeof
(
Trailer
) == 4);
58
59
static
constexpr
std::size_t
s_expected_bytes
{
sizeof
(
detdataformats::DAQHeader
) +
sizeof
(
Header
) +
60
sizeof
(
word_t
) *
s_num_adc_words
+
sizeof
(
Trailer
) };
61
62
uint64_t
get_timestamp
()
const
{
return
daq_header
.
get_timestamp
(); }
63
65
void
set_timestamp
(
const
uint64_t new_timestamp)
66
{
67
daq_header
.
timestamp_1
= new_timestamp;
68
daq_header
.
timestamp_2
= new_timestamp >> 32;
69
}
70
72
uint16_t
get_adc
(
int
i_adc,
int
i_channel)
const
;
73
75
void
set_adc
(
int
i,
int
i_channel, uint16_t val);
76
77
uint8_t
get_channel0
()
const
{
return
header
.
channel_0
; }
78
79
uint8_t
get_channel1
()
const
{
return
header
.
channel_1
; }
80
81
uint8_t
get_channel2
()
const
{
return
header
.
channel_2
; }
82
83
uint8_t
get_channel3
()
const
{
return
header
.
channel_3
; }
84
85
bool
operator<
(
const
DAPHNEStreamFrame
& other)
const
{
return
this->
get_timestamp
() < other.
get_timestamp
(); }
86
87
detdataformats::DAQHeader
daq_header
;
88
Header
header
;
89
word_t
adc_words
[
s_num_adc_words
];
// NOLINT (a false accusation from the linter that s_num_adc_words is a variable)
90
Trailer
trailer
;
91
};
92
93
static_assert
(std::endian::native == std::endian::little,
94
"The DAPHNEStreamFrame bitfield layout assumes little-endian architecture"
);
95
96
static_assert
(
AdaptableFrameConcept<DAPHNEStreamFrame>
,
"DAPHNEStreamFrame does not satisfy the AdaptableFrameConcept"
);
97
98
}
// namespace dunedaq::fddetdataformats
99
100
#include "
detail/DAPHNEStreamFrame.hxx
"
101
102
// NOLINTEND(build/unsigned)
103
104
#endif
// FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_DAPHNESTREAMFRAME_HPP_
DAPHNEStreamFrame.hxx
DAQHeader.hpp
FrameConcepts.hpp
dunedaq::fddetdataformats::AdaptableFrameConcept
Definition
FrameConcepts.hpp:81
Utils.hpp
dunedaq::fddetdataformats
Definition
CRTBernFrame.hpp:29
dunedaq::detdataformats::DAQHeader
DAQHeader is a versioned and unified structure for every FE electronics.
Definition
DAQHeader.hpp:23
dunedaq::detdataformats::DAQHeader::get_timestamp
uint64_t get_timestamp() const
Definition
DAQHeader.hpp:30
dunedaq::detdataformats::DAQHeader::timestamp_2
word_t timestamp_2
Definition
DAQHeader.hpp:28
dunedaq::detdataformats::DAQHeader::timestamp_1
word_t timestamp_1
Definition
DAQHeader.hpp:27
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header
Definition
DAPHNEStreamFrame.hpp:47
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::channel_1
word_t channel_1
Definition
DAPHNEStreamFrame.hpp:48
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::tbd_0
word_t tbd_0
Definition
DAPHNEStreamFrame.hpp:48
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::channel_2
word_t channel_2
Definition
DAPHNEStreamFrame.hpp:48
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::channel_3
word_t channel_3
Definition
DAPHNEStreamFrame.hpp:48
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::tbd_1
word_t tbd_1
Definition
DAPHNEStreamFrame.hpp:49
dunedaq::fddetdataformats::DAPHNEStreamFrame::Header::channel_0
word_t channel_0
Definition
DAPHNEStreamFrame.hpp:48
dunedaq::fddetdataformats::DAPHNEStreamFrame::Trailer
Definition
DAPHNEStreamFrame.hpp:54
dunedaq::fddetdataformats::DAPHNEStreamFrame::Trailer::tbd
word_t tbd
Definition
DAPHNEStreamFrame.hpp:55
dunedaq::fddetdataformats::DAPHNEStreamFrame
Definition
DAPHNEStreamFrame.hpp:35
dunedaq::fddetdataformats::DAPHNEStreamFrame::adc_words
word_t adc_words[s_num_adc_words]
Definition
DAPHNEStreamFrame.hpp:89
dunedaq::fddetdataformats::DAPHNEStreamFrame::set_adc
void set_adc(int i, int i_channel, uint16_t val)
Set the i ADC value of chn in the frame to val.
Definition
DAPHNEStreamFrame.hxx:14
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_adcs_per_channel
static constexpr int s_adcs_per_channel
Definition
DAPHNEStreamFrame.hpp:42
dunedaq::fddetdataformats::DAPHNEStreamFrame::operator<
bool operator<(const DAPHNEStreamFrame &other) const
Definition
DAPHNEStreamFrame.hpp:85
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_channel1
uint8_t get_channel1() const
Definition
DAPHNEStreamFrame.hpp:79
dunedaq::fddetdataformats::DAPHNEStreamFrame::set_timestamp
void set_timestamp(const uint64_t new_timestamp)
Set the 64-bit timestamp of the frame.
Definition
DAPHNEStreamFrame.hpp:65
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_bits_per_adc
static constexpr int s_bits_per_adc
Definition
DAPHNEStreamFrame.hpp:39
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_adc
uint16_t get_adc(int i_adc, int i_channel) const
Get the i ADC value of chn in the frame.
Definition
DAPHNEStreamFrame.hxx:5
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_channels_per_frame
static constexpr int s_channels_per_frame
Definition
DAPHNEStreamFrame.hpp:41
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_channel2
uint8_t get_channel2() const
Definition
DAPHNEStreamFrame.hpp:81
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_daphnes_per_frame
static constexpr int s_daphnes_per_frame
Definition
DAPHNEStreamFrame.hpp:43
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_channel0
uint8_t get_channel0() const
Definition
DAPHNEStreamFrame.hpp:77
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_bits_per_word
static constexpr int s_bits_per_word
Definition
DAPHNEStreamFrame.hpp:40
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_channel3
uint8_t get_channel3() const
Definition
DAPHNEStreamFrame.hpp:83
dunedaq::fddetdataformats::DAPHNEStreamFrame::header
Header header
Definition
DAPHNEStreamFrame.hpp:88
dunedaq::fddetdataformats::DAPHNEStreamFrame::word_t
uint32_t word_t
Definition
DAPHNEStreamFrame.hpp:37
dunedaq::fddetdataformats::DAPHNEStreamFrame::trailer
Trailer trailer
Definition
DAPHNEStreamFrame.hpp:90
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_num_adc_words
static constexpr int s_num_adc_words
Definition
DAPHNEStreamFrame.hpp:44
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_timestamp
uint64_t get_timestamp() const
Definition
DAPHNEStreamFrame.hpp:62
dunedaq::fddetdataformats::DAPHNEStreamFrame::s_expected_bytes
static constexpr std::size_t s_expected_bytes
Definition
DAPHNEStreamFrame.hpp:59
dunedaq::fddetdataformats::DAPHNEStreamFrame::daq_header
detdataformats::DAQHeader daq_header
Definition
DAPHNEStreamFrame.hpp:87
Generated on
for DUNE-DAQ by
1.18.0