FERS 1.0.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
output_metadata.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-only
2//
3// Copyright (c) 2026-present FERS Contributors (see AUTHORS.md).
4//
5// See the GNU GPLv2 LICENSE file in the FERS project root for more information.
6
7#pragma once
8
9#include <cstdint>
10#include <mutex>
11#include <string>
12#include <vector>
13
14#include "core/config.h"
15#include "core/sim_id.h"
16
17namespace core
18{
20 {
21 unsigned chunk_index = 0;
22 std::string i_dataset;
23 std::string q_dataset;
25 std::uint64_t sample_count = 0;
26 std::uint64_t sample_start = 0;
27 std::uint64_t sample_end_exclusive = 0;
28 };
29
31 {
34 std::uint64_t sample_count = 0;
35 std::uint64_t sample_start = 0;
36 std::uint64_t sample_end_exclusive = 0;
37 };
38
40 {
42 std::string receiver_name;
43 std::string mode;
44 std::string path;
45 std::uint64_t total_samples = 0;
46 std::uint64_t sample_start = 0;
47 std::uint64_t sample_end_exclusive = 0;
48 std::uint64_t pulse_count = 0;
49 std::uint64_t min_pulse_length_samples = 0;
50 std::uint64_t max_pulse_length_samples = 0;
52 std::vector<PulseChunkMetadata> chunks = {};
53 std::vector<CwSegmentMetadata> cw_segments = {};
54 };
55
57 {
58 unsigned schema_version = 1;
59 std::string simulation_name;
60 std::string output_directory;
64 unsigned oversample_ratio = 1;
65 std::vector<OutputFileMetadata> files;
66 };
67
69 {
70 public:
71 explicit OutputMetadataCollector(std::string output_dir);
72
73 void addFile(OutputFileMetadata file_metadata);
74
75 [[nodiscard]] OutputMetadata snapshot() const;
76
77 private:
78 mutable std::mutex _mutex;
79 OutputMetadata _metadata;
80 };
81
82 [[nodiscard]] std::string outputFileMetadataToJsonString(const OutputFileMetadata& metadata);
83 [[nodiscard]] std::string outputMetadataToJsonString(const OutputMetadata& metadata);
84}
void addFile(OutputFileMetadata file_metadata)
OutputMetadata snapshot() const
Global configuration file for the project.
double RealType
Type for real numbers.
Definition config.h:27
std::string outputFileMetadataToJsonString(const OutputFileMetadata &metadata)
std::string outputMetadataToJsonString(const OutputMetadata &metadata)
uint64_t SimId
64-bit Unique Simulation ID.
Definition sim_id.h:18
std::uint64_t sample_end_exclusive
std::uint64_t max_pulse_length_samples
std::vector< PulseChunkMetadata > chunks
std::uint64_t sample_end_exclusive
std::uint64_t min_pulse_length_samples
std::vector< CwSegmentMetadata > cw_segments
std::vector< OutputFileMetadata > files
std::string output_directory
std::string simulation_name
std::uint64_t sample_end_exclusive