SRS-control 0.1.4
Loading...
Searching...
No Matches
DataStructsFormat.hpp
Go to the documentation of this file.
1#include <fmt/base.h>
2#include <fmt/format.h>
3#include <fmt/ranges.h>
5
6template <>
7class fmt::formatter<srs::ReceiveDataHeader>
8{
9 public:
10 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
11 template <typename FmtContent>
12 constexpr auto format(const srs::ReceiveDataHeader& header, FmtContent& ctn) const
13 {
14 return format_to(
15 ctn.out(),
16 "Header data: [frame counter: {}, vmm tag: {}, fec id: {:08b}, udp timestamp: {}, overflow: {}]",
17 header.frame_counter,
18 fmt::join(header.vmm_tag, ""),
19 header.fec_id,
20 header.udp_timestamp,
21 header.overflow);
22 }
23};
24
25template <>
26class fmt::formatter<srs::MarkerData>
27{
28 public:
29 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
30 template <typename FmtContent>
31 constexpr auto format(const srs::MarkerData& marker, FmtContent& ctn) const
32 {
33 return fmt::format_to(
34 ctn.out(), "Marker data: [vmm id: {}, srs timestamp: {}]", marker.vmm_id, marker.srs_timestamp);
35 }
36};
37
38template <>
39class fmt::formatter<srs::HitData>
40{
41 public:
42 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
43 template <typename FmtContent>
44 constexpr auto format(const srs::HitData& hit, FmtContent& ctn) const
45 {
46 return fmt::format_to(
47 ctn.out(),
48 "Hit data: [Over threshold: {}, channel num: {}, tdc: {}, adc: {}, offset: {}, vmm id: {}, bc id: {}]",
50 hit.channel_num,
51 hit.tdc,
52 hit.adc,
53 hit.offset,
54 hit.vmm_id,
55 hit.bc_id);
56 }
57};
58
59template <>
60class fmt::formatter<srs::StructData>
61{
62 public:
63 static constexpr auto parse(format_parse_context& ctx) { return ctx.end(); }
64 template <typename FmtContent>
65 constexpr auto format(const srs::StructData& struct_data, FmtContent& ctn) const
66 {
67 return format_to(ctn.out(),
68 "{}\n{}\n{}\n",
69 struct_data.header,
70 fmt::join(struct_data.marker_data, "\n"),
71 fmt::join(struct_data.hit_data, "\n"));
72 }
73};
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 "VM3".
ReceiveDataHeader header
Header data.
std::vector< MarkerData > marker_data
Marker data.
std::vector< HitData > hit_data
Hit data.