WSF
WsfRF_Jammer.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 WSFRF_JAMMER_HPP
13#define WSFRF_JAMMER_HPP
14
15#include "wsf_mil_export.h"
16
17#include <map>
18#include <memory>
19#include <mutex>
20
21#include "WsfEM_Antenna.hpp"
23class WsfEM_Rcvr;
24#include "WsfEM_Xmtr.hpp"
25class WsfEW_Effect;
26#include "WsfRF_Repeater.hpp"
27class WsfScenario;
28#include "WsfSensor.hpp"
29#include "WsfTrackId.hpp"
30#include "WsfWeapon.hpp"
31
36class WSF_MIL_EXPORT WsfRF_Jammer : public WsfWeapon
37{
38public:
39 class JammerBeam;
40 class JammerMode;
41
42 class WSF_MIL_EXPORT TargetingData
43 {
44 public:
46 size_t mTargetIndex{0};
47
50
52 double mTargetedLocationWCS[3] = {0.0, 0.0, 0.0};
53
56 };
57
58 using TargetingDataMap = std::map<int, TargetingData>;
59
66
67 WsfRF_Jammer(const WsfScenario& aScenario);
68
69 WsfRF_Jammer(const WsfRF_Jammer& aSrc);
70
72
73 ~WsfRF_Jammer() override = default;
74
76
77
78 WsfWeapon* Clone() const override;
79
80 bool Initialize(double aSimTime) override;
81
82 bool ProcessInput(UtInput& aInput) override;
84
86
87 const int* GetComponentRoles() const override;
88 void* QueryInterface(int aRole) override;
90
92
93
94 void TurnOff(double aSimTime) override;
95
99 void TurnOn(double aSimTime) override;
101
103
104
105
108 size_t GetEM_XmtrCount() const override;
109
115 WsfEM_Xmtr& GetEM_Xmtr(size_t aIndex) override;
116
118 size_t GetEM_XmtrCount(size_t aModeIndex) const override;
119
127 WsfEM_Xmtr& GetEM_Xmtr(size_t aModeIndex, size_t aIndex) override;
128
136 WsfEM_Xmtr& GetEM_Xmtr(size_t aModeIndex, size_t aBeamIndex, size_t aSpotIndex) override;
137
141
151 WsfEM_Xmtr& GetJammerXmtr(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId);
153
157
158
159 double GetMinimumFrequency() const;
160 double GetMaximumFrequency() const;
162
165
166
176 bool StartJamming(double aSimTime,
177 double aFrequency,
178 double aBandwidth,
179 size_t aBeamNumber,
180 WsfStringId aTechniqueId,
181 WsfTrackId aTrackId,
182 size_t aTargetIndex) override;
183
189 bool StartJammingTrack(double aSimTime, WsfStringId aTechniqueId, const WsfTrack* aTrackPtr) override;
190
199 bool StopJamming(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId) override;
200
213 bool UpdateJamming(double aSimTime,
214 size_t aXmtrIndex,
215 double aFrequency,
216 double aBandwidth,
217 WsfStringId aTechniqueId,
218 WsfTrackId aTrackId,
219 size_t aTargetIndex) override;
221
224
225 bool ProcessMessage(double aSimTime, const WsfMessage& aMessage) override;
227
229
230
232 void SetTargetIndex(int aId, size_t aTargetIndex) override;
233
235 size_t GetTargetIndex(int aId) const override;
236
238 void SetTargetTrackId(int aId, const WsfTrackId& aTargetTrackId);
239
241 WsfTrackId GetTargetTrackId(int aId) const;
242
247 void SetTargetedLocationWCS(int aId, const double aTargetedLocationWCS[3]) override;
248
253 void GetTargetedLocationWCS(int aId, double aTargetedLocationWCS[3]) const override;
254
256 bool TargetedLocationValid(int aId) const override;
258
259
261
262
272 bool SelectEA_Technique(double aSimTime,
273 double aFrequency,
274 double aBandwidth,
275 size_t aBeamNumber,
276 WsfStringId aTechniqueId,
277 WsfTrackId aTrackId) override;
278
288 bool DeselectEA_Technique(double aSimTime,
289 double aFrequency,
290 double aBandwidth,
291 size_t aBeamNumber,
292 WsfStringId aTechniqueId,
293 WsfTrackId aTrackId) override;
294
305 bool SetEA_DeltaGainTechnique(double aSimTime,
306 WsfStringId aTechniqueId,
307 bool aOnOff,
308 WsfStringId aEffectId,
309 double aJammingDeltaGain_dB,
310 WsfStringId aSystemTypeId,
311 WsfStringId aFunctionTypeId) override;
312
327 bool SetEA_DeltaGainTechnique(double aSimTime,
328 WsfStringId aTechniqueId,
329 bool aOnOff,
330 WsfStringId aEffectId,
331 double aJammingDeltaGain_dB,
332 WsfStringId aSystemTypeId,
333 WsfStringId aSystemFunctionId,
334 double aFrequency,
335 double aBandwidth,
336 size_t aBeamNumber,
337 WsfTrackId aTrackId) override;
339
341
342
359 static double ComputeJammerPower(double aSimTime,
360 WsfEM_Xmtr* aJammerXmtrPtr,
361 const WsfEM_Interaction& aTargetInteraction,
362 WsfEM_Interaction& aJammerInteraction,
363 WsfEW_Effect* aProcessingEW_EffectPtr = nullptr);
364
373 static double ComputeJammerPower(double aSimTime,
374 WsfEM_Xmtr* aJammerXmtrPtr,
375 const WsfEM_Interaction& aTargetInteraction,
376 WsfEW_Effect* aProcessingEW_EffectPtr = nullptr);
377
394 static void ComputeJammerPowers(double aSimTime,
395 WsfEM_Xmtr* aJammerXmtrPtr,
396 const WsfEM_Interaction& aTargetInteraction,
397 WsfEM_Interaction& aJammerInteraction,
398 double aJammerPowers[],
399 WsfEW_Effect* aProcessingEW_EffectPtr = nullptr);
400
412 static void ComputeJammerPowers(double aSimTime,
413 WsfEM_Xmtr* aJammerXmtrPtr,
414 const WsfEM_Interaction& aTargetInteraction,
415 double aJammerPowers[],
416 WsfEW_Effect* aProcessingEW_EffectPtr = nullptr);
417
439 static void ComputeSingleJammerEffect(double aSimTime,
440 WsfEM_Xmtr* aJammerXmtrPtr,
441 WsfEM_Interaction& aTargetInteraction,
442 WsfEM_Interaction& aJammerInteraction,
443 bool aApplyEW_Effects);
444
457 static void ComputeTotalJammerEffects(double aSimTime, WsfEM_Interaction& aTargetInteraction, bool aApplyEW_Effects);
458
460 static double ComputeReceiverGains(WsfEM_Rcvr* aRcvrPtr);
461
463
468
469
470 unsigned int GetActiveRequestCount() const override;
471 unsigned int GetMaximumRequestCount() const override;
472
473 double GetQuantityRemaining() const override;
474
475 size_t GetActiveBeamCount() const override;
476 size_t GetMaximumBeamCount() const override;
477 size_t GetActiveSpotCount(size_t aBeamNumber) const override;
478 size_t GetMaximumSpotCount(size_t aBeamNumber) const override;
479
481
484
485
486 bool WithinFieldOfView(double aSimTime, WsfPlatform* aPlatformPtr) override;
487 bool WithinFieldOfView(double aSimTime, WsfTrack* aTrackPtr) override;
488
490
493 class WSF_MIL_EXPORT JammerXmtr : public WsfEM_Xmtr
494 {
497
498 public:
501 JammerXmtr(WsfEM_Antenna* aAntennaPtr);
502
504 JammerXmtr(const JammerXmtr& aSrc, WsfEM_Antenna* aAntennaPtr);
505
507
508 bool Initialize(WsfSimulation& aSimulation) override;
509 bool ProcessInput(UtInput& aInput) override;
511
518 bool AllowInteractionWith(WsfEM_Rcvr* aRcvrPtr) override;
520
522
523
526 void GetFrequencyBand(double aFrequencyBand[2]) const;
527
529
530 protected:
533
535 std::vector<WsfStringId> mIgnoredSides;
536
538 unsigned int mIgnoredDomains;
539
542
544 double mFrequencyBand[2];
545 };
546
547 // Search vector and map to find beam and spot indexes that meet a specified criteria.
548 using SpotIndexVec = std::vector<unsigned int>;
549 using BeamSpotIndexMap = std::map<unsigned int, SpotIndexVec>;
550
552 class WSF_MIL_EXPORT JammerBeam
553 {
554 public:
556
558 using SpotVec = std::vector<JammerXmtr*>;
559
561 using SpotTrackIdVec = std::vector<WsfTrackId>;
562
564 JammerBeam() = delete;
565
567 JammerBeam(unsigned int aBeamNumber);
568
569 JammerBeam(const JammerBeam& aSrc, unsigned int aBeamNumber);
570
571 ~JammerBeam();
572
574
575
580 bool Initialize(WsfSimulation& aSimulation, JammerXmtr& aXmtr);
581
585 bool ProcessInput(UtInput& aInput);
587
589
590
593 void Deselect(double aSimTime);
594
597 void Select(double aSimTime);
598
601 void SetBeamNumber(unsigned int aBeamNumber) { mBeamNumber = aBeamNumber; }
602
605 unsigned int GetBeamNumber() const { return mBeamNumber; }
607
609
610
613 unsigned int GetActiveSpotCount() const;
614
617 unsigned int GetAvailableSpotCount() const;
618
631 bool GetActiveSpotIndex(double aFrequency,
632 double aBandwidth,
633 WsfTrackId aTrackId,
634 WsfTrackId aRawTrackId,
635 SpotIndexVec& aSpotIndexVec) const;
637
639 unsigned int mBeamNumber;
640
643
646
649
653
656 };
657
658 class WSF_MIL_EXPORT JammerMode : public WsfWeapon::WsfWeaponMode
659 {
660 public:
662 using BeamMap = std::map<size_t, JammerBeam*>;
663
664
666 using XmtrVec = std::vector<JammerXmtr*>;
667
669 JammerMode(const WsfScenario& aScenario);
670
672 JammerMode(const JammerMode& aSrc);
673
675 JammerMode& operator=(const JammerMode&) = delete;
676
677 ~JammerMode() override;
678
680
681
684 WsfMode* Clone() const override;
685
691 bool Initialize(double aSimTime, WsfWeapon* aWeaponPtr) override;
692
695 bool ProcessInput(UtInput& aInput) override;
697
700 void Deselect(double aSimTime) override;
701
704 void Select(double aSimTime) override;
705
710 void AdjustPowerDistribution(PowerDistribution aGroupPowerDistribution, unsigned int aActiveGroupCount);
711
713
714
717 size_t GetActiveBeamCount() const;
718
721 size_t GetAvailableBeamCount() const;
722
727 JammerBeam* GetJammerBeam(size_t aBeamNumber, bool& aIsActive) const;
728
737 bool GetActiveBeamSpotIndexes(double aFrequency,
738 double aBandwidth,
739 size_t aBeamNumber,
740 WsfTrackId aTrackId,
741 BeamSpotIndexMap& aBeamSpotIndexMap);
742
747 JammerBeam* GetNextAssignableBeam(size_t aBeamNumber, bool& aIsActive) const;
749
751
752
755 size_t GetActiveXmtrSpotCount() const { return mActiveXmtrSpotPtrs.size(); }
756
759 unsigned int GetMaximumXmtrSpotCount() const { return mMaximumNumSpots; }
760
762
763 // TODO - make data private and protect copy constructor
764
766
767
773 bool AdjustFrequencyBandwidth(double& aFrequency, double& aBandwidth);
774
776 std::unique_ptr<WsfEM_Antenna> mAntenna;
777
779 std::unique_ptr<JammerXmtr> mXmtr;
780
782 std::unique_ptr<JammerBeam> mBeam;
784
786
787
790
793
796
799 unsigned int mMaxNumBeams;
800
804
806
807
810 unsigned int mMaximumNumSpots;
811
815
817
818
820
824 };
825
826protected:
827 const TargetingDataMap& GetTargetDataMap() const { return mTargetDataMap; }
828
829private:
830 std::recursive_mutex& GetMutex() { return mMutex; }
831
833
834
848 static void ComputeJammerEffect(double aSimTime,
849 WsfEM_Xmtr* aXmtrPtr,
850 const WsfEM_Interaction& aTargetInteraction,
851 WsfEM_Interaction& aJammerInteraction,
852 bool aCalculateEW_Effects,
853 bool aIntermediateCalculation,
854 WsfEW_Effect* aProcessingEW_EffectPtr = nullptr);
856
858 bool SelectTarget(double aSimTime, WsfEM_Xmtr* aXmtrPtr);
859
861 bool ClearTarget(WsfEM_Xmtr* aXmtrPtr);
862
864 WsfLocalTrack* FindTargetTrack(const WsfTrackId& aTargetTrackId) const;
865
867
868 void SensorTrackDropped(double aSimTime, WsfTrackId aTrackId, size_t aTargetIndex);
869 void SensorTrackInitiated(double aSimTime, const WsfTrack* aTrackPtr);
870 void SensorTrackUpdated(double aSimTime, const WsfTrack* aTrackPtr);
871
873 static bool UpdateRepeaterResult(double aSimTime,
874 WsfEM_Xmtr* aXmtrPtr,
875 WsfSensorResult& aResult,
876 WsfEM_Interaction& aJammerInteraction,
877 const WsfEM_Interaction& aTargetInteraction);
879
881
882
884 void InitializeJammerGroup();
885
889 unsigned int GetActiveGroupCount() const;
890
892 using JammerGroup = std::vector<WsfWeapon*>;
893
895 JammerGroup mJammerGroup;
896
898 WsfStringId mJammerGroupNameId;
899
901 PowerDistribution mGroupPowerDistribution;
902
904
906 std::vector<JammerMode*> mJammerModeList;
907
909 bool mJammerInitialized;
910
912 TargetingDataMap mTargetDataMap;
913
914 mutable std::recursive_mutex mMutex;
915};
916
918
919#endif
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_RF_JAMMER
Jammer component.
Definition WsfMilComponentRoles.hpp:38
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Contains the 'categories' to which an object belongs.
Definition WsfCategoryList.hpp:34
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_Xmtr.hpp:55
WsfEM_Xmtr(XmtrFunction aFunction, WsfEM_Antenna *aAntennaPtr=nullptr)
Definition WsfEM_Xmtr.cpp:48
Definition WsfEW_Effect.hpp:45
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
WsfMode()
Definition WsfMode.cpp:15
virtual bool ProcessMessage(double aSimTime, const WsfMessage &aMessage)
Definition WsfPlatformPart.cpp:442
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
This class is for the spatial jamming beams that are part of each mode.
Definition WsfRF_Jammer.hpp:553
std::vector< JammerXmtr * > SpotVec
Type defines for managing of jammer spots.
Definition WsfRF_Jammer.hpp:558
unsigned int mBeamNumber
Unique beam number for this mode.
Definition WsfRF_Jammer.hpp:639
PowerDistribution mSpotPowerDistribution
SpotPower distribution - average or constant - defaults to average.
Definition WsfRF_Jammer.hpp:655
SpotVec mAvailableSpotPtrs
Active jammer spot pointer list.
Definition WsfRF_Jammer.hpp:645
unsigned int mMaxNumSpotsPerBeam
Definition WsfRF_Jammer.hpp:652
SpotTrackIdVec mSpotTrackIds
TrackId list for the active jammer spots.
Definition WsfRF_Jammer.hpp:648
unsigned int GetBeamNumber() const
Definition WsfRF_Jammer.hpp:605
void Select(double aSimTime)
Definition WsfRF_Jammer.cpp:3085
std::vector< WsfTrackId > SpotTrackIdVec
Type defines for managing of jammer spot track Ids.
Definition WsfRF_Jammer.hpp:561
SpotVec mActiveSpotPtrs
Active jammer spot pointer list.
Definition WsfRF_Jammer.hpp:642
void SetBeamNumber(unsigned int aBeamNumber)
Definition WsfRF_Jammer.hpp:601
JammerBeam()=delete
Construct a RF jammer beam.
void Deselect(double aSimTime)
Definition WsfRF_Jammer.cpp:3075
Definition WsfRF_Jammer.hpp:659
unsigned int mMaximumNumSpots
Definition WsfRF_Jammer.hpp:810
XmtrVec mActiveXmtrSpotPtrs
Vector for the active jammer transmitters (i.e. spots).
Definition WsfRF_Jammer.hpp:813
JammerBeam * GetJammerBeam(size_t aBeamNumber, bool &aIsActive) const
Definition WsfRF_Jammer.cpp:2843
void AdjustPowerDistribution(PowerDistribution aGroupPowerDistribution, unsigned int aActiveGroupCount)
Definition WsfRF_Jammer.cpp:2796
unsigned int mMaxNumBeams
Definition WsfRF_Jammer.hpp:799
std::vector< JammerXmtr * > XmtrVec
Need to track all of the active transmitters for DIS Emission PDU handling.
Definition WsfRF_Jammer.hpp:666
size_t GetActiveXmtrSpotCount() const
Definition WsfRF_Jammer.hpp:755
void Deselect(double aSimTime) override
Definition WsfRF_Jammer.cpp:2776
PowerDistribution mBeamPowerDistribution
Beam power distribution - average or constant - defaults to average.
Definition WsfRF_Jammer.hpp:802
JammerMode(const WsfScenario &aScenario)
Construct RF Jammer.
Definition WsfRF_Jammer.cpp:2599
bool mBeamAllocationChanged
Flag to indicate if a beam allocation change was made for the last [Start/Stop]Jamming call.
Definition WsfRF_Jammer.hpp:795
JammerBeam * GetNextAssignableBeam(size_t aBeamNumber, bool &aIsActive) const
Definition WsfRF_Jammer.cpp:2912
BeamMap mActiveBeamPtrs
List of all active beams, this mode.
Definition WsfRF_Jammer.hpp:789
JammerMode & operator=(const JammerMode &)=delete
Move operator.
void Select(double aSimTime) override
Definition WsfRF_Jammer.cpp:2787
bool GetActiveBeamSpotIndexes(double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId, BeamSpotIndexMap &aBeamSpotIndexMap)
Definition WsfRF_Jammer.cpp:2864
std::map< size_t, JammerBeam * > BeamMap
map<BeamIndex, JammerBeamPointer>
Definition WsfRF_Jammer.hpp:662
std::unique_ptr< WsfEM_Antenna > mAntenna
Master Antenna, this mode.
Definition WsfRF_Jammer.hpp:776
size_t GetAvailableBeamCount() const
Definition WsfRF_Jammer.cpp:2838
WsfRF_Repeater mRepeater
Repeater logic, this mode.
Definition WsfRF_Jammer.hpp:819
bool mUseRepeater
Flag to specify if using a repeater, this mode.
Definition WsfRF_Jammer.hpp:822
std::unique_ptr< JammerXmtr > mXmtr
Master transmitter, this mode.
Definition WsfRF_Jammer.hpp:779
unsigned int GetMaximumXmtrSpotCount() const
Definition WsfRF_Jammer.hpp:759
std::unique_ptr< JammerBeam > mBeam
Master beam, this mode.
Definition WsfRF_Jammer.hpp:782
BeamMap mAvailableBeamPtrs
List of all available beams, this mode.
Definition WsfRF_Jammer.hpp:792
Definition WsfRF_Jammer.hpp:494
double mFrequencyBand[2]
Alternate input for defining the frequency and bandwidth of the jammer transmitter.
Definition WsfRF_Jammer.hpp:544
bool mIgnoreSameSide
'true' if the jammer should not jam platforms on the same side.
Definition WsfRF_Jammer.hpp:541
void GetFrequencyBand(double aFrequencyBand[2]) const
Definition WsfRF_Jammer.cpp:2594
std::vector< WsfStringId > mIgnoredSides
The sides (teams) which this jammer should ignore.
Definition WsfRF_Jammer.hpp:535
bool AllowInteractionWith(WsfEM_Rcvr *aRcvrPtr) override
Definition WsfRF_Jammer.cpp:2570
unsigned int mIgnoredDomains
A bit mask of ignored domains.
Definition WsfRF_Jammer.hpp:538
WsfCategoryList mIgnoredCategories
Categories which this jammer should ignore.
Definition WsfRF_Jammer.hpp:532
JammerXmtr(WsfEM_Antenna *aAntennaPtr)
Definition WsfRF_Jammer.cpp:2483
Definition WsfRF_Jammer.hpp:43
size_t mTargetIndex
'index' to the targeted platform.
Definition WsfRF_Jammer.hpp:46
bool mTargetedLocationValid
'true' if the WCS location is valid.
Definition WsfRF_Jammer.hpp:55
double mTargetedLocationWCS[3]
The targeted location of this jammer transmitter.
Definition WsfRF_Jammer.hpp:52
WsfTrackId mTargetTrackId
Track Id of the targeted platform.
Definition WsfRF_Jammer.hpp:49
Definition WsfRF_Jammer.hpp:37
WsfEM_Xmtr & GetMasterXmtr()
Definition WsfRF_Jammer.cpp:303
~WsfRF_Jammer() override=default
WsfRF_Jammer & operator=(const WsfRF_Jammer &)=delete
static void ComputeTotalJammerEffects(double aSimTime, WsfEM_Interaction &aTargetInteraction, bool aApplyEW_Effects)
Definition WsfRF_Jammer.cpp:2000
double GetMaximumFrequency() const
Definition WsfRF_Jammer.cpp:336
PowerDistribution
GroupPowerDistribution defines the intended power distribution of the transmitters in this group.
Definition WsfRF_Jammer.hpp:62
@ cCONSTANT_POWER
Constant.
Definition WsfRF_Jammer.hpp:64
@ cAVERAGE_POWER
Average.
Definition WsfRF_Jammer.hpp:63
static double ComputeJammerPower(double aSimTime, WsfEM_Xmtr *aJammerXmtrPtr, const WsfEM_Interaction &aTargetInteraction, WsfEM_Interaction &aJammerInteraction, WsfEW_Effect *aProcessingEW_EffectPtr=nullptr)
Definition WsfRF_Jammer.cpp:1529
double GetMinimumFrequency() const
Definition WsfRF_Jammer.cpp:329
const TargetingDataMap & GetTargetDataMap() const
Definition WsfRF_Jammer.hpp:827
std::map< int, TargetingData > TargetingDataMap
Definition WsfRF_Jammer.hpp:58
WsfRF_Jammer(const WsfScenario &aScenario)
Definition WsfRF_Jammer.cpp:43
WsfTrackId GetTargetTrackId(int aId) const
Return trackId at aId location if it exists, otherwise return a nullptr.
Definition WsfRF_Jammer.cpp:1008
std::map< unsigned int, SpotIndexVec > BeamSpotIndexMap
Definition WsfRF_Jammer.hpp:549
std::vector< unsigned int > SpotIndexVec
Definition WsfRF_Jammer.hpp:548
void SetTargetTrackId(int aId, const WsfTrackId &aTargetTrackId)
Insert Target track into TargetDataMap, if it doesn't already exist.
Definition WsfRF_Jammer.cpp:992
WsfEM_Xmtr & GetJammerXmtr(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId)
Definition WsfRF_Jammer.cpp:310
static double ComputeReceiverGains(WsfEM_Rcvr *aRcvrPtr)
Compute Jammer Receiver Gains from incident Radar Beam.
Definition WsfRF_Jammer.cpp:2393
static void ComputeSingleJammerEffect(double aSimTime, WsfEM_Xmtr *aJammerXmtrPtr, WsfEM_Interaction &aTargetInteraction, WsfEM_Interaction &aJammerInteraction, bool aApplyEW_Effects)
Definition WsfRF_Jammer.cpp:1614
static void ComputeJammerPowers(double aSimTime, WsfEM_Xmtr *aJammerXmtrPtr, const WsfEM_Interaction &aTargetInteraction, WsfEM_Interaction &aJammerInteraction, double aJammerPowers[], WsfEW_Effect *aProcessingEW_EffectPtr=nullptr)
Definition WsfRF_Jammer.cpp:1571
Definition WsfRF_Repeater.hpp:30
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
A 'mode' of the weapon.
Definition WsfWeapon.hpp:78
virtual bool UpdateJamming(double aSimTime, size_t aXmtrIndex, double aFrequency, double aBandwidth, WsfStringId aTechniqueId, WsfTrackId aTrackId, size_t aTargetIndex)
Definition WsfWeapon.hpp:504
virtual size_t GetActiveBeamCount() const
Definition WsfWeapon.hpp:515
virtual size_t GetEM_XmtrCount() const
Definition WsfWeapon.cpp:549
virtual bool SetEA_DeltaGainTechnique(double aSimTime, WsfStringId aTechniqueId, bool aOnOff, WsfStringId aEffectId, double aJammingDeltaGain_dB, WsfStringId aSystemTypeId, WsfStringId aFunctionTypeId)
Definition WsfWeapon.hpp:544
bool ProcessInput(UtInput &aInput) override
Definition WsfWeapon.cpp:276
virtual void SetTargetedLocationWCS(int aId, const double aTargetedLocationWCS[3])
Definition WsfWeapon.hpp:466
virtual size_t GetMaximumBeamCount() const
Definition WsfWeapon.hpp:516
WsfWeapon(const WsfScenario &aScenario)
Definition WsfWeapon.cpp:48
WsfWeapon * Clone() const override=0
bool Initialize(double aSimTime) override
Definition WsfWeapon.cpp:187
virtual bool DeselectEA_Technique(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId)
Definition WsfWeapon.hpp:534
virtual bool WithinFieldOfView(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfWeapon.cpp:1225
virtual size_t GetTargetIndex(int aId) const
Definition WsfWeapon.hpp:464
virtual bool StopJamming(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfTrackId aTrackId)
Definition WsfWeapon.hpp:499
virtual void GetTargetedLocationWCS(int aId, double aTargetedLocationWCS[3]) const
Definition WsfWeapon.hpp:467
virtual bool SelectEA_Technique(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId)
Definition WsfWeapon.hpp:524
virtual unsigned int GetMaximumRequestCount() const
Definition WsfWeapon.hpp:362
virtual double GetQuantityRemaining() const
Definition WsfWeapon.cpp:1014
virtual size_t GetMaximumSpotCount(size_t aBeamNumber) const
Definition WsfWeapon.hpp:518
virtual bool StartJamming(double aSimTime, double aFrequency, double aBandwidth, size_t aBeamNumber, WsfStringId aTechniqueId, WsfTrackId aTrackId, size_t aTargetIndex)
Definition WsfWeapon.hpp:484
void TurnOff(double aSimTime) override
Definition WsfWeapon.cpp:446
virtual bool TargetedLocationValid(int aId) const
Definition WsfWeapon.hpp:469
void TurnOn(double aSimTime) override
Definition WsfWeapon.cpp:465
virtual unsigned int GetActiveRequestCount() const
Return the number of 'FireSalvo' calls that are in process.
Definition WsfWeapon.hpp:358
virtual WsfEM_Xmtr & GetEM_Xmtr(size_t aIndex)
Definition WsfWeapon.cpp:563
virtual bool StartJammingTrack(double aSimTime, WsfStringId aTechniqueId, const WsfTrack *aTrackPtr)
Definition WsfWeapon.hpp:494
virtual size_t GetActiveSpotCount(size_t aBeamNumber) const
Definition WsfWeapon.hpp:517
const int * GetComponentRoles() const override
Definition WsfWeapon.cpp:144
void * QueryInterface(int aRole) override
Definition WsfWeapon.cpp:154
virtual void SetTargetIndex(int aId, size_t aTargetIndex)
Definition WsfWeapon.hpp:463
WSF_EXPORT SensorTrackInitiatedCallback & SensorTrackInitiated(const WsfSimulation *aSimulationPtr)
WSF_EXPORT SensorTrackUpdatedCallback & SensorTrackUpdated(const WsfSimulation *aSimulationPtr)
WSF_EXPORT SensorTrackDroppedCallback & SensorTrackDropped(const WsfSimulation *aSimulationPtr)
Copyrights Multiple, All Rights Reserved