|
WSF
|
A specialized WsfEM_Rcvr that can receive on multiple frequency bands. More...
#include <WsfPassiveSensor.hpp>


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 () |
| ComponentList & | GetComponents () |
| const ComponentList & | GetComponents () 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_Xmtr * | GetCommInteractorEntry (unsigned int aIndex) const |
| size_t | GetInterferenceInteractorCount () const |
| Get the number of potentially interacting interference transmitters. | |
| WsfEM_Xmtr * | GetInterferenceInteractorEntry (size_t aIndex) const |
| size_t | GetSensorInteractorCount () const |
| Get the number of potentially interacting sensor transmitters. | |
| WsfEM_Xmtr * | GetSensorInteractorEntry (size_t aIndex) const |
| unsigned int | GetInteractorCount () const |
| WsfEM_Xmtr * | GetInteractorEntry (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 () |
| WsfPlatform * | GetPlatform () const |
| WsfArticulatedPart * | GetArticulatedPart () const |
| virtual void | UpdatePosition (double aSimTime) |
| const char * | GetScriptClassName () const override |
| WsfEM_Attenuation * | GetAttenuationModel () 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_Propagation * | GetPropagationModel () 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_Antenna * | GetAntenna () const |
| Get the pointer associated geometry object. | |
| void | SetAntenna (WsfEM_Antenna *aAntennaPtr) |
| WsfAntennaPattern * | GetAntennaPattern (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 AntennaPatternList * | GetAntennaPatternList (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) | |
| WsfMode * | GetMode () 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. | |
| WsfSimulation * | GetSimulation () const |
| WsfEM_Manager * | GetEM_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. | |
| WsfUniqueId & | operator= (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 | |
| WsfAuxDataEnabled & | operator= (const WsfAuxDataEnabled &aRhs) |
| WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default | |
| WsfAuxDataEnabled & | operator= (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 | |
| WsfAttributeContainer & | GetAuxData () |
| const WsfAttributeContainer & | GetAuxData () const noexcept |
| const WsfAttributeContainer & | GetAuxDataConst () const noexcept |
Public Attributes | |
| std::vector< FrequencyBand > | mFrequencyBands |
| PassiveMode * | mModePtr |
| 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_Attenuation * | mAttenuationPtr |
| Pointer to the atmospheric attenuation model. | |
| WsfEM_Propagation * | mPropagationPtr |
| Pointer to the propagation object. | |
| WsfMode * | mModePtr |
| WsfEM_Antenna * | mAntennaPtr |
| Pointer to the 'geometry' object for this transmitter/receiver. | |
| std::array< AntennaPatternList, WsfEM_Types::cPOL_COUNT > | mPatternTables {} |
| WsfEM_XmtrRcvr * | mAssociatePtr |
| double | mBeamTilt |
| double | mEarthRadiusMultiplier |
| double | mFrequency |
| double | mBandwidth |
| double | mInternalLoss |
| WsfEM_Types::Polarization | mPolarization |
| size_t | mIndex |
| std::array< bool, WsfEM_Types::cPOL_COUNT > | mUsedExplicitPolarization {{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 | |
A specialized WsfEM_Rcvr that can receive on multiple frequency bands.
| WsfPassiveSensor::PassiveRcvr::PassiveRcvr | ( | WsfEM_Antenna * | aAntennaPtr | ) |
References WsfEM_Rcvr::cRF_PASSIVE_SENSOR, mFrequencyBands, mHavePSOS_FrequencyData, mModePtr, mPSOS_DebugEnabled, mPSOS_Enabled, and WsfEM_Rcvr::WsfEM_Rcvr().
Referenced by PassiveRcvr().
| WsfPassiveSensor::PassiveRcvr::PassiveRcvr | ( | const PassiveRcvr & | aSrc, |
| WsfEM_Antenna * | aAntennaPtr ) |
|
overridevirtual |
Add the specified transmitter to the list of potential interactors.
| aXmtrPtr | The transmitter to be added. |
Reimplemented from WsfEM_Rcvr.
References mModePtr.
|
overridevirtual |
Can this passive sensor potentially interact with (detect) the specified emitter?
This is invoked by WsfEM_Manager to maintain potential interaction lists.
| aXmtrPtr | [input] The transmitter to be evaluated. |
Reimplemented from WsfEM_Rcvr.
References WsfEM_XmtrRcvr::GetBandwidth(), WsfEM_XmtrRcvr::GetFrequency(), WsfEM_XmtrRcvr::GetPlatform(), WsfPlatformPart::GetPlatform(), mFrequencyBands, and mModePtr.
|
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.
| 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). |
Reimplemented from WsfEM_Rcvr.
References WsfEM_XmtrRcvr::GetAntennaGain(), and WsfEM_XmtrRcvr::mInternalLoss.
|
overridevirtual |
A transmitter to which this receiver is listening is emitting.
| aSimTime | The current simulation time. |
| aResult | The interaction object representing the transmission. aResult.GetTransmitter() returns the emitting transmitter. |
Reimplemented from WsfEM_Rcvr.
References mModePtr.
|
overridevirtual |
Reimplemented from WsfEM_XmtrRcvr.
References WsfEM_XmtrRcvr::GetArticulatedPart(), WsfEM_XmtrRcvr::GetFrequency(), WsfEM_XmtrRcvr::GetMode(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfEM_Rcvr::Initialize(), mFrequencyBands, mHavePSOS_FrequencyData, mModePtr, WsfEM_Rcvr::SetBandwidth(), and WsfEM_Rcvr::SetFrequency().
|
overridevirtual |
Reimplemented from WsfEM_XmtrRcvr.
References WsfPassiveSensor::FrequencyBand::mDwellTime, mFrequencyBands, WsfPassiveSensor::FrequencyBand::mLowerFrequency, mPSOS_DebugEnabled, mPSOS_Enabled, WsfPassiveSensor::FrequencyBand::mRevisitTime, WsfPassiveSensor::FrequencyBand::mUpperFrequency, and WsfEM_Rcvr::ProcessInput().
|
overridevirtual |
Remove the specified transmitter from the list of potential interactors. This method is typically called by WsfEM_Manager whenever a transmitter is deactivated.
| aXmtrPtr | The transmitter to be removed. |
Reimplemented from WsfEM_Rcvr.
References mModePtr.
|
overridevirtual |
A targets transmitter to which this receiver is listening has changed requiring a target update.
| aSimTime | The current simulation time. |
| aTargetIndex | The target representing the transmission change. |
Reimplemented from WsfEM_Rcvr.
References mModePtr, and WsfPassiveSensor::WsfPassiveSensor().
| bool WsfPassiveSensor::PassiveRcvr::TuneFrequencyBand | ( | double | aSimTime, |
| bool | aReset, | ||
| unsigned int | aFrequencyBandNumber, | ||
| double | aLowerFreq, | ||
| double | aUpperFreq, | ||
| double | aDwellTime, | ||
| double | aRevisitTime ) |
References WsfEM_XmtrRcvr::GetArticulatedPart(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfPassiveSensor::FrequencyBand::mDwellTime, mFrequencyBands, mHavePSOS_FrequencyData, WsfPassiveSensor::FrequencyBand::mLowerFrequency, WsfPassiveSensor::FrequencyBand::mRevisitTime, WsfPassiveSensor::FrequencyBand::mUpperFrequency, WsfEM_Rcvr::SetBandwidth(), and WsfEM_Rcvr::SetFrequency().
| std::vector<FrequencyBand> WsfPassiveSensor::PassiveRcvr::mFrequencyBands |
| bool WsfPassiveSensor::PassiveRcvr::mHavePSOS_FrequencyData |
Referenced by Initialize(), PassiveRcvr(), PassiveRcvr(), and TuneFrequencyBand().
| PassiveMode* WsfPassiveSensor::PassiveRcvr::mModePtr |
| bool WsfPassiveSensor::PassiveRcvr::mPSOS_DebugEnabled |
Referenced by PassiveRcvr(), PassiveRcvr(), and ProcessInput().
| bool WsfPassiveSensor::PassiveRcvr::mPSOS_Enabled |
Referenced by PassiveRcvr(), PassiveRcvr(), and ProcessInput().