WSF
WsfPassiveSensor::PassiveMode Class Reference

A 'mode' of the sensor. More...

#include <WsfPassiveSensor.hpp>

Inheritance diagram for WsfPassiveSensor::PassiveMode:
Collaboration diagram for WsfPassiveSensor::PassiveMode:

Classes

class  PassiveErrorModel

Public Member Functions

 PassiveMode ()
 PassiveMode (const PassiveMode &aSrc)
PassiveModeoperator= (const PassiveMode &aRhs)
 ~PassiveMode () override
size_t GetBeamCount () const override
WsfSensorBeamGetBeamEntry (size_t aIndex) override
WsfModeClone () const override
 Create an exact duplicate of this mode.
bool Initialize (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
bool AttemptToDetect (double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult) override
bool CanDetect (double aSimTime, WsfEM_Xmtr *aXmtrPtr, WsfSensorResult &aResult, WsfEM_Interaction &aAuxInteraction)
void Deselect (double aSimTime) override
void Select (double aSimTime) override
void UpdateTrack (double aSimTime, WsfTrack *aTrackPtr, WsfPlatform *aTargetPtr, WsfSensorResult &aResult) override
void UpdateTrackReportingFlags (double aSimTime, WsfTrack *aTrackPtr) override
bool AddInteractor (WsfEM_Xmtr *aXmtrPtr, PassiveRcvr *aRcvrPtr)
bool RemoveInteractor (WsfEM_Xmtr *aXmtrPtr, PassiveRcvr *aRcvrPtr)
 Pass-through from WsfPassiveSensor::PassiveRcvr::RemoveInteractor.
void EmitterActiveCallback (double aSimTime, WsfEM_Interaction &aResult, PassiveRcvr *aRcvrPtr)
 Pass-through from WsfPassiveSensor::PassiveRcvr::EmitterActiveCallback.
bool TuneFrequencyBand (double aSimTime, bool aReset, size_t aBeamNumber, unsigned int aFrequencyBandNumber, double aLowerFreq, double aUpperFreq, double aDwellTime, double aRevisitTime)
Public Member Functions inherited from WsfSensorMode
 WsfSensorMode ()
 WsfSensorMode (const WsfSensorMode &aSrc)
WsfSensorModeoperator= (const WsfSensorMode &aRhs)
 ~WsfSensorMode () override
WsfPlatformGetPlatform () const
 Return the pointer to the platform to which the associated sensor is attached.
WsfSensorGetSensor () const
 Return the pointer to the sensor with which this mode is associated.
const WsfScenarioGetScenario () const
WsfSimulationGetSimulation () const
bool ProcessInput (UtInput &aInput) override
size_t GetOnSuccessModeIndex () const
size_t GetOnFailureModeIndex () const
int GetMessageLength () const
 Return the logical length (int bits) of report messages that originate from this sensor mode.
int GetMessagePriority () const
 Return the priority of report messages that originate from this sensor mode.
void UpdateTrackPosition (WsfTrack *aTrackPtr, WsfSensorResult &aResult, const double aTgtLocationWCS[3])
WsfSensor::SlewMode GetCueMode () const
virtual double GetAltFreqSelectDelay () const
virtual void ScheduleAltFreqChange (double aSimTime, int aAltFreqId=-1)
virtual bool IsAltFreqChangeScheduled () const
virtual double GetLastAltFreqSelectTime () const
virtual bool IsFrequencyAgile () const
virtual void ApplyMeasurementErrors (WsfSensorResult &aResult)
virtual WSF_DEPRECATED void ComputeMeasurementErrors (WsfSensorResult &aResult, double &aAzError, double &aElError, double &aRangeError, double &aRangeRateError) final
virtual void InitializeTrack (double aSimTime, WsfTrack *&aTrackPtr)
virtual void UpdateSensorCueingLimits ()
virtual bool WithinDetectionRange (double aSimTime, WsfPlatform *aTargetPtr)
double GetMaximumRange () const
 Return the optimistic maximum range of the sensor mode.
int GetMaximumRequestCount () const
 Return the maximum number of cued-search or tracking requests the mode can support.
bool DisablesSearch () const
 Does using this mode prevent this or any other mode from searching?
bool CanSearchWhileTrack () const
 Can this mode continue to search while it is also performing tracking requests.
double GetFrameTime () const
void SetFrameTime (double aFrameTime)
double GetRevisitTime () const
double GetDwellTime () const
double GetRequiredPd () const
double EstablishTrackProbability () const
double MaintainTrackProbability () const
int HitsToEstablishTrack () const
 The number of hits (M) within the window (N) that are required to establish a track.
int EstablishTrackWindow () const
 The window size (N) for establishing a track.
int HitsToMaintainTrack () const
 The number of hits (M) within the window (N) that are required to maintain a track.
int MaintainTrackWindow () const
 The window size (N) for maintaining a track.
unsigned int EstablishTrackMask () const
unsigned int MaintainTrackMask () const
double GetTrackQuality () const
unsigned int GetReportingFlags () const
 Accessors for the reporting flags.
bool ReportsLocation () const
bool ReportsVelocity () const
bool ReportsRange () const
bool ReportsBearing () const
bool ReportsElevation () const
bool ReportsRangeRate () const
bool ReportsSide () const
bool ReportsType () const
bool ReportsIFF_Status () const
bool ReportsSignalToNoise () const
bool ReportsFrequency () const
bool ReportsPulseWidth () const
bool ReportsPulseRepititionInterval () const
const wsf::SensorErrorModelBaseGetErrorModel () const
wsf::SensorErrorModelBaseGetErrorModel ()
void SetErrorModel (std::unique_ptr< wsf::SensorErrorModelBase > aErrorModelPtr)
virtual WSF_DEPRECATED double GetAzErrorStdDev () final
virtual WSF_DEPRECATED double GetElErrorStdDev () final
virtual WSF_DEPRECATED double GetRangeErrorStdDev () final
virtual WSF_DEPRECATED double GetRangeRateErrorStdDev () final
virtual WSF_DEPRECATED void SetAzErrorStdDev (double aAzErrorStdDev) final
virtual WSF_DEPRECATED void SetElErrorStdDev (double aElErrorStdDev) final
virtual WSF_DEPRECATED void SetRangeErrorStdDev (double aRangeErrorStdDev) final
virtual WSF_DEPRECATED void SetRangeRateErrorStdDev (double aRangeRateErrorStdDev) final
Public Member Functions inherited from WsfMode
 WsfMode ()
 ~WsfMode () override=default
size_t GetModeIndex () const
 Return the index of this mode within its associated mode list.
bool IsSelected () const
 Returns 'true' if the mode is selected.
Public Member Functions inherited from WsfNamed
 WsfNamed ()
 WsfNamed (WsfStringId aName)
 WsfNamed (const WsfNamed &)=default
WsfNamedoperator= (const WsfNamed &)=default
virtual ~WsfNamed ()=default
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Public Attributes

double mUnframedDetectionCoastTime
double mRangingTime
double mRangingTimeTrackQuality
bool mImplicitBeamUsed
bool mExplicitBeamUsed
bool mUnframedDetectionOptimization
bool mPSOS_Enabled
std::vector< PassiveBeammBeamList
TargetInteractorMap mTargetInteractorMap

Protected Member Functions

virtual void ComputeInterferenceEffect (double aSimTime, WsfEM_Xmtr *aXmtrPtr, WsfEM_Rcvr *aRcvrPtr)
virtual bool UseListenerForInterferer (WsfEM_Xmtr *aXmtrPtr)
 Returns true if the mode should utilize the 'listener' detection method for an interference transmitter.
bool InitializeReporting ()
virtual void SelectAlternateFrequency (double aSimTime, int aAltFreqId=-1)
void SetCapabilities (unsigned int aFlags)
void SetReportingFlags (unsigned int aFlags)

Additional Inherited Members

WsfSensormSensorPtr
 Pointer to the sensor with which the mode is associated.
WsfPlatformmPlatformPtr
 Pointer to the platform with which the sensor is associated.
double mMaximumRange
double mAzCueRate
double mElCueRate
double mMinAzCue
double mMaxAzCue
double mMinElCue
double mMaxElCue
WsfSensor::SlewMode mCueMode
int mMaximumRequestCount
bool mCanSearchWhileTrack
bool mDisablesSearch
double mFrameTime
double mRevisitTime
double mDwellTime
double mRequiredPd
double mEstablishTrackProbability
 When the M/N establish track criteria is met, this is the probability that a track will be established.
double mMaintainTrackProbability
int mHitsToEstablishTrack
 The number of hits (M) within the window (N) that are required to establish a track.
int mEstablishTrackWindow
 The window size (N) for establishing a track.
unsigned int mEstablishTrackMask
int mHitsToMaintainTrack
 The number of hits (M) within the window (N) that are required to maintain a track.
int mMaintainTrackWindow
 The window size (N) for maintaining a track.
unsigned int mMaintainTrackMask
double mTrackQuality
 Base line track quality (0..1].
double mAzErrorStdDev
double mElErrorStdDev
double mRangeErrorStdDev
double mRangeRateErrorStdDev
 Range rate error standard deviation.
ut::CloneablePtr< wsf::SensorErrorModelBasemErrorModelPtr {nullptr}
 The model that calculates and applies errors to sensor detection results.
WsfStringId mOnSuccessModeName
size_t mOnSuccessModeIndex
WsfStringId mOnFailureModeName
size_t mOnFailureModeIndex
int mMessageLength
 The length of messages originating from this sensor mode.
int mMessagePriority
 The priority of messages originating from this sensor mode.
WsfSpatialDomain mReportsSpatialDomain
ReportingFlags mReportingFlags
ReportingFlags mCapabilitiesFlags
static const unsigned int cNONE = 0
 The following are flags/masks meant to be combined and used in the SetCapabilities method.
static const unsigned int cLOCATION = 1
static const unsigned int cVELOCITY = 2
static const unsigned int cRANGE = 4
static const unsigned int cBEARING = 8
static const unsigned int cELEVATION = 16
static const unsigned int cRANGE_RATE = 32
static const unsigned int cSIDE = 64
static const unsigned int cTYPE = 128
static const unsigned int cIFF_STATUS = 256
static const unsigned int cSIGNAL_TO_NOISE = 512
static const unsigned int cFREQUENCY = 1024
static const unsigned int cPULSEWIDTH = 2048
static const unsigned int cPULSE_REPITITION_INTERVAL = 4096
static const unsigned int cSTATE_COVARIANCE = 8192
static const unsigned int cOTHER = 16384
static const unsigned int cALL = 0xFFFFFFFF
 Catch-all for anything other than the above.

Detailed Description

A 'mode' of the sensor.

Constructor & Destructor Documentation

◆ PassiveMode() [1/2]

◆ PassiveMode() [2/2]

◆ ~PassiveMode()

WsfPassiveSensor::PassiveMode::~PassiveMode ( )
override

References mTargetInteractorMap.

Member Function Documentation

◆ AddInteractor()

bool WsfPassiveSensor::PassiveMode::AddInteractor ( WsfEM_Xmtr * aXmtrPtr,
PassiveRcvr * aRcvrPtr )

Pass-through from WsfPassiveSensor::PassiveRcvr::AddInteractor.

Each target platform has a interactor list, which is just a collection of pairs of transmitters on the target that can be potentially seen by the receiver(s) that are contained in this mode. (Note that most of the time there is only one receiver in the mode, but the 'multi-beam' feature lets one define total separate antennas/receivers, much like the multi-beam radar.)

The pairs in the list are maintained so that all pairs involving a given transmitter are kept together. This is needed by the PassiveMode::AttemptToDetect method.

References WsfEM_Xmtr::AddChangeListener(), WsfEM_Xmtr::AddListener(), WsfEM_Xmtr::cXF_COMM, WsfEM_Xmtr::cXF_INTERFERER, WsfEM_Xmtr::cXF_SENSOR, WsfPlatformPart::DebugEnabled(), wsf::comm::ComponentHW::Find(), WsfEM_Xmtr::GetAlternateFrequencyCount(), WsfEM_XmtrRcvr::GetArticulatedPart(), WsfEM_Xmtr::GetFunction(), WsfPlatform::GetIndex(), WsfEM_XmtrRcvr::GetMode(), WsfEM_Rcvr::GetName(), WsfEM_Xmtr::GetName(), WsfObject::GetName(), WsfEM_XmtrRcvr::GetPlatform(), WsfSensorMode::GetSensor(), WsfSimulation::GetSimTime(), WsfPlatformPart::GetSimulation(), mTargetInteractorMap, targetIndex(), UseListenerForInterferer(), WsfSensor::WsfSensor(), and WsfSensorMode::WsfSensorMode().

◆ AttemptToDetect()

bool WsfPassiveSensor::PassiveMode::AttemptToDetect ( double aSimTime,
WsfPlatform * aTargetPtr,
Settings & aSettings,
WsfSensorResult & aResult )
overridevirtual

Attempt to detect the specified target.

Parameters
aSimTime[input] The current simulation time.
aTargetPtr[input] The platform that will be attempted to be detected.
aSettings[input] The sensor settings.
aResult[output] The results of the detection attempt.
Returns
'true' if the target was detected or 'false' if it was not detected.

Implements WsfSensorMode.

References WsfEM_Interaction::BeginOneWayInteraction(), WsfPassiveSensor::Interactor::cDS_DETECTED, WsfPassiveSensor::Interactor::cDS_NOT_ATTEMPTED, ComputeInterferenceEffect(), WsfEM_Xmtr::cXF_COMM, WsfEM_Xmtr::cXF_INTERFERER, WsfEM_Xmtr::cXF_SENSOR, WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetArticulatedPart(), WsfEM_XmtrRcvr::GetArticulatedPart(), WsfEM_XmtrRcvr::GetBandwidth(), WsfSensorMode::GetFrameTime(), WsfEM_XmtrRcvr::GetFrequency(), WsfEM_Xmtr::GetFunction(), WsfEM_XmtrRcvr::GetIndex(), WsfPlatform::GetIndex(), WsfEM_XmtrRcvr::GetMode(), WsfNamed::GetName(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfEM_Xmtr::GetPulseRepetitionInterval(), WsfEM_Xmtr::GetPulseWidth(), WsfSensorMode::GetSensor(), WsfEM_Xmtr::GetTransmissionEndTime(), WsfObject::GetTypeId(), WsfUniqueId::GetUniqueId(), WsfSensor::GetZoneAttenuationModifier(), WsfArticulatedPart::IsCued(), WsfSensorResult::mBeamIndex, mBeamList, WsfEM_Interaction::mCheckedStatus, WsfPassiveSensor::Interactor::mDetectStatus, WsfTrack_Signal::mEmitterTruthId, WsfEM_Interaction::mFailedStatus, WsfPassiveSensor::Interactor::mLastAttemptTime, mPSOS_Enabled, WsfTrack_Signal::mPulseRepetitionInterval, WsfTrack_Signal::mPulseWidth, WsfPassiveSensor::Interactor::mRcvrPtr, WsfPassiveSensor::Interactor::mResultPtr, WsfEM_Interaction::mSignalToNoise, mTargetInteractorMap, mUnframedDetectionCoastTime, WsfPassiveSensor::Interactor::mUseListener, WsfPassiveSensor::Interactor::mXmtrPtr, WsfEM_Xmtr::NotifyListeners(), WsfSensorComponent::PostAttemptToDetect(), WsfEM_Interaction::Print(), WsfSensorMode::ReportsFrequency(), WsfSensorMode::ReportsPulseRepititionInterval(), WsfSensorMode::ReportsPulseWidth(), WsfSensorResult::Reset(), WsfEM_Interaction::SetCategory(), WsfEM_Interaction::SetReceiverBeamPosition(), WsfEM_Interaction::SetTransmitterBeamPosition(), WsfEM_XmtrRcvr::UpdatePosition(), and WsfPassiveSensor::WsfPassiveSensor().

◆ CanDetect()

◆ Clone()

WsfMode * WsfPassiveSensor::PassiveMode::Clone ( ) const
overridevirtual

Create an exact duplicate of this mode.

Implements WsfSensorMode.

References WsfPassiveSensor::PassiveMode, and WsfMode::WsfMode().

◆ ComputeInterferenceEffect()

virtual void WsfPassiveSensor::PassiveMode::ComputeInterferenceEffect ( double aSimTime,
WsfEM_Xmtr * aXmtrPtr,
WsfEM_Rcvr * aRcvrPtr )
inlineprotectedvirtual

Reimplemented in WsfESM_Sensor::ESM_Mode.

Referenced by AttemptToDetect().

◆ Deselect()

void WsfPassiveSensor::PassiveMode::Deselect ( double aSimTime)
overridevirtual

The mode is being deselected. The specific implementation should perform whatever actions are associated with deselecting the mode (e.g.: deactivating transmitters or receivers).

Parameters
aSimTime[input] The current simulation time.

Implements WsfSensorMode.

References mBeamList.

◆ EmitterActiveCallback()

◆ GetBeamCount()

size_t WsfPassiveSensor::PassiveMode::GetBeamCount ( ) const
inlineoverridevirtual

Return the number of beams in the mode. Derived classes should return the number of beams that are defined.

Returns
The number of beams defined. The result will be 0 if the derived class does not support beams.

Reimplemented from WsfSensorMode.

References mBeamList.

◆ GetBeamEntry()

WsfSensorBeam * WsfPassiveSensor::PassiveMode::GetBeamEntry ( size_t aIndex)
inlineoverridevirtual

Return a pointer to the beam with the specified index. A derived class will return a pointer

Parameters
aIndexThe index of the beam to be retrieved. The index is NOT checked for validity. It MUST be in the range [0..GetBeamCount()].
Returns
A pointer to the beam. The results are undefined if an invalid index is provided or if the derived class does not support beams.

Reimplemented from WsfSensorMode.

References mBeamList.

◆ Initialize()

bool WsfPassiveSensor::PassiveMode::Initialize ( double aSimTime)
overridevirtual

◆ operator=()

◆ ProcessInput()

◆ RemoveInteractor()

◆ Select()

void WsfPassiveSensor::PassiveMode::Select ( double aSimTime)
overridevirtual

The mode is being activated. The specific implementation should perform whatever actions are associated with selecting the mode (e.g.: activating transmitters or receivers).

Parameters
aSimTime[input] The current simulation time.

Implements WsfSensorMode.

References WsfSensorMode::GetFrameTime(), WsfSensorMode::GetSensor(), and mBeamList.

◆ TuneFrequencyBand()

bool WsfPassiveSensor::PassiveMode::TuneFrequencyBand ( double aSimTime,
bool aReset,
size_t aBeamNumber,
unsigned int aFrequencyBandNumber,
double aLowerFreq,
double aUpperFreq,
double aDwellTime,
double aRevisitTime )

References mBeamList, and success.

◆ UpdateTrack()

void WsfPassiveSensor::PassiveMode::UpdateTrack ( double aSimTime,
WsfTrack * aTrackPtr,
WsfPlatform * aTargetPtr,
WsfSensorResult & aResult )
overridevirtual

Update a track with the results from the current detection.

Parameters
aSimTimeThe current simulation time.
aTrackPtrA pointer to the track to be updated.
aTargetPtrPointer to the target.
aResultThe results of the current detection attempt

The overrides the base class method in order to populate the track with the additional data provided by this sensor.

Reimplemented from WsfSensorMode.

References WsfEM_XmtrRcvr::GetArticulatedPart(), WsfSensorMode::GetSensor(), WsfEM_Interaction::GetTransmitter(), WsfObject::GetTypeId(), WsfSensorMode::ReportsFrequency(), WsfSensorMode::ReportsType(), WsfTrack::SetSignalList(), WsfTrack::SetTargetType(), WsfSensorMode::UpdateTrack(), and WsfPassiveSensor::WsfPassiveSensor().

◆ UpdateTrackReportingFlags()

void WsfPassiveSensor::PassiveMode::UpdateTrackReportingFlags ( double aSimTime,
WsfTrack * aTrackPtr )
overridevirtual

Update the reported data flags in a track.

This is called by UpdateTrack() prior to applying the sensor detection results to the track. The function of the method is to set the flags in the track that indicate what data is 'valid'. UpdateTrack() uses the flags to decide what data from the sensor detection results is to be pushed into the track.

A base class may override this method to provide the ability to dynamically change the reporting abilities. The default method simply sets the reporting flags from the mode.

Parameters
aSimTimeThe current simulation time.
aTrackPtrThe track whose reporting flags are to be updated.
Note
In general, the base class should call this method.

The overrides the base class method to set the track validity flags as appropriate.

Reimplemented from WsfSensorMode.

References WsfTrack::GetStartTime(), mRangingTime, mRangingTimeTrackQuality, WsfTrack::SetTrackQuality(), and WsfSensorMode::UpdateTrackReportingFlags().

◆ UseListenerForInterferer()

virtual bool WsfPassiveSensor::PassiveMode::UseListenerForInterferer ( WsfEM_Xmtr * aXmtrPtr)
inlineprotectedvirtual

Returns true if the mode should utilize the 'listener' detection method for an interference transmitter.

Reimplemented in WsfESM_Sensor::ESM_Mode.

Referenced by AddInteractor().

Member Data Documentation

◆ mBeamList

◆ mExplicitBeamUsed

bool WsfPassiveSensor::PassiveMode::mExplicitBeamUsed

◆ mImplicitBeamUsed

bool WsfPassiveSensor::PassiveMode::mImplicitBeamUsed

◆ mPSOS_Enabled

bool WsfPassiveSensor::PassiveMode::mPSOS_Enabled

Is 'Probabilistic Scan-On-Scan' (PSOS) processing enabled? If this is 'true' (the default) it means that SOS processing can occur if the user has defined the proper input data. This will be 'false' if a direct call is made to AttemptToDetect (such as from sensor_plot). In such a case each detection attempt is independent.

Referenced by AttemptToDetect(), EmitterActiveCallback(), operator=(), PassiveMode(), and PassiveMode().

◆ mRangingTime

double WsfPassiveSensor::PassiveMode::mRangingTime

◆ mRangingTimeTrackQuality

double WsfPassiveSensor::PassiveMode::mRangingTimeTrackQuality

◆ mTargetInteractorMap

◆ mUnframedDetectionCoastTime

double WsfPassiveSensor::PassiveMode::mUnframedDetectionCoastTime

◆ mUnframedDetectionOptimization

bool WsfPassiveSensor::PassiveMode::mUnframedDetectionOptimization

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