FERS 0.1.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
finalizer_pipeline.h File Reference

Declares focused, testable pipeline steps for receiver finalization. More...

#include <cstddef>
#include <memory>
#include <span>
#include <string>
#include <tuple>
#include <vector>
#include "core/config.h"
#include "core/simulation_state.h"
+ Include dependency graph for finalizer_pipeline.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  processing::pipeline::SampleSpan
 Half-open sample span used for dechirped LO-active finalization ranges. More...
 

Namespaces

namespace  timing
 
namespace  radar
 
namespace  serial
 
namespace  core
 
namespace  simulation
 
namespace  processing
 
namespace  processing::pipeline
 

Functions

void processing::pipeline::advanceTimingModel (timing::Timing *timing_model, const radar::Receiver *receiver, RealType rate)
 Advances the receiver's timing model to the start of the next processing window.
 
std::tuple< RealType, RealTypeprocessing::pipeline::calculateJitteredStart (RealType ideal_start, RealType first_phase_noise, RealType carrier_freq, RealType rate)
 Calculates the jittered start time and fractional delay from a phase noise sample.
 
void processing::pipeline::applyStreamingInterference (std::span< ComplexType > window, RealType actual_start, RealType dt, const radar::Receiver *receiver, const std::vector< core::ActiveStreamingSource > &streaming_sources, const std::vector< std::unique_ptr< radar::Target > > *targets, core::ReceiverTrackerCache &tracker_cache, const simulation::CwPhaseNoiseLookup *phase_noise_lookup=nullptr)
 Applies streaming interference to a time window.
 
void processing::pipeline::applyPulsedInterference (std::vector< ComplexType > &iq_buffer, const std::vector< std::unique_ptr< serial::Response > > &interference_log)
 Renders and applies pulsed interference to a streaming IQ buffer.
 
void processing::pipeline::applyPulsedInterference (std::vector< ComplexType > &iq_buffer, const std::vector< std::unique_ptr< serial::Response > > &interference_log, std::span< const SampleSpan > active_spans, RealType output_sample_rate)
 Renders and applies pulsed interference only inside active sample spans.
 
void processing::pipeline::addPhaseNoiseToWindow (std::span< const RealType > noise, std::span< ComplexType > window)
 Applies a pre-generated sequence of phase noise samples to an I/Q buffer.
 
RealType processing::pipeline::applyDownsamplingAndQuantization (std::vector< ComplexType > &buffer)
 Downsamples and quantizes an IQ buffer.
 
void processing::pipeline::applyDownsampling (std::vector< ComplexType > &buffer)
 Downsamples an IQ buffer to the configured output rate without quantization.
 
void processing::pipeline::exportStreamingToHdf5 (const std::string &filename, const std::vector< ComplexType > &iq_buffer, RealType fullscale, RealType ref_freq, const core::OutputFileMetadata *metadata=nullptr, RealType sample_rate=0.0)
 Exports a finalized streaming IQ buffer to an HDF5 file.
 

Detailed Description

Declares focused, testable pipeline steps for receiver finalization.

This header defines the individual, single-responsibility functions that constitute the signal processing pipeline for both pulsed and continuous-wave receivers. By breaking the finalization process into these discrete steps, each function becomes highly cohesive, easier to understand, and independently testable.

Definition in file finalizer_pipeline.h.