WSF
WsfPassiveSensor::PassiveRcvr Class Reference

A specialized WsfEM_Rcvr that can receive on multiple frequency bands. More...

#include <WsfPassiveSensor.hpp>

Inheritance diagram for WsfPassiveSensor::PassiveRcvr:
Collaboration diagram for WsfPassiveSensor::PassiveRcvr:

Public Member Functions

 PassiveRcvr (WsfEM_Antenna *aAntennaPtr)
 PassiveRcvr (const PassiveRcvr &aSrc, WsfEM_Antenna *aAntennaPtr)
bool Initialize (WsfSimulation &aSimulation) override
bool ProcessInput (UtInput &aInput) override
bool CanInteractWith (WsfEM_Xmtr *aXmtrPtr) override
bool AddInteractor (WsfEM_Xmtr *aXmtrPtr) override
bool RemoveInteractor (WsfEM_Xmtr *aXmtrPtr) override
void EmitterActiveCallback (double aSimTime, WsfEM_Interaction &aResult) override
void SignalChangeCallback (double aSimTime, size_t aTargetIndex) override
bool TuneFrequencyBand (double aSimTime, bool aReset, unsigned int aFrequencyBandNumber, double aLowerFreq, double aUpperFreq, double aDwellTime, double aRevisitTime)
double ComputeReceivedPower (double aSourceAz, double aSourceEl, double aEBS_Az, double aEBS_El, double aReceivedPowerDensity, WsfEM_Types::Polarization aPolarization, double aFrequency, double &aAntennaGain) override
 WsfEM_Rcvr (RcvrFunction aFunction, WsfEM_Antenna *aAntennaPtr=nullptr)
 WsfEM_Rcvr (const WsfEM_Rcvr &aSrc, WsfEM_Antenna *aAntennaPtr=nullptr)
 ~WsfEM_Rcvr () override
std::string GetName () const
 Required to display error messages in WsfComponentFactoryList.
void UpdateNoisePower (double aPulseWidth=0.0)
bool CheckXmtrMasking ()
ComponentListGetComponents ()
const ComponentListGetComponents () const
const char * GetScriptClassName () const override
void Activate ()
virtual void Deactivate ()
virtual double ComputeSignalToNoise (double aReceivedSignalPower, double aClutterPower, double aReceivedInterferencePower)
bool Initialize (WsfSimulation &aSimulation) override
bool ProcessInput (UtInput &aInput) override
virtual bool ProcessInputBlock (UtInput &aInput)
 A convenience method to check for and process a 'receiver/end_receiver' block.
double GetBandwidthEffect (double aSignalFreq, double aSignalBW) const
double GetDetectionThreshold () const
RcvrFunction GetFunction () const
double GetInstantaneousBandwidth () const
double GetNoisePower () const
bool IsNoisePowerExplicit () const
double GetNoiseFigure () const
double GetNoiseMultiplier () const
void SetNoiseMultiplier (double aNoiseMultiplier)
double GetPolarizationEffect (WsfEM_Types::Polarization aPolarization) const
void SetAntennaOhmicLoss (double aAntennaOhmicLoss)
double GetAntennaOhmicLoss ()
void SetDetectionThreshold (double aDetectionThreshold)
void SetBandwidth (double aBandwidth) override
void SetFrequency (double aFrequency) override
void SetInstantaneousBandwidth (double aInstantaneousBandwidth)
void SetNoiseFigure (double aNoiseFigure)
void SetNoisePower (double aNoisePower)
void SetPolarization (WsfEM_Types::Polarization aPolarization) override
void SetPolarizationEffect (WsfEM_Types::Polarization aPolarization, double aFraction)
void SetReceiveLineLoss (double aReceiveLineLoss)
double GetReceiveLineLoss () const
virtual void UpdateInteractions (WsfEM_Xmtr *aXmtrPtr)
size_t GetCommInteractorCount () const
 Get the number of potentially interacting communications transmitters.
WsfEM_XmtrGetCommInteractorEntry (unsigned int aIndex) const
size_t GetInterferenceInteractorCount () const
 Get the number of potentially interacting interference transmitters.
WsfEM_XmtrGetInterferenceInteractorEntry (size_t aIndex) const
size_t GetSensorInteractorCount () const
 Get the number of potentially interacting sensor transmitters.
WsfEM_XmtrGetSensorInteractorEntry (size_t aIndex) const
unsigned int GetInteractorCount () const
WsfEM_XmtrGetInteractorEntry (unsigned int aIndex) const
Public Member Functions inherited from WsfEM_XmtrRcvr
 WsfEM_XmtrRcvr (WsfEM_Antenna *aAntennaPtr=nullptr)
 WsfEM_XmtrRcvr (const WsfEM_XmtrRcvr &aSrc, WsfEM_Antenna *aAntennaPtr)
virtual ~WsfEM_XmtrRcvr ()
WsfPlatformGetPlatform () const
WsfArticulatedPartGetArticulatedPart () const
virtual void UpdatePosition (double aSimTime)
const char * GetScriptClassName () const override
WsfEM_AttenuationGetAttenuationModel () const
void SetAttenuationModel (WsfEM_Attenuation *aAttenuationPtr)
WsfStringId GetAttenuationModelType () const
 Return the type of the attenuation model (if one is defined).
void SetAttenuationModelType (WsfStringId aAttenuationType)
WsfEM_PropagationGetPropagationModel () const
void SetPropagationModel (WsfEM_Propagation *aPropagationPtr)
WsfStringId GetPropagationModelType () const
 Return the type of the propagation model (if one is defined).
void SetPropagationModelType (WsfStringId aPropagationType)
void SetAttenuationInputEnabled (bool aEnabled)
 Enable or disable 'attenuation_model' input.
void SetPropagationInputEnabled (bool aEnabled)
 Enable or disable 'propagation_model' input.
WsfEM_AntennaGetAntenna () const
 Get the pointer associated geometry object.
void SetAntenna (WsfEM_Antenna *aAntennaPtr)
WsfAntennaPatternGetAntennaPattern (WsfEM_Types::Polarization aPolarization, double aFrequency) const
bool SetAntennaPattern (WsfAntennaPattern *aAntennaPatternPtr, WsfEM_Types::Polarization aPolarization, double aFrequency)
bool AddAntennaPattern (WsfAntennaPattern *aAntennaPatternPtr, WsfEM_Types::Polarization aPolarization, double aFrequency)
const AntennaPatternListGetAntennaPatternList (WsfEM_Types::Polarization aPolarization) const
double GetBeamTilt () const
void SetBeamTilt (double aBeamTilt)
 Set the angle of the boresight of the antenna gain pattern above/below (+/-) the antenna boresight.
virtual double GetAntennaGain (WsfEM_Types::Polarization aPolarization, double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El)
virtual WSF_DEPRECATED double GetAzimuthBeamwidth () const final
virtual double GetAzimuthBeamwidth (double aEBS_Azimuth, double aEBS_Elevation) const
virtual WSF_DEPRECATED double GetElevationBeamwidth () const final
virtual double GetElevationBeamwidth (double aEBS_Azimuth, double aEBS_Elevation) const
virtual double GetPeakAntennaGain () const
virtual double GetMinimumAntennaGain () const
virtual void SetAntennaBeamCount (unsigned int aBeamCount)
bool DebugEnabled () const
 Determine if debugging is enabled.
void SetDebugEnabled (bool aDebugEnabled)
bool IsHorizonMaskingEnabled () const
 determine if horizon masking is to be checked
bool IsTerrainMaskingEnabled () const
 determine if terrain masking is to be checked
std::string MaskingMode () const
 Gets the masking mode.
void SetMaskingMode (const std::string &aTerrainMaskingMode)
 Set the type of masking to perform.
bool CheckMasking () const
 determine if horizon and terrain masking is to be checked
void SetCheckMasking (bool aCheckMasking)
 enable/disable checking of horizon and terrain masking
void DisableMaskingCheck ()
 disables the checking of horizon and terrain masking (retained for compatibility)
WsfModeGetMode () const
void SetMode (WsfMode *aModePtr)
size_t GetIndex () const
 Get the index of the xmtr/rcvr in the complex assembly.
void SetIndex (size_t aIndex)
 Set the index of the xmtr/rcvr in the complex assembly.
WsfSimulationGetSimulation () const
WsfEM_ManagerGetEM_Manager () const
double GetEarthRadiusMultiplier () const
double GetFrequency () const
double GetWavelength () const
double GetBandwidth () const
bool IsBandwidthExplicit () const
double GetInternalLoss () const
WsfEM_Types::Polarization GetPolarization () const
 Get the polarization of the EM system.
void SetEarthRadiusMultiplier (double aMultiplier)
void SetInternalLoss (double aInternalLoss)
Public Member Functions inherited from WsfUniqueId
 WsfUniqueId ()
 Construtor initializes the unique identifier to 0.
 WsfUniqueId (const WsfUniqueId &)
 Copy constructor initializes the unique identifier to 0.
WsfUniqueIdoperator= (const WsfUniqueId &)
unsigned int GetUniqueId () const
 Get the unique identifier assigned to this object.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
Public Member Functions inherited from WsfAuxDataEnabled
 WsfAuxDataEnabled ()=default
 WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default
WsfAuxDataEnabledoperator= (const WsfAuxDataEnabled &aRhs)
 WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default
WsfAuxDataEnabledoperator= (WsfAuxDataEnabled &&)=default
virtual ~WsfAuxDataEnabled () noexcept
void SetAuxData (const WsfAttributeContainer &aAuxData)
void DeleteAuxData ()
 Delete the aux data container from the object.
void MergeAuxData (const WsfAuxDataEnabled &aSrc)
 Merge the object's aux data with aux data from an existing object.
void UpdateAuxData (const WsfAuxDataEnabled &aSrc)
 Update the object's aux data with aux data from an existing object.
bool HasAuxData () const
 Returns true if this object has aux data.
bool ProcessInput (UtInput &aInput)
template<typename T>
void Serialize (T &aBuff)
 (De)serialization for XIO
WsfAttributeContainerGetAuxData ()
const WsfAttributeContainerGetAuxData () const noexcept
const WsfAttributeContainerGetAuxDataConst () const noexcept

Public Attributes

std::vector< FrequencyBandmFrequencyBands
PassiveModemModePtr
bool mPSOS_Enabled
bool mHavePSOS_FrequencyData
bool mPSOS_DebugEnabled

Additional Inherited Members

Public Types inherited from WsfEM_Rcvr
enum  RcvrFunction {
  cRF_UNDEFINED , cRF_COMM , cRF_SENSOR , cRF_PASSIVE_SENSOR ,
  cRF_INTERFERER
}
 RcvrFunction defines the intended purpose of the receiver. More...
using Component = WsfEM_RcvrComponent
 Even though this isn't a component, it must have a role in order to use component factories.
using ComponentList = WsfComponentListT<WsfEM_RcvrComponent>
Public Types inherited from WsfEM_XmtrRcvr
using AntennaPatternList = std::vector<std::pair<WsfAntennaPattern*, double>>
 Vector of pairs of antenna pattern pointer and associated lower frequency bounds.
static double ComputeSystemNoiseTemperature (double aElevation, double aAntennaOhmicLoss, double aReceiveLineLoss, double aNoiseFigure, double aFrequency)
static void AssociateSystems (WsfEM_XmtrRcvr *aSystem1Ptr, WsfEM_XmtrRcvr *aSystem2Ptr)
Static Public Attributes inherited from WsfAuxDataEnabled
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataAccessed
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataDestroyed
using InteractorList = std::vector<WsfEM_Xmtr*>
void UpdateIndices ()
Protected Member Functions inherited from WsfUniqueId
void AssignUniqueId (WsfSimulation *aSimulationPtr)
InteractorList mCommInteractors
InteractorList mSensorInteractors
InteractorList mInterferenceInteractors
WsfStringId mAttenuationType
 The type of the atmospheric attenuation model to be used.
WsfStringId mPropagationType
 The type of the propagation model to be used.
WsfEM_AttenuationmAttenuationPtr
 Pointer to the atmospheric attenuation model.
WsfEM_PropagationmPropagationPtr
 Pointer to the propagation object.
WsfModemModePtr
WsfEM_AntennamAntennaPtr
 Pointer to the 'geometry' object for this transmitter/receiver.
std::array< AntennaPatternList, WsfEM_Types::cPOL_COUNTmPatternTables {}
WsfEM_XmtrRcvrmAssociatePtr
double mBeamTilt
double mEarthRadiusMultiplier
double mFrequency
double mBandwidth
double mInternalLoss
WsfEM_Types::Polarization mPolarization
size_t mIndex
std::array< bool, WsfEM_Types::cPOL_COUNTmUsedExplicitPolarization {{false}}
bool mDebugEnabled
unsigned int mTerrainMaskingMode
 Settings used for masking checks.
bool mCheckMasking
 true if horizon and terrain masking enabled.
bool mExplicitBandwidth
 true if explicit 'bandwidth' specified

Detailed Description

A specialized WsfEM_Rcvr that can receive on multiple frequency bands.

Constructor & Destructor Documentation

◆ PassiveRcvr() [1/2]

WsfPassiveSensor::PassiveRcvr::PassiveRcvr ( WsfEM_Antenna * aAntennaPtr)

◆ PassiveRcvr() [2/2]

WsfPassiveSensor::PassiveRcvr::PassiveRcvr ( const PassiveRcvr & aSrc,
WsfEM_Antenna * aAntennaPtr )

Member Function Documentation

◆ AddInteractor()

bool WsfPassiveSensor::PassiveRcvr::AddInteractor ( WsfEM_Xmtr * aXmtrPtr)
overridevirtual

Add the specified transmitter to the list of potential interactors.

Parameters
aXmtrPtrThe transmitter to be added.

Reimplemented from WsfEM_Rcvr.

References mModePtr.

◆ CanInteractWith()

bool WsfPassiveSensor::PassiveRcvr::CanInteractWith ( WsfEM_Xmtr * aXmtrPtr)
overridevirtual

Can this passive sensor potentially interact with (detect) the specified emitter?

This is invoked by WsfEM_Manager to maintain potential interaction lists.

Parameters
aXmtrPtr[input] The transmitter to be evaluated.
Returns
'true' if the potentially interact with the transmitter or 'false' if not.

Reimplemented from WsfEM_Rcvr.

References WsfEM_XmtrRcvr::GetBandwidth(), WsfEM_XmtrRcvr::GetFrequency(), WsfEM_XmtrRcvr::GetPlatform(), WsfPlatformPart::GetPlatform(), mFrequencyBands, and mModePtr.

◆ ComputeReceivedPower()

double WsfPassiveSensor::PassiveRcvr::ComputeReceivedPower ( double aSourceAz,
double aSourceEl,
double aEBS_Az,
double aEBS_El,
double aReceivedPowerDensity,
WsfEM_Types::Polarization aPolarization,
double aFrequency,
double & aAntennaGain )
overridevirtual

Compute the received power from an emission direction, taking into account the polarization and frequency of the incoming signal for antenna gain. Does NOT take into account bandwidth mismatch between the receiver and signal.

Parameters
aSourceAz[input] Source azimuth with respect to the beam (radians)
aSourceEl[input] Source elevation with respect to the beam (radians)
aEBS_Az[input] Beam azimuth with respect to the antenna (radians)
aEBS_El[input] Beam elevation with respect to the antenna (radians)
aPolarization[input] Polarization of the signal being received.
aFrequency[input] Frequency of the signal being received (Hertz).
aReceivedPowerDensity[input] Power density of the signal at the face of the antenna (w/m^2).
aAntennaGain[output] Computed antenna gain (absolute - not dB).
Returns
The received power in watts.
Note
This method uses the transmitter center frequency as the center frequency as opposed to the base class implementation which uses the receiver center frequency.
This method does not apply polarization effects because the polarization of the signal may have changed due to reflection. The application of these effects is left to the caller.
This method does not apply bandwidth effects because the bandwidth of the signal may have changed due to reflection. The application of these effects is left to the caller.

Reimplemented from WsfEM_Rcvr.

References WsfEM_XmtrRcvr::GetAntennaGain(), and WsfEM_XmtrRcvr::mInternalLoss.

◆ EmitterActiveCallback()

void WsfPassiveSensor::PassiveRcvr::EmitterActiveCallback ( double aSimTime,
WsfEM_Interaction & aResult )
overridevirtual

A transmitter to which this receiver is listening is emitting.

Parameters
aSimTimeThe current simulation time.
aResultThe interaction object representing the transmission. aResult.GetTransmitter() returns the emitting transmitter.
Note
See WsfEM_Xmtr::AddListener for a discussion of listeners.

Reimplemented from WsfEM_Rcvr.

References mModePtr.

◆ Initialize()

◆ ProcessInput()

◆ RemoveInteractor()

bool WsfPassiveSensor::PassiveRcvr::RemoveInteractor ( WsfEM_Xmtr * aXmtrPtr)
overridevirtual

Remove the specified transmitter from the list of potential interactors. This method is typically called by WsfEM_Manager whenever a transmitter is deactivated.

Parameters
aXmtrPtrThe transmitter to be removed.

Reimplemented from WsfEM_Rcvr.

References mModePtr.

◆ SignalChangeCallback()

void WsfPassiveSensor::PassiveRcvr::SignalChangeCallback ( double aSimTime,
size_t aTargetIndex )
overridevirtual

A targets transmitter to which this receiver is listening has changed requiring a target update.

Parameters
aSimTimeThe current simulation time.
aTargetIndexThe target representing the transmission change.
Note
See WsfEM_Xmtr::AddListener for a discussion of listeners.

Reimplemented from WsfEM_Rcvr.

References mModePtr, and WsfPassiveSensor::WsfPassiveSensor().

◆ TuneFrequencyBand()

Member Data Documentation

◆ mFrequencyBands

◆ mHavePSOS_FrequencyData

bool WsfPassiveSensor::PassiveRcvr::mHavePSOS_FrequencyData

◆ mModePtr

◆ mPSOS_DebugEnabled

bool WsfPassiveSensor::PassiveRcvr::mPSOS_DebugEnabled

◆ mPSOS_Enabled

bool WsfPassiveSensor::PassiveRcvr::mPSOS_Enabled

The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved