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