WSF
WsfEW_PulseSuppressEffect.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEW_PULSESUPPRESSEFFECT_HPP
13#define WSFEW_PULSESUPPRESSEFFECT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <iosfwd>
18#include <map>
19#include <vector>
20
21class UtInput;
22
23class WsfEW_EA;
24class WsfEW_EP;
25#include "WsfEM_Interaction.hpp"
26#include "WsfEM_Rcvr.hpp"
27#include "WsfEW_PulseEffect.hpp"
28#include "WsfObject.hpp"
29
32
33class WSF_MIL_EXPORT WsfEW_PulseSuppressEffect : public WsfEW_PulseEffect
34{
35public:
47
50 ~WsfEW_PulseSuppressEffect() override = default;
51 WsfEW_Effect* Clone() const override;
52 bool Initialize(WsfSimulation& aSimulation) override;
53 bool ProcessInput(UtInput& aInput) override;
54
55 void ApplyUnmitigatedEffect(WsfEW_Effects& aEW_Effects) const override;
56
57 void ApplyMitigatedEffect(WsfEW_Effect* aEW_EffectPtr, WsfEW_Effects& aEW_Effects) const override;
58
59 void UpdateEffects(double aSimTime,
60 const WsfEM_Interaction& aTargetInteraction,
61 const WsfEM_Interaction& aJammerToTgtInteraction,
62 const ut::optional<WsfEM_Interaction>& aTgtToJammerInteraction,
63 WsfEW_Effects& aEW_Effects,
64 WsfEW_Effect* aEW_EffectPtr = nullptr) override;
65
66protected:
68
69private:
70 struct Limits
71 {
72 double mLower;
73 double mUpper;
74 int mModulationType;
75
76 void Reset()
77 {
78 mLower = 0.0;
79 mUpper = 0.0;
80 mModulationType = WsfEW_Effect::cEC_NONE;
81 }
82 };
83
85 using SuppressionMap = std::map<unsigned int, Limits>;
86
87 double GetSuppressionValue(SuppressionType aSuppressType, double aCheckValue);
88 double GetSuppressionValue(SuppressionType aSuppressType, ModulationType aModType);
89
90 SuppressionMap mAllowedMap;
91 SuppressionMap mRejectMap;
92 unsigned int mSuppressTypeMask;
93 double mSuppressGain;
94 double mNoiseSuppressGain;
95 double mCohSuppressGain;
96};
97
98#endif
Definition WsfEM_Interaction.hpp:68
Definition WsfEW_EA.hpp:37
Definition WsfEW_EP.hpp:36
Definition WsfEW_Effect.hpp:45
@ cEC_NONE
Definition WsfEW_Effect.hpp:75
Definition WsfEW_Effects.hpp:41
void ApplyUnmitigatedEffect(WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:72
void ApplyMitigatedEffect(WsfEW_Effect *aEW_EffectPtr, WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:233
WsfEW_Effect * Clone() const override
Definition WsfEW_PulseEffect.cpp:42
WsfEW_PulseEffect()
Definition WsfEW_PulseEffect.cpp:24
bool Initialize(WsfSimulation &aSimulation) override
Definition WsfEW_PulseEffect.cpp:48
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) override
Definition WsfEW_PulseEffect.cpp:67
bool ProcessInput(UtInput &aInput) override
Definition WsfEW_PulseEffect.cpp:61
Definition WsfEW_PulseSuppressEffect.hpp:34
WsfEW_PulseSuppressEffect(const WsfEW_PulseSuppressEffect &aSrc)=default
WsfEW_PulseSuppressEffect()
Definition WsfEW_PulseSuppressEffect.cpp:36
SuppressionType
Definition WsfEW_PulseSuppressEffect.hpp:37
@ cST_COHERENT
Definition WsfEW_PulseSuppressEffect.hpp:43
@ cST_PRF
Definition WsfEW_PulseSuppressEffect.hpp:41
@ cST_MODULATION
Definition WsfEW_PulseSuppressEffect.hpp:42
@ cST_NONCOHERENT
Definition WsfEW_PulseSuppressEffect.hpp:44
@ cST_NONE
Definition WsfEW_PulseSuppressEffect.hpp:38
@ cST_PW
Definition WsfEW_PulseSuppressEffect.hpp:40
@ cST_PULSE_RATIO
Definition WsfEW_PulseSuppressEffect.hpp:45
@ cST_FREQUENCY
Definition WsfEW_PulseSuppressEffect.hpp:39
~WsfEW_PulseSuppressEffect() override=default
WsfEW_PulseSuppressEffect & operator=(const WsfEW_PulseSuppressEffect &)=delete
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved