DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
DAQHeader.hxx
Go to the documentation of this file.
1
2#include <bit>
3#include <cstddef>
4#include <type_traits>
5
7
8static_assert(std::is_trivially_copyable_v<DAQHeader>,
9 "DAQHeader isn't trivially copyable and can't be safely std::memcpy'd");
10static_assert(std::is_standard_layout_v<DAQHeader>,
11 "DAQHeader isn't standard layout; reinterpret_cast and offsetof can't safely be used with it");
12static_assert(std::endian::native == std::endian::little,
13 "The DAQHeader bitfield layout assumes little-endian architecture");
14
15static_assert(sizeof(DAQHeader) == 12, "DAQHeader struct size different than expected!");
16static_assert(offsetof(DAQHeader, timestamp_1) == 4, "DAQHeader timestamp_1 field not at expected offset");
17static_assert(offsetof(DAQHeader, timestamp_2) == 8, "DAQHeader timestamp_2 field not at expected offset");
18
19inline std::ostream&
20operator<<(std::ostream& o, DAQHeader const& h)
21{
22 return o << "Version:" << static_cast<unsigned>(h.version) << " DetID:" << static_cast<unsigned>(h.det_id)
23 << " CrateID:" << static_cast<unsigned>(h.crate_id) << " SlotID:" << static_cast<unsigned>(h.slot_id)
24 << " LinkID:" << static_cast<unsigned>(h.link_id) << " Timestamp: " << h.get_timestamp() << '\n';
25}
26
27} // namespace dunedaq::detdataformats
std::ostream & operator<<(std::ostream &o, DAQEthHeader const &h)
DAQHeader is a versioned and unified structure for every FE electronics.
Definition DAQHeader.hpp:23