FERS 0.1.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
finalizer.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-only
2//
3// Copyright (c) 2025-present FERS Contributors (see AUTHORS.md).
4//
5// See the GNU GPLv2 LICENSE file in the FERS project root for more information.
6
7/**
8 * @file finalizer.h
9 * @brief Declares the functions for the asynchronous receiver finalization pipelines.
10 */
11
12#pragma once
13
14#include <cstddef>
15#include <memory>
16#include <span>
17#include <string>
18#include <vector>
19
22
23namespace radar
24{
25 class Receiver;
26 class Target;
27}
28
29namespace core
30{
31 struct OutputFileMetadata;
32 class OutputMetadataCollector;
33 class ProgressReporter;
34}
35
36namespace processing
37{
38 /// Builds the receiver stream descriptor used by output sinks.
41 std::span<const core::ActiveStreamingSource> streaming_sources = {});
42
43 /// Builds a non-owning output sample block over contiguous processed complex samples.
45 buildReceiverSampleBlock(const radar::Receiver* receiver, RealType first_sample_time, RealType sample_rate,
46 std::span<const ComplexType> samples, std::uint64_t sample_start,
47 std::shared_ptr<const core::OutputFileMetadata> file_metadata = nullptr);
48
49 /// Builds a sample block with active streaming-source context for VITA Context packets.
51 buildReceiverSampleBlock(const radar::Receiver* receiver, RealType first_sample_time, RealType sample_rate,
52 std::span<const ComplexType> samples, std::uint64_t sample_start,
53 std::span<const core::ActiveStreamingSource> streaming_sources,
54 std::shared_ptr<const core::OutputFileMetadata> file_metadata);
55
56 /// Builds HDF5 file metadata for a streaming receiver result emitted through the output sink.
58 const radar::Receiver* receiver, const std::string& output_path, std::size_t total_samples,
59 const std::vector<core::ActiveStreamingSource>& streaming_sources, RealType output_sample_rate);
60
61 /**
62 * @brief The main function for a dedicated pulsed-mode receiver finalizer thread.
63 *
64 * This function runs in a loop, dequeuing and processing RenderingJobs for a
65 * specific receiver. It handles all expensive rendering, signal processing,
66 * and I/O for that receiver's data.
67 *
68 * @param receiver A pointer to the pulsed-mode receiver to process.
69 * @param targets A pointer to the world's list of targets for interference calculation.
70 * @param reporter Shared pointer to the progress reporter for status updates.
71 * @param output_dir Output directory for the simulation files.
72 */
73 void runPulsedFinalizer(radar::Receiver* receiver, const std::vector<std::unique_ptr<radar::Target>>* targets,
74 const std::shared_ptr<core::ProgressReporter>& reporter, const std::string& output_dir,
75 const std::shared_ptr<core::OutputMetadataCollector>& metadata_collector = nullptr,
77
78}
const Receiver & receiver
Manages radar signal reception and response processing.
Definition receiver.h:47
double RealType
Type for real numbers.
Definition config.h:27
core::ReceiverSampleBlock buildReceiverSampleBlock(const radar::Receiver *receiver, const RealType first_sample_time, const RealType sample_rate, const std::span< const ComplexType > samples, const std::uint64_t sample_start, std::shared_ptr< const core::OutputFileMetadata > file_metadata)
Builds a non-owning output sample block over contiguous processed complex samples.
void runPulsedFinalizer(radar::Receiver *receiver, const std::vector< std::unique_ptr< radar::Target > > *targets, const std::shared_ptr< core::ProgressReporter > &reporter, const std::string &output_dir, const std::shared_ptr< core::OutputMetadataCollector > &metadata_collector, core::ReceiverOutputSink *output_sink)
The main function for a dedicated pulsed-mode receiver finalizer thread.
core::OutputFileMetadata buildStreamingOutputMetadata(const radar::Receiver *receiver, const std::string &output_path, const std::size_t total_samples, const std::vector< core::ActiveStreamingSource > &streaming_sources, const RealType output_sample_rate)
Builds HDF5 file metadata for a streaming receiver result emitted through the output sink.
core::ReceiverStreamDescriptor buildReceiverStreamDescriptor(const radar::Receiver *receiver, const RealType sample_rate, const std::span< const core::ActiveStreamingSource > streaming_sources)
Builds the receiver stream descriptor used by output sinks.
math::Vec3 max
Defines the global state for the event-driven simulation engine.
Metadata for one receiver output file.