SRS-control 0.1.4
 
Loading...
Searching...
No Matches
DataStructsFormat.hpp
Go to the documentation of this file.
1#include <fmt/format.h>
2#include <fmt/ranges.h>
4
5template <>
6class fmt::formatter<srs::ReceiveDataHeader>
7{
8 public:
9 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
10 template <typename FmtContent>
11 constexpr auto format(const srs::ReceiveDataHeader& header, FmtContent& ctn) const
12 {
13 return format_to(
14 ctn.out(),
15 "Header data: [frame counter: {}, vmm tag: {}, fec id: {:08b}, udp timestamp: {}, overflow: {}]",
16 header.frame_counter,
17 fmt::join(header.vmm_tag, ""),
18 header.fec_id,
19 header.udp_timestamp,
20 header.overflow);
21 }
22};
23
24template <>
25class fmt::formatter<srs::MarkerData>
26{
27 public:
28 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
29 template <typename FmtContent>
30 constexpr auto format(const srs::MarkerData& marker, FmtContent& ctn) const
31 {
32 return format_to(
33 ctn.out(), "Marker data: [vmm id: {}, srs timestamp: {}]", marker.vmm_id, marker.srs_timestamp);
34 }
35};
36
37template <>
38class fmt::formatter<srs::HitData>
39{
40 public:
41 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
42 template <typename FmtContent>
43 constexpr auto format(const srs::HitData& hit, FmtContent& ctn) const
44 {
45 return format_to(
46 ctn.out(),
47 "Hit data: [Over threshold: {}, channel num: {}, tdc: {}, adc: {}, offset: {}, vmm id: {}, bc id: {}]",
49 hit.channel_num,
50 hit.tdc,
51 hit.adc,
52 hit.offset,
53 hit.vmm_id,
54 hit.bc_id);
55 }
56};
57
58template <>
59class fmt::formatter<srs::StructData>
60{
61 public:
62 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
63 template <typename FmtContent>
64 constexpr auto format(const srs::StructData& struct_data, FmtContent& ctn) const
65 {
66 return format_to(ctn.out(),
67 "{}\n{}\n{}\n",
68 struct_data.header,
69 fmt::join(struct_data.marker_data, "\n"),
70 fmt::join(struct_data.hit_data, "\n"));
71 }
72};
static constexpr auto parse(format_parse_context &ctx)
constexpr auto format(const srs::HitData &hit, FmtContent &ctn) const
constexpr auto format(const srs::MarkerData &marker, FmtContent &ctn) const
static constexpr auto parse(format_parse_context &ctx)
constexpr auto format(const srs::ReceiveDataHeader &header, FmtContent &ctn) const
static constexpr auto parse(format_parse_context &ctx)
static constexpr auto parse(format_parse_context &ctx)
constexpr auto format(const srs::StructData &struct_data, FmtContent &ctn) const
uint8_t vmm_id
VMM ID.
uint8_t tdc
TDC value.
bool is_over_threshold
whether the hit data is over the threshould
uint8_t channel_num
Channel number.
uint8_t offset
Offset value.
uint16_t adc
ADC value.
uint16_t bc_id
BC ID.
uint64_t srs_timestamp
Timestamp value.
uint8_t vmm_id
VMM ID for the marker data.
uint32_t udp_timestamp
UDP timestamp.
uint32_t overflow
Overflow value.
uint32_t frame_counter
The counting value for current UDP data frame.
std::array< char, VMM_TAG_BIT_LENGTH > vmm_tag
Hard-coded text "VMM3".
ReceiveDataHeader header
Header data.
std::vector< MarkerData > marker_data
Marker data.
std::vector< HitData > hit_data
Hit data.