18#include <unordered_map>
248 return _transmitters;
255 [[
nodiscard]]
const std::unordered_map<SimId, std::unique_ptr<fers_signal::RadarSignal>>&
274 [[
nodiscard]]
const std::unordered_map<SimId, std::unique_ptr<timing::PrototypeTiming>>&
337 std::vector<std::unique_ptr<radar::Platform>> _platforms;
339 std::vector<std::unique_ptr<radar::Transmitter>> _transmitters;
341 std::vector<std::unique_ptr<radar::Receiver>> _receivers;
343 std::vector<std::unique_ptr<radar::Target>> _targets;
345 std::unordered_map<SimId, std::unique_ptr<fers_signal::RadarSignal>> _waveforms;
347 std::unordered_map<std::string, SimId> _waveform_ids_by_name;
349 std::unordered_map<std::string, radar::Transmitter*> _transmitters_by_name;
351 std::unordered_map<SimId, std::unique_ptr<antenna::Antenna>> _antennas;
353 std::unordered_map<SimId, std::unique_ptr<timing::PrototypeTiming>> _timings;
355 std::priority_queue<Event, std::vector<Event>,
EventComparator> _event_queue;
Header file defining various types of antennas and their gain patterns.
const Transmitter & transmitter
const Receiver & receiver
The World class manages the simulator environment.
void scheduleInitialEvents()
Populates the event queue with the initial events for the simulation.
void add(std::unique_ptr< radar::Platform > plat) noexcept
Adds a radar platform to the simulation world.
void replace(std::unique_ptr< radar::Target > target)
Replaces an existing target, updating internal pointers.
fers_signal::RadarSignal * findWaveform(const SimId id)
Finds a radar signal by ID.
~World() noexcept=default
const std::vector< std::unique_ptr< radar::Target > > & getTargets() const noexcept
Retrieves the list of radar targets.
radar::Target * findTarget(const SimId id)
Finds a target by ID.
fers_signal::RadarSignal * findWaveformByName(const std::string &name)
Finds a waveform by name.
const std::unordered_map< SimId, std::unique_ptr< antenna::Antenna > > & getAntennas() const noexcept
Retrieves the map of antennas.
radar::Receiver * findReceiver(const SimId id)
Finds a receiver by ID.
radar::Transmitter * findTransmitter(const SimId id)
Finds a transmitter by ID.
void clear() noexcept
Clears all objects and assets from the simulation world.
void resolveReceiverDechirpReferences()
Resolves and validates receiver FMCW dechirp references after all components are loaded.
const std::unordered_map< SimId, std::unique_ptr< fers_signal::RadarSignal > > & getWaveforms() const noexcept
Retrieves the map of radar signals (waveforms).
timing::PrototypeTiming * findTiming(const SimId id)
Finds a timing source by ID.
SimulationState & getSimulationState() noexcept
Gets a mutable reference to the global simulation state.
antenna::Antenna * findAntenna(const SimId id)
Finds an antenna by ID.
const std::unordered_map< SimId, std::unique_ptr< timing::PrototypeTiming > > & getTimings() const noexcept
Retrieves the map of timing prototypes.
void swap(World &other) noexcept
Exchanges all owned world state with another world.
const std::vector< std::unique_ptr< radar::Platform > > & getPlatforms() const noexcept
Retrieves the list of platforms.
std::string dumpEventQueue() const
Dumps the current state of the event queue to a string for debugging.
radar::Platform * findPlatform(const SimId id)
Finds a platform by ID.
std::priority_queue< Event, std::vector< Event >, EventComparator > & getEventQueue() noexcept
Gets a mutable reference to the global event queue.
const std::vector< std::unique_ptr< radar::Transmitter > > & getTransmitters() const noexcept
Retrieves the list of radar transmitters.
const std::vector< std::unique_ptr< radar::Receiver > > & getReceivers() const noexcept
Retrieves the list of radar receivers.
radar::Transmitter * findTransmitterByName(const std::string &name)
Finds a transmitter by name.
RealType earliestPhaseNoiseLookupStart() const
Finds the earliest simulation time that can require CW phase-noise samples.
Manages radar signal reception and response processing.
Represents a radar transmitter system.
double RealType
Type for real numbers.
Header file for the PrototypeTiming class.
Classes for handling radar waveforms and signals.
Radar Receiver class for managing signal reception and response handling.
Defines the core structures for the event-driven simulation engine.
uint64_t SimId
64-bit Unique Simulation ID.
Defines the global state for the event-driven simulation engine.
A custom comparator for the event priority queue.
Represents a single event in the simulation's time-ordered queue.
Holds the dynamic global state of the simulation.
Defines classes for radar targets and their Radar Cross-Section (RCS) models.
Header file for the Transmitter class in the radar namespace.