DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
ctbmodules
src
CTBPacketContent.hpp
Go to the documentation of this file.
1
/*
2
* CTBPacketContent.hpp
3
*
4
* Ported from
5
* https://cdcvs.fnal.gov/redmine/projects/dune-raw-data/repository/revisions/develop/entry/dune-raw-data/Overlays/CTB_content.h
6
*
7
* Developer: willpvazquez (27 July 2022)
8
*
9
* Originally Created on: Oct 8, 2017
10
* Author: nbarros
11
*/
12
13
#ifndef CTBMODULES_SRC_CTBPACKETCONTENT_HPP_
14
#define CTBMODULES_SRC_CTBPACKETCONTENT_HPP_
15
16
#include <cstdint>
17
18
namespace
dunedaq
{
19
namespace
ctbmodules
{
20
namespace
content
{
21
22
// NFB: Note that order denotes bit order in the word:
23
// Upper fields are in the lsb and lower field is in the msb
26
// static uint8_t format_version = 0x2;
27
28
typedef
struct
buffer_t
29
{
30
int
handle
;
31
size_t
len
;
32
}
buffer_t
;
33
37
38
typedef
struct
tcp_header_t
39
{
40
typedef
uint16_t
pkt_size_t
;
41
typedef
uint8_t
seq_size_t
;
42
typedef
uint8_t
ver_size_t
;
43
uint16_t
packet_size
: 16;
// Size of the data content in bytes
44
uint8_t
sequence_id
: 8;
// packet order...rotates every 256
45
uint8_t
format_version
: 8;
46
static
size_t
const
size_bytes
=
sizeof
(uint32_t);
47
static
size_t
const
n_bits_size
= 16;
48
static
size_t
const
n_bits_sequence_id
= 8;
49
static
size_t
const
n_bits_version
= 8;
50
}
tcp_header_t
;
51
52
// NFB: Careful with unions. Setting one member and then accessing another
53
// is undefined behavior in C++.
54
// However, I have tested that they work on gcc on the PTB
55
56
typedef
union
tcp_header
57
{
58
tcp_header_t
word
;
59
uint32_t
value
;
60
}
tcp_header
;
61
62
namespace
word
{
63
enum
word_type
64
{
65
t_fback
= 0x0,
66
t_lt
= 0x1,
67
t_gt
= 0x2,
68
t_ch
= 0x3,
69
t_chksum
= 0x4,
70
t_ts
= 0x7
71
};
72
75
// -- The body of a word is composed of 12 bytes
76
typedef
uint16_t
trigger_code_t
;
87
88
typedef
struct
word_t
89
{
90
typedef
uint64_t
ts_size_t
;
91
typedef
uint64_t
pad_size_t
;
92
typedef
uint64_t
word_type_t
;
93
ts_size_t
timestamp
;
94
pad_size_t
payload
: 61;
95
word_type_t
word_type
: 3;
96
static
size_t
const
size_bytes
= 4 *
sizeof
(uint32_t);
97
static
size_t
const
size_u32
= 4 *
sizeof
(uint32_t) /
sizeof
(uint32_t);
98
static
size_t
const
n_bits_timestamp
= 64;
99
static
size_t
const
n_bits_payload
= 61;
100
static
size_t
const
n_bits_type
= 3;
101
}
word_t
;
102
103
typedef
union
word
104
{
105
word_t
frame
;
106
uint8_t*
get_bytes
() {
return
reinterpret_cast<
uint8_t*
>
(&
frame
); }
107
}
word
;
108
112
113
typedef
struct
feedback_t
114
{
115
typedef
uint64_t
ts_size_t
;
116
typedef
uint16_t
code_size_t
;
117
typedef
uint16_t
source_size_t
;
118
typedef
uint32_t
wtype_size_t
;
119
typedef
uint32_t
pad_size_t
;
120
ts_size_t
timestamp
;
121
code_size_t
code
: 16;
122
source_size_t
source
: 16;
123
pad_size_t
padding
: 29;
124
wtype_size_t
word_type
: 3;
125
static
size_t
const
size_bytes
= 2 *
sizeof
(uint64_t);
126
static
size_t
const
size_u32
=
size_bytes
/
sizeof
(uint32_t);
127
static
size_t
const
n_bits_timestamp
= 64;
128
static
size_t
const
n_bits_payload
= 32;
129
static
size_t
const
n_bits_type
= 3;
130
}
feedback_t
;
131
132
typedef
struct
ch_status_t
133
{
134
typedef
uint64_t
ts_size_t
;
135
typedef
uint64_t
pds_size_t
;
136
typedef
uint64_t
crt_size_t
;
137
typedef
uint64_t
beam_size_t
;
138
typedef
uint64_t
wtype_size_t
;
139
ts_size_t
timestamp
: 60;
140
beam_size_t
beam_lo
: 4;
141
beam_size_t
beam_hi
: 12;
142
crt_size_t
crt
: 32;
143
pds_size_t
pds
: 17;
144
wtype_size_t
word_type
: 3;
145
static
size_t
const
size_bytes
= 2 *
sizeof
(uint64_t);
146
static
size_t
const
size_u32
=
size_bytes
/
sizeof
(uint32_t);
147
static
size_t
const
n_bits_timestamp
= 60;
148
static
size_t
const
n_bits_payload
= 32;
149
static
size_t
const
n_bits_type
= 3;
150
151
// aux_functions
152
beam_size_t
get_beam
()
const
{
return
(
beam_hi
<< 4 |
beam_lo
); }
153
crt_size_t
get_crt
()
const
{
return
(
crt
& 0xFFFFFFFF); }
154
pds_size_t
get_pds
()
const
{
return
(
pds
& 0x1FFFF); }
155
156
bool
get_state_crt
(
const
uint16_t channel) {
return
((
crt
& (0x1 << channel)) != 0x0); }
157
158
bool
get_state_pds
(
const
uint16_t channel) {
return
((
pds
& (0x1 << channel)) != 0x0); }
159
160
bool
get_state_beam
(
const
uint16_t channel) {
return
(((
beam_hi
<< 4 |
beam_lo
) & (0x1 << channel)) != 0x0); }
161
}
ch_status_t
;
162
163
typedef
struct
timestamp_t
164
{
165
typedef
uint64_t
ts_size_t
;
166
typedef
uint64_t
pad_size_t
;
167
typedef
uint64_t
wtype_size_t
;
168
ts_size_t
timestamp
;
169
pad_size_t
padding
: 61;
170
wtype_size_t
word_type
: 3;
171
static
size_t
const
size_bytes
= 2 *
sizeof
(uint64_t);
172
static
size_t
const
size_u32
=
size_bytes
/
sizeof
(uint32_t);
173
static
size_t
const
n_bits_timestamp
= 64;
174
static
size_t
const
n_bits_unused
= 61;
175
static
size_t
const
n_bits_type
= 3;
176
}
timestamp_t
;
177
178
typedef
struct
trigger_t
179
{
180
typedef
uint64_t
ts_size_t
;
181
typedef
uint64_t
mask_size_t
;
182
typedef
uint64_t
wtype_size_t
;
183
ts_size_t
timestamp
;
184
mask_size_t
trigger_word
: 61;
185
wtype_size_t
word_type
: 3;
186
static
size_t
const
size_bytes
= 2 *
sizeof
(uint64_t);
187
static
size_t
const
size_u32
=
size_bytes
/
sizeof
(uint32_t);
188
static
size_t
const
n_bits_timestamp
= 64;
189
static
size_t
const
n_bits_tmask
= 61;
190
static
size_t
const
n_bits_type
= 3;
191
192
bool
IsHLT
()
const
{
return
word_type
==
word_type::t_gt
; }
193
bool
IsLLT
()
const
{
return
word_type
==
word_type::t_lt
; }
194
bool
IsTrigger
(
const
unsigned
int
i)
const
195
{
196
if
(
IsHLT
())
197
return
trigger_word
& (0x1 << i);
198
if
(
IsLLT
())
199
return
i == 0 ? false :
trigger_word
& (0x1 << (i - 1));
200
return
false
;
201
}
202
}
trigger_t
;
203
204
}
// -- namespace word
205
}
// -- namespace content
206
}
// -- namespace ctbmodules
207
}
// -- namespace dunedaq
208
209
#endif
/* CTBMODULES_SRC_CTBPACKETCONTENT_HPP_ */
ctbmodules
Definition
__init__.py:1
dunedaq::ctbmodules::content::word
Definition
CTBPacketContent.hpp:62
dunedaq::ctbmodules::content::word::timestamp_t
struct dunedaq::ctbmodules::content::word::timestamp_t timestamp_t
dunedaq::ctbmodules::content::word::word_type
word_type
Definition
CTBPacketContent.hpp:64
dunedaq::ctbmodules::content::word::t_fback
@ t_fback
Definition
CTBPacketContent.hpp:65
dunedaq::ctbmodules::content::word::t_lt
@ t_lt
Definition
CTBPacketContent.hpp:66
dunedaq::ctbmodules::content::word::t_ts
@ t_ts
Definition
CTBPacketContent.hpp:70
dunedaq::ctbmodules::content::word::t_chksum
@ t_chksum
Definition
CTBPacketContent.hpp:69
dunedaq::ctbmodules::content::word::t_ch
@ t_ch
Definition
CTBPacketContent.hpp:68
dunedaq::ctbmodules::content::word::t_gt
@ t_gt
Definition
CTBPacketContent.hpp:67
dunedaq::ctbmodules::content::word::feedback_t
struct dunedaq::ctbmodules::content::word::feedback_t feedback_t
dunedaq::ctbmodules::content::word::ch_status_t
struct dunedaq::ctbmodules::content::word::ch_status_t ch_status_t
dunedaq::ctbmodules::content::word::trigger_t
struct dunedaq::ctbmodules::content::word::trigger_t trigger_t
dunedaq::ctbmodules::content::word::word_t
struct dunedaq::ctbmodules::content::word::word_t word_t
dunedaq::ctbmodules::content::word::trigger_code_t
uint16_t trigger_code_t
Definition
CTBPacketContent.hpp:76
dunedaq::ctbmodules::content
Definition
CTBPacketContent.hpp:20
dunedaq::ctbmodules::content::tcp_header
union dunedaq::ctbmodules::content::tcp_header tcp_header
dunedaq::ctbmodules::content::tcp_header_t
struct dunedaq::ctbmodules::content::tcp_header_t tcp_header_t
dunedaq::ctbmodules::content::buffer_t
struct dunedaq::ctbmodules::content::buffer_t buffer_t
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::ctbmodules::content::buffer_t
Definition
CTBPacketContent.hpp:29
dunedaq::ctbmodules::content::buffer_t::len
size_t len
Definition
CTBPacketContent.hpp:31
dunedaq::ctbmodules::content::buffer_t::handle
int handle
Definition
CTBPacketContent.hpp:30
dunedaq::ctbmodules::content::tcp_header_t
Definition
CTBPacketContent.hpp:39
dunedaq::ctbmodules::content::tcp_header_t::sequence_id
uint8_t sequence_id
Definition
CTBPacketContent.hpp:44
dunedaq::ctbmodules::content::tcp_header_t::packet_size
uint16_t packet_size
Definition
CTBPacketContent.hpp:43
dunedaq::ctbmodules::content::tcp_header_t::seq_size_t
uint8_t seq_size_t
Definition
CTBPacketContent.hpp:41
dunedaq::ctbmodules::content::tcp_header_t::n_bits_version
static size_t const n_bits_version
Definition
CTBPacketContent.hpp:49
dunedaq::ctbmodules::content::tcp_header_t::n_bits_sequence_id
static size_t const n_bits_sequence_id
Definition
CTBPacketContent.hpp:48
dunedaq::ctbmodules::content::tcp_header_t::n_bits_size
static size_t const n_bits_size
Definition
CTBPacketContent.hpp:47
dunedaq::ctbmodules::content::tcp_header_t::pkt_size_t
uint16_t pkt_size_t
Definition
CTBPacketContent.hpp:40
dunedaq::ctbmodules::content::tcp_header_t::ver_size_t
uint8_t ver_size_t
Definition
CTBPacketContent.hpp:42
dunedaq::ctbmodules::content::tcp_header_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:46
dunedaq::ctbmodules::content::tcp_header_t::format_version
uint8_t format_version
Definition
CTBPacketContent.hpp:45
dunedaq::ctbmodules::content::word::ch_status_t
Definition
CTBPacketContent.hpp:133
dunedaq::ctbmodules::content::word::ch_status_t::beam_hi
beam_size_t beam_hi
Definition
CTBPacketContent.hpp:141
dunedaq::ctbmodules::content::word::ch_status_t::get_pds
pds_size_t get_pds() const
Definition
CTBPacketContent.hpp:154
dunedaq::ctbmodules::content::word::ch_status_t::wtype_size_t
uint64_t wtype_size_t
Definition
CTBPacketContent.hpp:138
dunedaq::ctbmodules::content::word::ch_status_t::beam_lo
beam_size_t beam_lo
Definition
CTBPacketContent.hpp:140
dunedaq::ctbmodules::content::word::ch_status_t::size_u32
static size_t const size_u32
Definition
CTBPacketContent.hpp:146
dunedaq::ctbmodules::content::word::ch_status_t::crt_size_t
uint64_t crt_size_t
Definition
CTBPacketContent.hpp:136
dunedaq::ctbmodules::content::word::ch_status_t::get_crt
crt_size_t get_crt() const
Definition
CTBPacketContent.hpp:153
dunedaq::ctbmodules::content::word::ch_status_t::ts_size_t
uint64_t ts_size_t
Definition
CTBPacketContent.hpp:134
dunedaq::ctbmodules::content::word::ch_status_t::pds_size_t
uint64_t pds_size_t
Definition
CTBPacketContent.hpp:135
dunedaq::ctbmodules::content::word::ch_status_t::get_beam
beam_size_t get_beam() const
Definition
CTBPacketContent.hpp:152
dunedaq::ctbmodules::content::word::ch_status_t::get_state_pds
bool get_state_pds(const uint16_t channel)
Definition
CTBPacketContent.hpp:158
dunedaq::ctbmodules::content::word::ch_status_t::get_state_crt
bool get_state_crt(const uint16_t channel)
Definition
CTBPacketContent.hpp:156
dunedaq::ctbmodules::content::word::ch_status_t::pds
pds_size_t pds
Definition
CTBPacketContent.hpp:143
dunedaq::ctbmodules::content::word::ch_status_t::crt
crt_size_t crt
Definition
CTBPacketContent.hpp:142
dunedaq::ctbmodules::content::word::ch_status_t::n_bits_type
static size_t const n_bits_type
Definition
CTBPacketContent.hpp:149
dunedaq::ctbmodules::content::word::ch_status_t::word_type
wtype_size_t word_type
Definition
CTBPacketContent.hpp:144
dunedaq::ctbmodules::content::word::ch_status_t::n_bits_payload
static size_t const n_bits_payload
Definition
CTBPacketContent.hpp:148
dunedaq::ctbmodules::content::word::ch_status_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:145
dunedaq::ctbmodules::content::word::ch_status_t::timestamp
ts_size_t timestamp
Definition
CTBPacketContent.hpp:139
dunedaq::ctbmodules::content::word::ch_status_t::get_state_beam
bool get_state_beam(const uint16_t channel)
Definition
CTBPacketContent.hpp:160
dunedaq::ctbmodules::content::word::ch_status_t::beam_size_t
uint64_t beam_size_t
Definition
CTBPacketContent.hpp:137
dunedaq::ctbmodules::content::word::ch_status_t::n_bits_timestamp
static size_t const n_bits_timestamp
Definition
CTBPacketContent.hpp:147
dunedaq::ctbmodules::content::word::feedback_t
Definition
CTBPacketContent.hpp:114
dunedaq::ctbmodules::content::word::feedback_t::timestamp
ts_size_t timestamp
Definition
CTBPacketContent.hpp:120
dunedaq::ctbmodules::content::word::feedback_t::pad_size_t
uint32_t pad_size_t
Definition
CTBPacketContent.hpp:119
dunedaq::ctbmodules::content::word::feedback_t::size_u32
static size_t const size_u32
Definition
CTBPacketContent.hpp:126
dunedaq::ctbmodules::content::word::feedback_t::wtype_size_t
uint32_t wtype_size_t
Definition
CTBPacketContent.hpp:118
dunedaq::ctbmodules::content::word::feedback_t::word_type
wtype_size_t word_type
Definition
CTBPacketContent.hpp:124
dunedaq::ctbmodules::content::word::feedback_t::code
code_size_t code
Definition
CTBPacketContent.hpp:121
dunedaq::ctbmodules::content::word::feedback_t::n_bits_type
static size_t const n_bits_type
Definition
CTBPacketContent.hpp:129
dunedaq::ctbmodules::content::word::feedback_t::source_size_t
uint16_t source_size_t
Definition
CTBPacketContent.hpp:117
dunedaq::ctbmodules::content::word::feedback_t::n_bits_payload
static size_t const n_bits_payload
Definition
CTBPacketContent.hpp:128
dunedaq::ctbmodules::content::word::feedback_t::padding
pad_size_t padding
Definition
CTBPacketContent.hpp:123
dunedaq::ctbmodules::content::word::feedback_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:125
dunedaq::ctbmodules::content::word::feedback_t::n_bits_timestamp
static size_t const n_bits_timestamp
Definition
CTBPacketContent.hpp:127
dunedaq::ctbmodules::content::word::feedback_t::source
source_size_t source
Definition
CTBPacketContent.hpp:122
dunedaq::ctbmodules::content::word::feedback_t::ts_size_t
uint64_t ts_size_t
Definition
CTBPacketContent.hpp:115
dunedaq::ctbmodules::content::word::feedback_t::code_size_t
uint16_t code_size_t
Definition
CTBPacketContent.hpp:116
dunedaq::ctbmodules::content::word::timestamp_t
Definition
CTBPacketContent.hpp:164
dunedaq::ctbmodules::content::word::timestamp_t::size_u32
static size_t const size_u32
Definition
CTBPacketContent.hpp:172
dunedaq::ctbmodules::content::word::timestamp_t::wtype_size_t
uint64_t wtype_size_t
Definition
CTBPacketContent.hpp:167
dunedaq::ctbmodules::content::word::timestamp_t::pad_size_t
uint64_t pad_size_t
Definition
CTBPacketContent.hpp:166
dunedaq::ctbmodules::content::word::timestamp_t::padding
pad_size_t padding
Definition
CTBPacketContent.hpp:169
dunedaq::ctbmodules::content::word::timestamp_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:171
dunedaq::ctbmodules::content::word::timestamp_t::n_bits_timestamp
static size_t const n_bits_timestamp
Definition
CTBPacketContent.hpp:173
dunedaq::ctbmodules::content::word::timestamp_t::n_bits_type
static size_t const n_bits_type
Definition
CTBPacketContent.hpp:175
dunedaq::ctbmodules::content::word::timestamp_t::n_bits_unused
static size_t const n_bits_unused
Definition
CTBPacketContent.hpp:174
dunedaq::ctbmodules::content::word::timestamp_t::timestamp
ts_size_t timestamp
Definition
CTBPacketContent.hpp:168
dunedaq::ctbmodules::content::word::timestamp_t::ts_size_t
uint64_t ts_size_t
Definition
CTBPacketContent.hpp:165
dunedaq::ctbmodules::content::word::timestamp_t::word_type
wtype_size_t word_type
Definition
CTBPacketContent.hpp:170
dunedaq::ctbmodules::content::word::trigger_t
Definition
CTBPacketContent.hpp:179
dunedaq::ctbmodules::content::word::trigger_t::n_bits_tmask
static size_t const n_bits_tmask
Definition
CTBPacketContent.hpp:189
dunedaq::ctbmodules::content::word::trigger_t::mask_size_t
uint64_t mask_size_t
Definition
CTBPacketContent.hpp:181
dunedaq::ctbmodules::content::word::trigger_t::timestamp
ts_size_t timestamp
Definition
CTBPacketContent.hpp:183
dunedaq::ctbmodules::content::word::trigger_t::trigger_word
mask_size_t trigger_word
Definition
CTBPacketContent.hpp:184
dunedaq::ctbmodules::content::word::trigger_t::word_type
wtype_size_t word_type
Definition
CTBPacketContent.hpp:185
dunedaq::ctbmodules::content::word::trigger_t::ts_size_t
uint64_t ts_size_t
Definition
CTBPacketContent.hpp:180
dunedaq::ctbmodules::content::word::trigger_t::n_bits_type
static size_t const n_bits_type
Definition
CTBPacketContent.hpp:190
dunedaq::ctbmodules::content::word::trigger_t::IsLLT
bool IsLLT() const
Definition
CTBPacketContent.hpp:193
dunedaq::ctbmodules::content::word::trigger_t::IsTrigger
bool IsTrigger(const unsigned int i) const
Definition
CTBPacketContent.hpp:194
dunedaq::ctbmodules::content::word::trigger_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:186
dunedaq::ctbmodules::content::word::trigger_t::n_bits_timestamp
static size_t const n_bits_timestamp
Definition
CTBPacketContent.hpp:188
dunedaq::ctbmodules::content::word::trigger_t::IsHLT
bool IsHLT() const
Definition
CTBPacketContent.hpp:192
dunedaq::ctbmodules::content::word::trigger_t::wtype_size_t
uint64_t wtype_size_t
Definition
CTBPacketContent.hpp:182
dunedaq::ctbmodules::content::word::trigger_t::size_u32
static size_t const size_u32
Definition
CTBPacketContent.hpp:187
dunedaq::ctbmodules::content::word::word_t
Definition
CTBPacketContent.hpp:89
dunedaq::ctbmodules::content::word::word_t::ts_size_t
uint64_t ts_size_t
Definition
CTBPacketContent.hpp:90
dunedaq::ctbmodules::content::word::word_t::pad_size_t
uint64_t pad_size_t
Definition
CTBPacketContent.hpp:91
dunedaq::ctbmodules::content::word::word_t::payload
pad_size_t payload
Definition
CTBPacketContent.hpp:94
dunedaq::ctbmodules::content::word::word_t::word_type_t
uint64_t word_type_t
Definition
CTBPacketContent.hpp:92
dunedaq::ctbmodules::content::word::word_t::word_type
word_type_t word_type
Definition
CTBPacketContent.hpp:95
dunedaq::ctbmodules::content::word::word_t::n_bits_payload
static size_t const n_bits_payload
Definition
CTBPacketContent.hpp:99
dunedaq::ctbmodules::content::word::word_t::timestamp
ts_size_t timestamp
Definition
CTBPacketContent.hpp:93
dunedaq::ctbmodules::content::word::word_t::n_bits_type
static size_t const n_bits_type
Definition
CTBPacketContent.hpp:100
dunedaq::ctbmodules::content::word::word_t::size_u32
static size_t const size_u32
Definition
CTBPacketContent.hpp:97
dunedaq::ctbmodules::content::word::word_t::size_bytes
static size_t const size_bytes
Definition
CTBPacketContent.hpp:96
dunedaq::ctbmodules::content::word::word_t::n_bits_timestamp
static size_t const n_bits_timestamp
Definition
CTBPacketContent.hpp:98
dunedaq::ctbmodules::content::tcp_header
Definition
CTBPacketContent.hpp:57
dunedaq::ctbmodules::content::tcp_header::word
tcp_header_t word
Definition
CTBPacketContent.hpp:58
dunedaq::ctbmodules::content::tcp_header::value
uint32_t value
Definition
CTBPacketContent.hpp:59
dunedaq::ctbmodules::content::word::word
Definition
CTBPacketContent.hpp:104
dunedaq::ctbmodules::content::word::word::frame
word_t frame
Definition
CTBPacketContent.hpp:105
dunedaq::ctbmodules::content::word::word::get_bytes
uint8_t * get_bytes()
Definition
CTBPacketContent.hpp:106
Generated on
for DUNE-DAQ by
1.18.0