15#include "wsf_export.h"
65 using PowerList = std::vector<std::pair<double, double>>;
82 std::string
GetName()
const {
return "transmitter"; }
95 virtual bool AllowInteractionWith(
WsfEM_Rcvr* aRcvrPtr);
97 virtual double ComputeRadiatedPower(
double aTargetAz,
102 double& aAntennaGain);
108 virtual bool ProcessInputBlock(UtInput& aInput);
127 double GetAlternateFrequency(
unsigned int aId)
const;
140 double GetPeakPower(
double aFrequency = 0.0)
const;
141 double GetAveragePower(
double aFrequency = 0.0)
const;
142 double GetPower(
double aFrequency = 0.0)
const;
155 double GetPulseRepetitionFrequency(
size_t aIndex = 0)
const;
159 std::vector<double> GetPulseRepetitionFrequencies()
const;
167 double GetPulseRepetitionInterval(
size_t aIndex = 0)
const;
171 std::vector<double> GetPulseRepetitionIntervals()
const;
193 void SelectAlternateFrequency(
unsigned int aId);
200 void SetPower(
double aPower);
201 bool SetPower(
double aPower,
double aFrequency);
203 void SetPulseCompressionRatio(
double aPulseCompressionRatio);
205 void SetPulseRepetitionFrequency(
double aPulseRepetitionFrequency,
size_t aPRF_Num = 1);
207 void SetPulseRepetitionInterval(
double aPulseRepetitionInterval,
size_t aPRF_Num = 1);
209 void SetPulseWidth(
double aPulseWidth);
211 void SetDutyCycle(
double aDutyCycle);
215 virtual bool AddListener(
WsfEM_Rcvr* aRcvrPtr);
217 virtual bool RemoveListener(
WsfEM_Rcvr* aRcvrPtr);
224 virtual bool AddChangeListener(
WsfEM_Rcvr* aRcvrPtr);
226 virtual bool RemoveChangeListener(
WsfEM_Rcvr* aRcvrPtr);
228 virtual void NotifyChangeListeners(
double aSimTime,
size_t aTargetIndex);
250 ComponentList mComponents;
259 FrequencyList mAlternateFrequencyList;
261 PowerList mPowerList;
262 double mPulseCompressionRatio;
263 std::vector<double> mPulseRepetitionFrequencies;
264 std::vector<double> mPulseRepetitionIntervals;
270 double mTransmissionEndTime;
272 using Listeners = std::vector<WsfEM_Rcvr*>;
274 Listeners mListeners;
276 Listeners mChangeListeners;
278 XmtrFunction mFunction;
281 unsigned int mCurrentAltFreqId;
285 bool mExplicitFrequencyList;
289 bool mUseDefaultFrequency;
291 bool mAllowZeroFrequencyInput;
WsfComponentT< WsfEM_Xmtr > WsfEM_XmtrComponent
Definition WsfEM_Xmtr.hpp:36
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfAntennaPattern.hpp:35
A component list that stores only components of a specified type.
Definition WsfComponentList.hpp:343
Definition WsfComponent.hpp:119
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Manager.hpp:44
Definition WsfEM_Rcvr.hpp:68
virtual void SetPolarization(WsfEM_Types::Polarization aPolarization)
Definition WsfEM_XmtrRcvr.cpp:807
WsfEM_XmtrRcvr(WsfEM_Antenna *aAntennaPtr=nullptr)
Definition WsfEM_XmtrRcvr.cpp:40
virtual bool ProcessInput(UtInput &aInput)
Definition WsfEM_XmtrRcvr.cpp:279
virtual void SetBandwidth(double aBandwidth)
Definition WsfEM_XmtrRcvr.cpp:819
virtual void SetFrequency(double aFrequency)
Definition WsfEM_XmtrRcvr.cpp:813
virtual bool Initialize(WsfSimulation &aSimulation)
Definition WsfEM_XmtrRcvr.cpp:144
Definition WsfEM_Xmtr.hpp:55
WsfComponentListT< WsfEM_XmtrComponent > ComponentList
Definition WsfEM_Xmtr.hpp:61
bool UseDefaultFrequency()
Definition WsfEM_Xmtr.hpp:195
int GetPulseRepetitionFrequencyCount() const
Definition WsfEM_Xmtr.hpp:151
double GetPulseWidth() const
Definition WsfEM_Xmtr.hpp:175
void SetTransmissionEndTime(double aTransmissionEndTime)
Set the simulation time when the current transmission is to be completed.
Definition WsfEM_Xmtr.hpp:244
double GetTransmissionEndTime() const
Definition WsfEM_Xmtr.hpp:241
double GetPulseCompressionRatio() const
Definition WsfEM_Xmtr.hpp:147
XmtrFunction GetFunction() const
Definition WsfEM_Xmtr.hpp:133
std::string GetName() const
Required to display error messages in WsfComponentFactoryList.
Definition WsfEM_Xmtr.hpp:82
void UseDefaultFrequency(bool aUseDefaultFrequency)
Definition WsfEM_Xmtr.hpp:196
XmtrFunction
XmtrFunction defines the intended purpose of the transmitter.
Definition WsfEM_Xmtr.hpp:69
@ cXF_COMM
Communications.
Definition WsfEM_Xmtr.hpp:71
@ cXF_UNDEFINED
Undefined.
Definition WsfEM_Xmtr.hpp:70
@ cXF_INTERFERER
Interfering system.
Definition WsfEM_Xmtr.hpp:73
@ cXF_SENSOR
Sensing.
Definition WsfEM_Xmtr.hpp:72
void AllowZeroFrequencyInput(bool val)
Definition WsfEM_Xmtr.hpp:111
int GetCurrentAlternateFrequencyId() const
Definition WsfEM_Xmtr.hpp:125
WsfEM_Xmtr & operator=(const WsfEM_Xmtr &)=delete
std::map< size_t, double > FrequencyList
Get the frequencies container. This is for External Services.
Definition WsfEM_Xmtr.hpp:122
virtual bool HasChangeListeners() const
Return true if any passive listeners have been attached.
Definition WsfEM_Xmtr.hpp:231
bool AllowZeroFrequencyInput() const
Definition WsfEM_Xmtr.hpp:110
const ComponentList & GetComponents() const
Definition WsfEM_Xmtr.hpp:87
int GetAlternateFrequencyCount() const
Definition WsfEM_Xmtr.hpp:119
WsfEM_Rcvr * GetLinkedReceiver() const
Definition WsfEM_Xmtr.hpp:115
ComponentList & GetComponents()
Definition WsfEM_Xmtr.hpp:86
int GetPulseRepetitionIntervalCount() const
Definition WsfEM_Xmtr.hpp:163
std::vector< std::pair< double, double > > PowerList
Type definition for the frequency dependent power.
Definition WsfEM_Xmtr.hpp:65
WsfEM_XmtrComponent Component
Even though this isn't a component, it must have a role in order to use component factories.
Definition WsfEM_Xmtr.hpp:60
const char * GetScriptClassName() const override
Definition WsfEM_Xmtr.hpp:90
bool IsUsingPeakPower() const
Definition WsfEM_Xmtr.hpp:185
double GetDutyCycle() const
Definition WsfEM_Xmtr.hpp:179
WsfEM_Xmtr(XmtrFunction aFunction, WsfEM_Antenna *aAntennaPtr=nullptr)
Definition WsfEM_Xmtr.cpp:48
bool ExplicitFrequencyList() const
Definition WsfEM_Xmtr.hpp:129
const FrequencyList & GetAlternateFrequencies()
Definition WsfEM_Xmtr.hpp:123
virtual bool HasListeners() const
Return true if any passive listeners have been attached.
Definition WsfEM_Xmtr.hpp:222
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Polarization
Polarization of the electromagnetic wave.
Definition WsfEM_Types.hpp:21