WSF
wsf::comm::ComponentHW_LASER Class Reference

#include <WsfCommComponentHW_LASER.hpp>

Inheritance diagram for wsf::comm::ComponentHW_LASER:
Collaboration diagram for wsf::comm::ComponentHW_LASER:

Public Member Functions

 ComponentHW_LASER (const WsfScenario &aScenario)
 ComponentHW_LASER (const ComponentHW_LASER &aSrc)=default
 ~ComponentHW_LASER () override=default
Public Member Functions inherited from wsf::comm::ComponentHW
 ComponentHW ()
 ~ComponentHW () override=default
bool IsAltFreqChangeScheduled () const
double GetAltFreqSelectDelay () const
virtual double GetLastAltFreqSelectTime () const
virtual void ScheduleAltFreqChange (double aSimTime, int aAltFreqId=-1)
void SelectAlternateFrequency (double aSimTime, int aAltFreqId=-1)
bool TransmitsContinuously () const
bool Initialize (double aSimTime) override
void TurnOn (double aSimTime) override
void TurnOff (double aSimTime) override
bool CanInteractWith (const Comm *aXmtrCommPtr) override
virtual bool CanReceiveFrom (double aSimTime, Comm *aXmtrPtr, Result &aResult)
virtual unsigned int GetEM_RcvrCount () const
virtual WsfEM_RcvrGetEM_Rcvr (unsigned int aIndex)
virtual unsigned int GetEM_XmtrCount () const
virtual WsfEM_XmtrGetEM_Xmtr (unsigned int aIndex)
Public Member Functions inherited from wsf::comm::Component
 Component ()=default
 ~Component () override=default
CommGetComm () const
WsfPlatformGetPlatform () const
WsfSimulationGetSimulation () const
virtual void Setup ()
virtual void PendingStart ()
virtual bool Initialize2 (double aSimTime)
virtual bool PreInitialize (double aSimTime)
virtual void AttemptToTransmit (double aSimTime, Result &aResult)
virtual void AttemptToReceive (double aSimTime, Result &aResult)
virtual bool Receive (double aSimTime, Comm *aXmtrPtr, Message &aMessage)
virtual bool Send (double aSimTime, const WsfMessage &aMessage, const Address &aAddress)
Public Member Functions inherited from WsfComponentT< Comm >
 WsfComponentT ()
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
virtual void ComponentParentChanged (ParentType *aParentPtr)
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
virtual int GetComponentInitializationOrder () const
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual void PreInput ()

Static Public Member Functions

static ComponentHW_LASERFind (const Comm &aParent)
 Find the instance of this component attached to the specified processor.
static ComponentHW_LASERFindOrCreate (Comm &aParent)
Static Public Member Functions inherited from wsf::comm::ComponentHW
static ComponentHWFind (const Comm &aParent)
 Find the instance of this component attached to the specified processor.
static ComponentHWFindOrCreate (Comm &aParent)
static void AttemptToTransmit (Comm &aComm, double aSimTime, Result &aResult)
 Called by model implementations when attempting to send a message.
static void AttemptToReceive (Comm &aComm, double aSimTime, Result &aResult)
 Called by model implementations when attempting to receive a message.
static bool Receive (Comm &aComm, double aSimTime, Comm *aXmtrPtr, Message &aMessage)
static bool Send (Comm &aComm, double aSimTime, const WsfMessage &aMessage, const Address &aAddress)

Interface from WsfCommComponent.

bool ProcessInput (UtInput &aInput) override
bool CanSendTo (double aSimTime, Comm *aRcvrPtr, Result &aResult) override

Required interface from WsfComponent.

WsfComponentCloneComponent () const override
WsfStringId GetComponentName () const override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override

Additional Inherited Members

Public Types inherited from WsfComponentT< Comm >
typedef Comm ParentType
 This is needed to support the WsfComponentList template.
 ComponentHW (const ComponentHW &aSrc)
ComponentHWoperator= (const ComponentHW &aRhs)=delete
std::unique_ptr< WsfEM_AntennamAntennaPtr
std::unique_ptr< WsfEM_XmtrmXmtrPtr
std::unique_ptr< WsfEM_RcvrmRcvrPtr
bool mAltFreqChangeScheduled
double mAltFreqSelectDelay
double mLastAltFreqSelectTime
bool mTransmitsContinuously
 True if this interface transmits continuously.
WsfStringId mZoneAttenuationModifier
 If non-zero, the name of ID of the category to be used for zone-based attenuation.

Detailed Description

Perform propagation effects and signal-to-noise calculations between lasercomm transmitters and receivers. Attenuation and turbulence effects are handled either by simple loss / transmission factor terms, or though built-in models (WsfOpticalAttenuation and wsf::AtmosphericTurbulence). A simple loss / transmission factor for aero-optic turbulence is also available. Environmental factors for background radiance and irradiance are stored here and fed to the laser receiver's WsfLASER_RcvrComponent::ComptuteDetectionData method, while signal-to-noise is calculated based on the signal and noise in the WsfLASER_RcvrComponent::DetectionData return value of that method. Optionally, the result of these calculations is displayed in a link budget.

Constructor & Destructor Documentation

◆ ComponentHW_LASER() [1/2]

wsf::comm::ComponentHW_LASER::ComponentHW_LASER ( const WsfScenario & aScenario)
explicit

◆ ComponentHW_LASER() [2/2]

wsf::comm::ComponentHW_LASER::ComponentHW_LASER ( const ComponentHW_LASER & aSrc)
default

References ComponentHW_LASER().

◆ ~ComponentHW_LASER()

wsf::comm::ComponentHW_LASER::~ComponentHW_LASER ( )
overridedefault

Member Function Documentation

◆ CanSendTo()

◆ CloneComponent()

WsfComponent * wsf::comm::ComponentHW_LASER::CloneComponent ( ) const
overridevirtual

Clones a component. May return null if component does not support clone.

Reimplemented from wsf::comm::ComponentHW.

References ComponentHW_LASER().

Referenced by ~ComponentHW_LASER().

◆ Find()

ComponentHW_LASER * wsf::comm::ComponentHW_LASER::Find ( const Comm & aParent)
static

Find the instance of this component attached to the specified processor.

References ComponentHW_LASER(), WsfComponentList::FindByRole(), and wsf::comm::Comm::GetComponents().

Referenced by FindOrCreate().

◆ FindOrCreate()

ComponentHW_LASER * wsf::comm::ComponentHW_LASER::FindOrCreate ( Comm & aParent)
static

Find the instance of this component attached to the specified processor, and create it if it doesn't exist.

References WsfComponentListT< COMPONENT_TYPE >::AddComponent(), ComponentHW_LASER(), Find(), wsf::comm::Comm::GetComponents(), and WsfPlatformPart::GetScenario().

Referenced by wsf::comm::LASER_XmtrRcvr::LASER_XmtrRcvr().

◆ GetComponentName()

WsfStringId wsf::comm::ComponentHW_LASER::GetComponentName ( ) const
overridevirtual

Returns the component's name. Each component in a component list has a unique name. Names are usually defined by the user, but they may also be generated by code and prefixed with a '#' to guarantee no collisions with user-defined names.

Reimplemented from wsf::comm::ComponentHW.

Referenced by ~ComponentHW_LASER().

◆ GetComponentRoles()

const int * wsf::comm::ComponentHW_LASER::GetComponentRoles ( ) const
overridevirtual

Returns a zero-terminated array of component roles. Note that the array should be in decreasing order of specificity and should generally the inheritance hierarchy. The first entry should be the components 'primary' role. For example a sensor would do the following:

return roles;
@ cWSF_COMPONENT_SENSOR
A 'sensor' component (WsfSensor).
Definition WsfComponentRoles.hpp:105
@ cWSF_COMPONENT_PLATFORM_PART
The component derives from WsfPlatformPart.
Definition WsfComponentRoles.hpp:98
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99

Reimplemented from wsf::comm::ComponentHW.

References cWSF_COMPONENT_COMM, cWSF_COMPONENT_COMM_HW, cWSF_COMPONENT_COMM_HW_LASER, and cWSF_COMPONENT_NULL.

Referenced by ~ComponentHW_LASER().

◆ ProcessInput()

bool wsf::comm::ComponentHW_LASER::ProcessInput ( UtInput & aInput)
overridevirtual

Evaluate the current input command and determine if it is one processed by the component. The component should get the current command from the input stream and determine if it is one that it recognizes. If it does not recognize the command then it should leave the command in the input stream and return false. If it does recognize the command then it should process the command and return true. If invalid arguments are encountered then it should throw an exception.

Parameters
aInputThe input stream.
Returns
true if the current command was recognized (and processed), or false if the command was not recognized.
Exceptions
UtInput::ExceptionBaseif an invalid input was encountered.

Reimplemented from wsf::comm::ComponentHW.

References wsf::comm::ComponentHW::mXmtrPtr, and wsf::comm::ComponentHW::ProcessInput().

Referenced by ~ComponentHW_LASER().

◆ QueryInterface()

void * wsf::comm::ComponentHW_LASER::QueryInterface ( int aRole)
overridevirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Reimplemented from wsf::comm::ComponentHW.

References wsf::comm::ComponentHW::ComponentHW(), cWSF_COMPONENT_COMM, cWSF_COMPONENT_COMM_HW, and cWSF_COMPONENT_COMM_HW_LASER.

Referenced by ~ComponentHW_LASER().


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