WSF
WsfEW_Effect Class Referenceabstract

#include <WsfEW_Effect.hpp>

Inheritance diagram for WsfEW_Effect:
Collaboration diagram for WsfEW_Effect:

Classes

class  EffectData
 Base effect data used to derive from in inheriting effect classes. More...

Public Types

enum  Behavior {
  cEB_UNDEFINED = 1 , cEB_DROP_TRACK = cEB_UNDEFINED << 1 , cEB_MAINTAIN_TRACK = cEB_UNDEFINED << 2 , cEB_TRACK_ERROR = cEB_UNDEFINED << 3 ,
  cEB_DROP_MESSAGE = cEB_UNDEFINED << 4 , cEB_MAINTAIN_MESSAGE = cEB_UNDEFINED << 5 , cEB_MESSAGE_ERROR = cEB_UNDEFINED << 6 , cEB_JAMMER_POWER_EFFECT = cEB_UNDEFINED << 7 ,
  cEB_SIGNAL_POWER_EFFECT = cEB_UNDEFINED << 8 , cEB_SLC_DEGRADE_EFFECT = cEB_UNDEFINED << 9 , cEB_FALSE_TARGET_EFFECT = cEB_UNDEFINED << 10 , cEB_PULSE_EFFECT = cEB_UNDEFINED << 11 ,
  cEB_AGILITY_EFFECT = cEB_UNDEFINED << 12 , cEB_REPEATER_EFFECT = cEB_UNDEFINED << 13 , cEB_REPEATER_UPDATE = cEB_UNDEFINED << 14 , cEB_FLOODED_BLOCKED = cEB_UNDEFINED << 15 ,
  cEB_FLOODED_MAINTAINED = cEB_UNDEFINED << 16 , cEB_JAM_STROBE_EFFECT = cEB_UNDEFINED << 17 , cEB_TARGET_REJECT_EFFECT = cEB_UNDEFINED << 18 , cEB_NEXT_FREE_MASK = cEB_UNDEFINED << 19
}
 The behavior the EW effect exhibits. More...
enum  Coherency {
  cEC_NONE = 1 , cEC_NONCOHERENT = cEC_NONE << 1 , cEC_COHERENT = cEC_NONE << 2 , cEC_NONCOHERENT_PULSE = cEC_NONE << 3 ,
  cEC_COHERENT_PULSE = cEC_NONE << 4
}
 The signal coherency the EW effect exhibits on the affected system. More...
enum  ModulationType {
  cEM_NONE = 1 , cEM_CW = cEM_NONE << 1 , cEM_COHPULSE = cEM_NONE << 2 , cEM_NONCOHPULSE = cEM_NONE << 3 ,
  cEM_LINEARFM = cEM_NONE << 4 , cEM_NONLINEARFM = cEM_NONE << 5 , cEM_PHASEKEY = cEM_NONE << 6 , cEM_PHASEMOD = cEM_NONE << 7 ,
  cEM_PHASECODE = cEM_NONE << 8 , cEM_ASK = cEM_NONE << 9 , cEM_FSK = cEM_NONE << 10 , cEM_PSK = cEM_NONE << 11 ,
  cEM_BPSK = cEM_NONE << 12 , cEM_QPSK = cEM_NONE << 13 , cEM_DPSK = cEM_NONE << 14 , cEM_QAM = cEM_NONE << 15
}
enum  TargetProtectionType { cTP_ALL , cTP_NON_SELF_PROTECT , cTP_SELF_PROTECT }
 The target protection type this effect is limited to. More...
enum  SystemFunction {
  cES_UNDEFINED = 1 , cES_COMM = cES_UNDEFINED << 1 , cES_SENSOR = cES_UNDEFINED << 2 , cES_JAMMER = cES_UNDEFINED << 3 ,
  cES_NEXT_FREE_MASK = cES_UNDEFINED << 4
}
 The type of system function types the EW effect can affect. More...
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.

Public Member Functions

 WsfEW_Effect ()=default
WsfEW_Effectoperator= (const WsfEW_Effect &)=delete
 ~WsfEW_Effect () override
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Effect Data methods.

using EffectDataMap = std::map<WsfStringId, EffectData*>
unsigned int mSystemFunctionMask {cES_UNDEFINED}
 The system type mask that this EW effect can affect.
Behavior mBehavior {cEB_UNDEFINED}
 The behavior that this EW effect exhibits.
unsigned int mCoherencyMask {cEC_NONE}
 The coherency of this effect wrt to the affected system.
bool mDebug {false}
 The debug flag, 'true' for debug, false otherwise.
WsfStringId mCurrentTargetId {nullptr}
 Current target Id.
WsfStringId mCurrentXmtrPlatformId {nullptr}
 Current transmitting platform Id.
WsfStringId mCurrentRcvrPlatformId {nullptr}
 Current receiving platform Id.
int mCurrentXmtrUniqueId {0}
 Current transmitter unique Id.
int mCurrentRcvrUniqueId {0}
 Current receiver unique Id.
WsfStringId mEffectedSystemId {nullptr}
 The type Id of the system being effected, changes with each call to UpdateEffects(...) or UpdateCurrentIds(...).
WsfStringId mEffectingSystemId {nullptr}
 The type Id of the system doing the effecting, changes with each call to UpdateEffects(...) or UpdateCurrentIds(...).
bool mUpdatingEffect {true}
 Variable to prevent infinite recursion in UpdateEffect.
EffectDataMap mEffectDataMap
 Map of the System Type Id to the data required for this effect.
bool ProcessEffectDataBlock (UtInputBlock &aInputBlock, WsfStringId aSystemTypeId)
virtual EffectDataGetEffectData (WsfStringId aSystemTypeId)
void ResetEffectData (WsfStringId aSystemTypeId)
bool EffectDataExists (WsfStringId aSystemTypeId) const
virtual EffectDataNewEffectData ()
void InsertNewEffectData (WsfStringId aSystemTypeId, WsfEW_Types::EW_EffectData *aEffectPtr)
virtual EffectDataPropagateEffectDataPtr (WsfStringId aSystemTypeId)

Common infrastructure methods.

WsfEW_EffectClone () const override=0
virtual bool Initialize (WsfSimulation &aSimulation)
bool ProcessInput (UtInput &aInput) override

Effect methods.

virtual void ProcessUnmitigatedEffect (double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects)
virtual void ProcessMitigatedEffect (double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects, WsfEW_Effect *aEW_EffectPtr=nullptr)

Internal use only effect methods.

virtual void ApplyUnmitigatedEffect (WsfEW_Effects &aEW_Effects) const =0
virtual void ApplyMitigatedEffect (WsfEW_Effect *aEW_EffectPtr, WsfEW_Effects &aEW_Effects) const =0
virtual void UpdateEffects (double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects, WsfEW_Effect *aEW_EffectPtr=nullptr)

Jammer management methods.

virtual void RemoveJammerXmtr (unsigned int aXmtrId)
virtual void RemoveJammerXmtr (WsfEM_Xmtr *aJammerXmtrPtr)

System function methods.

void SetSystemFunctionMask (SystemFunction aSystemFunction)
 Set the system type.
void SetSystemFunctionMask (const std::string &aSystemFunctionId)
void AddSystemFunctionMask (SystemFunction aSystemFunction)
 Set the system type.
void AddSystemFunctionMask (const std::string &aSystemFunctionId)
unsigned int GetSystemFunctionMask () const
static WsfEW_Effect::SystemFunction ConvertToEW_SystemFunction (WsfEM_Rcvr::RcvrFunction aRcvrFunction)
static WsfEW_Effect::SystemFunction ConvertToEW_SystemFunction (WsfEM_Xmtr::XmtrFunction aXmtrFunction)

Coherency Type methods.

void SetCoherencyMask (Coherency aCoherency)
void AddCoherencyMask (Coherency aCoherency)
unsigned int GetCoherencyMask () const
static unsigned int ConvertCoherencyIdToMask (WsfStringId aCoherencyId)

Behavior methods.

void SetBehavior (Behavior aBehavior)
Behavior GetBehavior () const

Debug methods.

void SetDebug (bool aDebug)
bool DebugEnabled () const

Class pointer methods.

void SetEA_EP_Ptr (WsfEW_EA_EP *aPtr)
WsfEW_EA_EPGetEA_EP_Ptr () const
WsfEW_EAGetEA_Ptr () const
WsfEW_EPGetEP_Ptr () const
WsfEW_TechniqueGetTechniquePtr () const
void SetTechniquePtr (WsfEW_Technique *aPtr)
virtual double GetJammingPulseDensity () const
virtual double GetJammingPulseDensity (WsfEM_Xmtr *aXmtrPtr) const
virtual bool AllowTarget (WsfPlatform *aXmtrPlatform, WsfPlatform *aTargetPlatform) const

Current Id methods.

virtual void UpdateCurrentIds (WsfEM_Rcvr *aRcvrPtr, WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTargetPtr)
WsfSimulationGetSimulation () const
ut::Random & GetRandom ()
 WsfEW_Effect (const WsfEW_Effect &aSrc)
virtual void PrintUpdateMessage (ut::log::MessageStream &aStream, double aSimTime, WsfEW_Effect *aEW_EffectPtr=nullptr)
void ResetProtectionTypeFlag (WsfEM_Xmtr *aXmtrPtr, const WsfEM_Interaction &aTargetInteraction, WsfEW_Effects &aEW_Effects)

Additional Inherited Members

 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).

Detailed Description

WsfEW_Effect is an abstract base class that represents an EW (Electronic Warfare) effect. If provides two methods that are used to affect an EW error. The first method, 'ApplyUnmitigatedEffect' is responsible for applying the EW effect to the errors. The second method, 'ApplyMitigatedEffect' is responsible for applying any mitigating effects to the error. WsfEW_Effect works in conjunction with the type list WsfEW_EffectTypes.

Member Typedef Documentation

◆ EffectDataMap

using WsfEW_Effect::EffectDataMap = std::map<WsfStringId, EffectData*>
protected

Member Enumeration Documentation

◆ Behavior

The behavior the EW effect exhibits.

Enumerator
cEB_UNDEFINED 
cEB_DROP_TRACK 

Track is dropped.

cEB_MAINTAIN_TRACK 

Track is maintained.

cEB_TRACK_ERROR 

Track errors are applied.

cEB_DROP_MESSAGE 

Message is dropped.

cEB_MAINTAIN_MESSAGE 

Message is maintained.

cEB_MESSAGE_ERROR 

Message error is applied.

cEB_JAMMER_POWER_EFFECT 

Jammer power gain effect.

cEB_SIGNAL_POWER_EFFECT 

Signal power or receiver noise delta gain effect.

cEB_SLC_DEGRADE_EFFECT 

Sidelobe canceler degrade effect.

cEB_FALSE_TARGET_EFFECT 

False target effect.

cEB_PULSE_EFFECT 

Pulse jammer effect.

cEB_AGILITY_EFFECT 

Agility effects are applied.

cEB_REPEATER_EFFECT 

Repeater jamming effects are applied.

cEB_REPEATER_UPDATE 

Repeater logic is present and is updated.

cEB_FLOODED_BLOCKED 

System is flooded, either track or messages and is causing blockage.

cEB_FLOODED_MAINTAINED 

System is flooded, either track or messages, but is mitigated.

cEB_JAM_STROBE_EFFECT 

Jam strobe effects are applied.

cEB_TARGET_REJECT_EFFECT 

Reject target effect, used to zero jamming power when applied.

cEB_NEXT_FREE_MASK 

For use by derived classes to specify additional behavior masks.

◆ Coherency

The signal coherency the EW effect exhibits on the affected system.

Enumerator
cEC_NONE 
cEC_NONCOHERENT 
cEC_COHERENT 
cEC_NONCOHERENT_PULSE 
cEC_COHERENT_PULSE 

◆ ModulationType

The type of modulation the EW effect exhibits for modulated signal effects. Utilized by inheriting classes.

Enumerator
cEM_NONE 
cEM_CW 
cEM_COHPULSE 
cEM_NONCOHPULSE 
cEM_LINEARFM 
cEM_NONLINEARFM 
cEM_PHASEKEY 
cEM_PHASEMOD 
cEM_PHASECODE 
cEM_ASK 
cEM_FSK 
cEM_PSK 
cEM_BPSK 
cEM_QPSK 
cEM_DPSK 
cEM_QAM 

◆ SystemFunction

The type of system function types the EW effect can affect.

Enumerator
cES_UNDEFINED 
cES_COMM 

Effect is meant for comm systems.

cES_SENSOR 

Effect is meant for sensor systems.

cES_JAMMER 

Effect is meant for jammer systems.

cES_NEXT_FREE_MASK 

For use by derived classes to specify additional EW function masks.

◆ TargetProtectionType

The target protection type this effect is limited to.

Enumerator
cTP_ALL 
cTP_NON_SELF_PROTECT 
cTP_SELF_PROTECT 

Constructor & Destructor Documentation

◆ WsfEW_Effect() [1/2]

◆ ~WsfEW_Effect()

WsfEW_Effect::~WsfEW_Effect ( )
override

References mEffectDataMap.

◆ WsfEW_Effect() [2/2]

Member Function Documentation

◆ AddCoherencyMask()

void WsfEW_Effect::AddCoherencyMask ( Coherency aCoherency)
inline

Add the coherency type of the EW effect.

Parameters
aCoherencyThe coherency of the EW effect exhibits.

References mCoherencyMask.

◆ AddSystemFunctionMask() [1/2]

void WsfEW_Effect::AddSystemFunctionMask ( const std::string & aSystemFunctionId)

◆ AddSystemFunctionMask() [2/2]

void WsfEW_Effect::AddSystemFunctionMask ( SystemFunction aSystemFunction)
inline

Set the system type.

References mSystemFunctionMask.

◆ AllowTarget()

bool WsfEW_Effect::AllowTarget ( WsfPlatform * aXmtrPlatform,
WsfPlatform * aTargetPlatform ) const
virtual

◆ ApplyMitigatedEffect()

◆ ApplyUnmitigatedEffect()

◆ Clone()

◆ ConvertCoherencyIdToMask()

unsigned int WsfEW_Effect::ConvertCoherencyIdToMask ( WsfStringId aCoherencyId)
static

◆ ConvertToEW_SystemFunction() [1/2]

WsfEW_Effect::SystemFunction WsfEW_Effect::ConvertToEW_SystemFunction ( WsfEM_Rcvr::RcvrFunction aRcvrFunction)
static

A convenience function that converts a receiver's function to the appropriate system function.

Parameters
aRcvrFunctionThe receiver's function (i.e. comm, sensor, jammer, etc.).
Returns
Returns the corresponding system type.

References cES_COMM, cES_JAMMER, cES_SENSOR, cES_UNDEFINED, WsfEM_Rcvr::cRF_COMM, WsfEM_Rcvr::cRF_INTERFERER, WsfEM_Rcvr::cRF_PASSIVE_SENSOR, and WsfEM_Rcvr::cRF_SENSOR.

Referenced by WsfEW_Effects::Process(), and WsfEW_SimpleFT_Effect::UpdateEffects().

◆ ConvertToEW_SystemFunction() [2/2]

WsfEW_Effect::SystemFunction WsfEW_Effect::ConvertToEW_SystemFunction ( WsfEM_Xmtr::XmtrFunction aXmtrFunction)
static

A convenience function that converts a transmitter's function to the appropriate system function.

Parameters
aXmtrFunctionThe transmitter's function (i.e. comm, sensor, jammer, etc.).
Returns
Returns the corresponding system type.

References cES_COMM, cES_JAMMER, cES_SENSOR, cES_UNDEFINED, WsfEM_Xmtr::cXF_COMM, WsfEM_Xmtr::cXF_INTERFERER, and WsfEM_Xmtr::cXF_SENSOR.

◆ DebugEnabled()

bool WsfEW_Effect::DebugEnabled ( ) const
inline

Get the debug flag state.

Returns
Returns the debug flag state, 'true' or 'false'.

References mDebug.

Referenced by WsfEW_FalseTargetEffect::FT_Data::Initialize().

◆ EffectDataExists()

◆ GetBehavior()

Behavior WsfEW_Effect::GetBehavior ( ) const
inline

◆ GetCoherencyMask()

◆ GetEA_EP_Ptr()

WsfEW_EA_EP * WsfEW_Effect::GetEA_EP_Ptr ( ) const
inline

Get the Electronic Attack / Electronic Protect pointer, returns NULL if not set.

Returns
Returns the associated EA pointer.

Referenced by WsfEW_SLB_Effect::Initialize(), WsfEW_SLC_Effect::Initialize(), WsfEW_TrackEffect::SensorModeDeactivated(), WsfEW_TrackEffect::SensorTrackDropped(), and WsfEW_TrackEffect::UpdateEffects().

◆ GetEA_Ptr()

◆ GetEffectData()

WsfEW_Effect::EffectData & WsfEW_Effect::GetEffectData ( WsfStringId aSystemTypeId)
protectedvirtual

◆ GetEP_Ptr()

WsfEW_EP * WsfEW_Effect::GetEP_Ptr ( ) const

Get the Electronic Protect pointer, returns NULL if not set or if N/A.

Returns
Returns the associated EP pointer.

Referenced by Initialize(), PrintUpdateMessage(), WsfEW_TrackEffect::SensorModeDeactivated(), WsfEW_TrackEffect::SensorTrackDropped(), UpdateCurrentIds(), WsfEW_CoverPulseEffect::UpdateEffects(), and WsfEW_TrackEffect::UpdateEffects().

◆ GetJammingPulseDensity() [1/2]

virtual double WsfEW_Effect::GetJammingPulseDensity ( ) const
inlinevirtual

Get the current jamming pulse density.

Returns
The jamming pulse density, not set if it is <= 0.0.

Reimplemented in WsfEW_PulseEffect.

Referenced by WsfEW_SLB_Effect::UpdateEffects(), and WsfEW_SLC_Effect::UpdateEffects().

◆ GetJammingPulseDensity() [2/2]

virtual double WsfEW_Effect::GetJammingPulseDensity ( WsfEM_Xmtr * aXmtrPtr) const
inlinevirtual

Reimplemented in WsfEW_PulseEffect.

◆ GetRandom()

◆ GetSimulation()

◆ GetSystemFunctionMask()

unsigned int WsfEW_Effect::GetSystemFunctionMask ( ) const
inline

Get the system function

Returns
returns SystemFunction by value.

References mSystemFunctionMask.

◆ GetTechniquePtr()

WsfEW_Technique * WsfEW_Effect::GetTechniquePtr ( ) const
inline

Set the technique pointer associated with this effect.

Returns
Returns the technique pointer associated with this effect.

Referenced by WsfEW_EP::GetMitigatingEffects().

◆ Initialize()

◆ InsertNewEffectData()

◆ NewEffectData()

◆ operator=()

WsfEW_Effect & WsfEW_Effect::operator= ( const WsfEW_Effect & )
delete

References WsfEW_Effect().

◆ PrintUpdateMessage()

void WsfEW_Effect::PrintUpdateMessage ( ut::log::MessageStream & aStream,
double aSimTime,
WsfEW_Effect * aEW_EffectPtr = nullptr )
protectedvirtual

Print the update message when in debug mode for the given type.

Parameters
aStreamWhere to write to.
aSimTimeCurrent simulation time.
aEW_EffectPtrEffect pointer for the currently opposing/calculating technique if applicable.

References GetEP_Ptr(), WsfObject::GetName(), mCurrentRcvrPlatformId, mCurrentTargetId, mCurrentXmtrPlatformId, and WsfEW_Effect().

Referenced by ProcessUnmitigatedEffect(), and UpdateEffects().

◆ ProcessEffectDataBlock()

bool WsfEW_Effect::ProcessEffectDataBlock ( UtInputBlock & aInputBlock,
WsfStringId aSystemTypeId )
protected

◆ ProcessInput()

bool WsfEW_Effect::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source.

Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfObject.

Reimplemented in WsfEW_FalseTargetEffect, WsfEW_NX_SLB_Effect, WsfEW_PolModEffect, WsfEW_PowerEffect, WsfEW_PulseEffect, WsfEW_PulseSuppressEffect, WsfEW_RadiusEffect, WsfEW_RepeaterEffect, WsfEW_RPJ_Effect, WsfEW_SimpleFT_Effect, WsfEW_SLB_Effect, WsfEW_SLC_DegradeEffect, WsfEW_SLC_Effect, and WsfEW_TrackEffect.

References cTP_ALL, cTP_NON_SELF_PROTECT, cTP_SELF_PROTECT, EffectDataExists(), WsfObject::GetName(), WsfObject::GetNameId(), mDebug, mEffectDataMap, NewEffectData(), ProcessEffectDataBlock(), ProcessInput(), and WsfObject::SetName().

Referenced by ProcessEffectDataBlock(), WsfEW_AgilityEffect::ProcessInput(), WsfEW_CommEffect::ProcessInput(), ProcessInput(), and WsfEW_RadiusEffect::ProcessInput().

◆ ProcessMitigatedEffect()

void WsfEW_Effect::ProcessMitigatedEffect ( double aSimTime,
const WsfEM_Interaction & aTargetInteraction,
const WsfEM_Interaction & aJammerToTgtInteraction,
const ut::optional< WsfEM_Interaction > & aTgtToJammerInteraction,
WsfEW_Effects & aEW_Effects,
WsfEW_Effect * aEW_EffectPtr = nullptr )
virtual

Runs the calculation of an effect if it has been mitigated. This Unmitigated vs Mitigated is based on if there is a Electronic Protect pointer to counter the attack type of the Electronic Attack pointer.

Parameters
aSimTime[input] The current simulation time.
aTargetInteraction[input] The target interaction for the detection attempt.
aJammerToTgtInteraction[input] The jammer interaction for the jammer xmtr to victim Rcvr.
aTgtToJammerInteraction[input] Optional jammer interaction for the Victim Xmtr to jammer Rcvr. This will have no value if the jammer Rcvr doesn't exist.
aEW_Effects[input] The current effect that is being updated.
aEW_EffectPtr[input] The currently processing EW effect pointer to prevent recursion in EW effect processing loops.

References AllowTarget(), ApplyMitigatedEffect(), WsfEM_XmtrRcvr::GetPlatform(), WsfEM_Interaction::GetTarget(), WsfEM_Interaction::GetTransmitter(), mUpdatingEffect, UpdateEffects(), and WsfEW_Effect().

Referenced by Clone().

◆ ProcessUnmitigatedEffect()

void WsfEW_Effect::ProcessUnmitigatedEffect ( double aSimTime,
const WsfEM_Interaction & aTargetInteraction,
const WsfEM_Interaction & aJammerToTgtInteraction,
const ut::optional< WsfEM_Interaction > & aTgtToJammerInteraction,
WsfEW_Effects & aEW_Effects )
virtual

Runs the calculation of an effect if it has been unmitigated. This Unmitigated vs Mitigated is based on if there is a Electronic Protect pointer to counter the attack type of the Electronic Attack pointer.

Parameters
aSimTime[input] The current simulation time.
aTargetInteraction[input] The target interaction for the detection attempt.
aJammerToTgtInteraction[input] The jammer interaction for the jammer xmtr to victim Rcvr.
aTgtToJammerInteraction[input] Optional jammer interaction for the Victim Xmtr to jammer Rcvr. This will have no value if the jammer Rcvr doesn't exist.
aEW_Effects[input] The currently processing EW effect pointer to prevent recursion in EW effect processing loops.

References AllowTarget(), ApplyUnmitigatedEffect(), WsfEM_XmtrRcvr::GetPlatform(), WsfEM_Interaction::GetReceiver(), WsfEM_Interaction::GetTarget(), WsfEM_Interaction::GetTransmitter(), mDebug, mUpdatingEffect, PrintUpdateMessage(), ResetProtectionTypeFlag(), UpdateCurrentIds(), and UpdateEffects().

Referenced by Clone(), and WsfEW_Effects::Process().

◆ PropagateEffectDataPtr()

WsfEW_Effect::EffectData * WsfEW_Effect::PropagateEffectDataPtr ( WsfStringId aSystemTypeId)
protectedvirtual

Propagate the new effect data pointer to the other classes for local casting.

Note
Assumes that the base effect data map has the correct pointer
Parameters
aSystemTypeIdThe system type id to propagate the pointer for.

Reimplemented in WsfEW_CoverPulseEffect, WsfEW_FalseTargetEffect, WsfEW_PolModEffect, WsfEW_PowerEffect, WsfEW_PulseEffect, WsfEW_RadiusEffect, WsfEW_RepeaterEffect, WsfEW_RPJ_Effect, WsfEW_SimpleFT_Effect, WsfEW_SLC_DegradeEffect, and WsfEW_TrackEffect.

References EffectDataExists(), WsfObject::GetName(), and mEffectDataMap.

Referenced by Initialize(), InsertNewEffectData(), and WsfEW_RadiusEffect::PropagateEffectDataPtr().

◆ RemoveJammerXmtr() [1/2]

void WsfEW_Effect::RemoveJammerXmtr ( unsigned int aXmtrId)
virtual

Remove the specified jammer from the effect and associated classes.

Parameters
aXmtrIdThe unique Id of the jammer transmitter.

Reimplemented in WsfEW_SLB_Effect, and WsfEW_SLC_Effect.

Referenced by ApplyMitigatedEffect().

◆ RemoveJammerXmtr() [2/2]

void WsfEW_Effect::RemoveJammerXmtr ( WsfEM_Xmtr * aJammerXmtrPtr)
virtual

Remove the specified jammer from the effect and associated classes.

Parameters
aJammerXmtrPtrThe pointer to the jammer transmitter.

Reimplemented in WsfEW_SLB_Effect, and WsfEW_SLC_Effect.

◆ ResetEffectData()

void WsfEW_Effect::ResetEffectData ( WsfStringId aSystemTypeId)
inlineprotected

◆ ResetProtectionTypeFlag()

◆ SetBehavior()

void WsfEW_Effect::SetBehavior ( Behavior aBehavior)
inline

Set the behavior of the EW effect.

Parameters
aBehaviorThe behavior of the EW effect exhibits.

References mBehavior.

Referenced by WsfEW_Technique::SetDeltaGainEffect().

◆ SetCoherencyMask()

void WsfEW_Effect::SetCoherencyMask ( Coherency aCoherency)
inline

Set the coherency type of the EW effect.

Parameters
aCoherencyThe coherency of the EW effect exhibits.

References mCoherencyMask.

◆ SetDebug()

void WsfEW_Effect::SetDebug ( bool aDebug)
inline

Set the debug flag state.

Parameters
aDebugThe debug flag state, 'true' or 'false'.

References mDebug.

Referenced by WsfEW_Technique::SetDeltaGainEffect().

◆ SetEA_EP_Ptr()

void WsfEW_Effect::SetEA_EP_Ptr ( WsfEW_EA_EP * aPtr)
inline

Set the Electronic Attack pointer, set to NULL by default.

Parameters
aPtrThe pointer to the associated EA class.

Referenced by WsfEW_Technique::SetDeltaGainEffect().

◆ SetSystemFunctionMask() [1/2]

void WsfEW_Effect::SetSystemFunctionMask ( const std::string & aSystemFunctionId)

◆ SetSystemFunctionMask() [2/2]

void WsfEW_Effect::SetSystemFunctionMask ( SystemFunction aSystemFunction)
inline

Set the system type.

References mSystemFunctionMask.

Referenced by WsfEW_Technique::SetDeltaGainEffect().

◆ SetTechniquePtr()

void WsfEW_Effect::SetTechniquePtr ( WsfEW_Technique * aPtr)
inline

Set the technique pointer associated with this effect.

Parameters
aPtrThe technique pointer associated with this effect.

Referenced by WsfEW_Technique::SetDeltaGainEffect().

◆ UpdateCurrentIds()

◆ UpdateEffects()

void WsfEW_Effect::UpdateEffects ( double aSimTime,
const WsfEM_Interaction & aTargetInteraction,
const WsfEM_Interaction & aJammerToTgtInteraction,
const ut::optional< WsfEM_Interaction > & aTgtToJammerInteraction,
WsfEW_Effects & aEW_Effects,
WsfEW_Effect * aEW_EffectPtr = nullptr )
virtual

Allows the effect to update any parameters needed before running an apply effect method.

Parameters
aSimTime[input] The current simulation time.
aTargetInteraction[input] The target interaction for the detection attempt.
aJammerToTgtInteraction[input] The jammer interaction for the jammer Xmtr to victim Rcvr.
aTgtToJammerInteraction[input] Optional jammer interaction for the Victim Xmtr to jammer Rcvr. This will have no value if the jammer Rcvr doesn't exist.
aEW_Effects[input] The current effect that is being updated.
aEW_EffectPtr[input] The currently processing EW effect pointer to prevent recursion in EW effect processing loops.

Reimplemented in WsfEW_AgilityEffect, WsfEW_CoverPulseEffect, WsfEW_PowerEffect, WsfEW_PulseEffect, WsfEW_PulseSuppressEffect, WsfEW_RadiusEffect, WsfEW_RepeaterEffect, WsfEW_RPJ_Effect, WsfEW_SimpleFT_Effect, WsfEW_SLB_Effect, WsfEW_SLC_Effect, and WsfEW_TrackEffect.

References WsfEM_Interaction::GetReceiver(), WsfEM_Interaction::GetTarget(), WsfEM_Interaction::GetTransmitter(), mDebug, PrintUpdateMessage(), UpdateCurrentIds(), and WsfEW_Effect().

Referenced by ApplyMitigatedEffect(), ProcessMitigatedEffect(), ProcessUnmitigatedEffect(), WsfEW_AgilityEffect::UpdateEffects(), and WsfEW_RadiusEffect::UpdateEffects().

Member Data Documentation

◆ mBehavior

◆ mCoherencyMask

◆ mCurrentRcvrPlatformId

◆ mCurrentRcvrUniqueId

int WsfEW_Effect::mCurrentRcvrUniqueId {0}
protected

Current receiver unique Id.

Referenced by UpdateCurrentIds(), and WsfEW_Effect().

◆ mCurrentTargetId

◆ mCurrentXmtrPlatformId

◆ mCurrentXmtrUniqueId

◆ mDebug

bool WsfEW_Effect::mDebug {false}
protected

The debug flag, 'true' for debug, false otherwise.

Referenced by WsfEW_CommEffect::ApplyMitigatedEffect(), WsfEW_PowerEffect::ApplyMitigatedEffect(), WsfEW_PulseSuppressEffect::ApplyMitigatedEffect(), WsfEW_RadiusEffect::ApplyMitigatedEffect(), WsfEW_SLB_Effect::ApplyMitigatedEffect(), WsfEW_SLC_Effect::ApplyMitigatedEffect(), WsfEW_TrackEffect::ApplyMitigatedEffect(), WsfEW_AgilityEffect::ApplyUnmitigatedEffect(), WsfEW_CoverPulseEffect::ApplyUnmitigatedEffect(), WsfEW_PolModEffect::ApplyUnmitigatedEffect(), WsfEW_PowerEffect::ApplyUnmitigatedEffect(), WsfEW_RadiusEffect::ApplyUnmitigatedEffect(), WsfEW_RepeaterEffect::ApplyUnmitigatedEffect(), WsfEW_RPJ_Effect::ApplyUnmitigatedEffect(), WsfEW_SimpleFT_Effect::ApplyUnmitigatedEffect(), WsfEW_SLC_DegradeEffect::ApplyUnmitigatedEffect(), WsfEW_TrackEffect::ApplyUnmitigatedEffect(), DebugEnabled(), ProcessInput(), ProcessUnmitigatedEffect(), WsfEW_SLB_Effect::RemoveJammerXmtr(), WsfEW_SLB_Effect::RemoveJammerXmtr(), WsfEW_SLC_Effect::RemoveJammerXmtr(), WsfEW_SLC_Effect::RemoveJammerXmtr(), SetDebug(), WsfEW_AgilityEffect::UpdateEffects(), WsfEW_CoverPulseEffect::UpdateEffects(), UpdateEffects(), WsfEW_PulseEffect::UpdateEffects(), WsfEW_RadiusEffect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfEW_TrackEffect::UpdateEffects(), WsfEW_FalseTargetEffect::UpdateFT(), WsfEW_RepeaterEffect::UpdateGainFactors(), and WsfEW_Effect().

◆ mEffectDataMap

◆ mEffectedSystemId

◆ mEffectingSystemId

WsfStringId WsfEW_Effect::mEffectingSystemId {nullptr}
protected

The type Id of the system doing the effecting, changes with each call to UpdateEffects(...) or UpdateCurrentIds(...).

Referenced by UpdateCurrentIds(), WsfEW_PulseSuppressEffect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), and WsfEW_Effect().

◆ mSystemFunctionMask

◆ mUpdatingEffect

bool WsfEW_Effect::mUpdatingEffect {true}
protected

Variable to prevent infinite recursion in UpdateEffect.

Referenced by Initialize(), ProcessMitigatedEffect(), ProcessUnmitigatedEffect(), and WsfEW_Effect().


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