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
+
61
sizeof
(
Trailer
) };
62
63
uint64_t
get_timestamp
()
const
{
return
daq_header
.get_timestamp(); }
64
66
void
set_timestamp
(
const
uint64_t new_timestamp)
67
{
68
daq_header
.timestamp_1 = new_timestamp;
69
daq_header
.timestamp_2 = new_timestamp >> 32;
70
}
71
73
uint16_t
get_adc
(
int
i_adc,
int
i_channel)
const
;
74
76
void
set_adc
(
int
i,
int
i_channel, uint16_t val);
77
78
uint8_t
get_channel0
()
const
{
return
header
.channel_0; }
79
80
uint8_t
get_channel1
()
const
{
return
header
.channel_1; }
81
82
uint8_t
get_channel2
()
const
{
return
header
.channel_2; }
83
84
uint8_t
get_channel3
()
const
{
return
header
.channel_3; }
85
86
bool
operator<
(
const
DAPHNEStreamFrame
& other)
const
{
87
return
this->
get_timestamp
() < other.
get_timestamp
();
88
}
89
90
detdataformats::DAQHeader
daq_header
;
91
Header
header
;
92
word_t
adc_words
[
s_num_adc_words
];
// NOLINT (a false accusation from the linter that s_num_adc_words is a variable)
93
Trailer
trailer
;
94
95
};
96
97
static_assert
(std::endian::native == std::endian::little,
98
"The DAPHNEStreamFrame bitfield layout assumes little-endian architecture"
);
99
100
static_assert
(
AdaptableFrameConcept<DAPHNEStreamFrame>
,
"DAPHNEStreamFrame does not satisfy the AdaptableFrameConcept"
);
101
102
}
// namespace dunedaq::fddetdataformats
103
104
#include "
detail/DAPHNEStreamFrame.hxx
"
105
106
// NOLINTEND(build/unsigned)
107
108
#endif
// FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_DAPHNESTREAMFRAME_HPP_
DAPHNEStreamFrame.hxx
DAQHeader.hpp
FrameConcepts.hpp
dunedaq::fddetdataformats::AdaptableFrameConcept
Definition
FrameConcepts.hpp:96
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::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:92
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:86
dunedaq::fddetdataformats::DAPHNEStreamFrame::get_channel1
uint8_t get_channel1() const
Definition
DAPHNEStreamFrame.hpp:80
dunedaq::fddetdataformats::DAPHNEStreamFrame::set_timestamp
void set_timestamp(const uint64_t new_timestamp)
Set the 64-bit timestamp of the frame.
Definition
DAPHNEStreamFrame.hpp:66
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:82
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:78
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:84
dunedaq::fddetdataformats::DAPHNEStreamFrame::header
Header header
Definition
DAPHNEStreamFrame.hpp:91
dunedaq::fddetdataformats::DAPHNEStreamFrame::word_t
uint32_t word_t
Definition
DAPHNEStreamFrame.hpp:37
dunedaq::fddetdataformats::DAPHNEStreamFrame::trailer
Trailer trailer
Definition
DAPHNEStreamFrame.hpp:93
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:63
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:90
Generated on
for DUNE-DAQ by
1.17.0