WSF
wsf::comm::ComponentHW Class Reference

The hardware component that can be attached to all comm systems. More...

#include <WsfCommComponentHW.hpp>

Inheritance diagram for wsf::comm::ComponentHW:
Collaboration diagram for wsf::comm::ComponentHW:

Classes

class  AltFrequencyChangeEvent

Public Member Functions

 ComponentHW ()
 ~ComponentHW () override=default
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 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)

Alternate Frequency methods.

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.
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
 ComponentHW (const ComponentHW &aSrc)
ComponentHWoperator= (const ComponentHW &aRhs)=delete

Required interface from WsfComponent.

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

Interface from WsfCommComponent.

bool Initialize (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
void TurnOn (double aSimTime) override
void TurnOff (double aSimTime) override
bool CanInteractWith (const Comm *aXmtrCommPtr) override
virtual bool CanSendTo (double aSimTime, Comm *aRcvrPtr, Result &aResult)
virtual bool CanReceiveFrom (double aSimTime, Comm *aXmtrPtr, Result &aResult)

WsfCommHW_Component methods.

These methods support accessing the underlying transmitter and receiver components.

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)

Additional Inherited Members

Public Types inherited from WsfComponentT< Comm >
typedef Comm ParentType
 This is needed to support the WsfComponentList template.

Detailed Description

The hardware component that can be attached to all comm systems.

Constructor & Destructor Documentation

◆ ComponentHW() [1/2]

◆ ~ComponentHW()

◆ ComponentHW() [2/2]

Member Function Documentation

◆ CanInteractWith()

bool wsf::comm::ComponentHW::CanInteractWith ( const Comm * aXmtrCommPtr)
overridevirtual

◆ CanReceiveFrom()

virtual bool wsf::comm::ComponentHW::CanReceiveFrom ( double aSimTime,
Comm * aXmtrPtr,
Result & aResult )
inlinevirtual

Reimplemented in wsf::comm::ComponentHW_JTIDS.

◆ CanSendTo()

◆ CloneComponent()

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

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

Implements WsfComponent.

Reimplemented in wsf::comm::ComponentHW_JTIDS, wsf::comm::ComponentHW_LASER, and wsf::comm::ComponentHW_Subsurface.

References ComponentHW().

Referenced by ~ComponentHW().

◆ Find()

◆ FindOrCreate()

ComponentHW * wsf::comm::ComponentHW::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(), Find(), and wsf::comm::Comm::GetComponents().

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

◆ GetAltFreqSelectDelay()

double wsf::comm::ComponentHW::GetAltFreqSelectDelay ( ) const
inline

◆ GetComponentName()

WsfStringId wsf::comm::ComponentHW::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.

Implements WsfComponent.

Reimplemented in wsf::comm::ComponentHW_JTIDS, wsf::comm::ComponentHW_LASER, and wsf::comm::ComponentHW_Subsurface.

Referenced by ~ComponentHW().

◆ GetComponentRoles()

const int * wsf::comm::ComponentHW::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

Implements WsfComponent.

Reimplemented in wsf::comm::ComponentHW_JTIDS, wsf::comm::ComponentHW_LASER, and wsf::comm::ComponentHW_Subsurface.

References cWSF_COMPONENT_COMM, cWSF_COMPONENT_COMM_HW, and cWSF_COMPONENT_NULL.

Referenced by ~ComponentHW().

◆ GetEM_Rcvr()

◆ GetEM_RcvrCount()

virtual unsigned int wsf::comm::ComponentHW::GetEM_RcvrCount ( ) const
inlinevirtual

◆ GetEM_Xmtr()

◆ GetEM_XmtrCount()

virtual unsigned int wsf::comm::ComponentHW::GetEM_XmtrCount ( ) const
inlinevirtual

◆ GetLastAltFreqSelectTime()

virtual double wsf::comm::ComponentHW::GetLastAltFreqSelectTime ( ) const
inlinevirtual

◆ Initialize()

bool wsf::comm::ComponentHW::Initialize ( double aSimTime)
overridevirtual

Perform phase 1 initialization. This is called by WsfPlatform::Initialize() during phase 1 initialization of the platform. The component should complete validation of input data that could not be done by ProcessInput, as well as any other functions to prepare for simulation use (subject to the next paragraph).

The order in which components are initialized is defined by GetComponentInitializationOrder. In general a component implementation of this method should not be dependent on the state of another component, i.e.: it should not assume that the other components Initialize() method has been called. If such a dependency exists one should use Initialize2() if possible, or specify a value GetComponentInitializationOrder to force things to initialize in a particular order.

Parameters
aSimTimeThe current simulation time.
Returns
true if successful or false if unsuccessful (bad input data, etc.)
Note
This method should NOT add any other components to the platform. This MUST be done in PreInitialize().

Reimplemented from wsf::comm::Component.

Reimplemented in wsf::comm::ComponentHW_JTIDS.

References wsf::comm::Comm::cCT_XMT_RCV, wsf::comm::Component::GetComm(), wsf::comm::Component::GetSimulation(), mAntennaPtr, mRcvrPtr, mXmtrPtr, and ok.

Referenced by wsf::comm::ComponentHW_JTIDS::Initialize(), and ~ComponentHW().

◆ IsAltFreqChangeScheduled()

bool wsf::comm::ComponentHW::IsAltFreqChangeScheduled ( ) const
inline

◆ operator=()

ComponentHW & wsf::comm::ComponentHW::operator= ( const ComponentHW & aRhs)
protecteddelete

References ComponentHW().

◆ ProcessInput()

bool wsf::comm::ComponentHW::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::Component.

Reimplemented in wsf::comm::ComponentHW_JTIDS, wsf::comm::ComponentHW_LASER, and wsf::comm::ComponentHW_Subsurface.

References wsf::comm::Component::GetComm(), mAltFreqSelectDelay, mAntennaPtr, mRcvrPtr, mTransmitsContinuously, mXmtrPtr, mZoneAttenuationModifier, and wsf::comm::Component::ProcessInput().

Referenced by wsf::comm::ComponentHW_JTIDS::ProcessInput(), wsf::comm::ComponentHW_LASER::ProcessInput(), wsf::comm::ComponentHW_Subsurface::ProcessInput(), and ~ComponentHW().

◆ QueryInterface()

void * wsf::comm::ComponentHW::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);

Implements WsfComponent.

Reimplemented in wsf::comm::ComponentHW_JTIDS, wsf::comm::ComponentHW_LASER, and wsf::comm::ComponentHW_Subsurface.

References wsf::comm::Component::Component(), cWSF_COMPONENT_COMM, and cWSF_COMPONENT_COMM_HW.

Referenced by ~ComponentHW().

◆ ScheduleAltFreqChange()

void wsf::comm::ComponentHW::ScheduleAltFreqChange ( double aSimTime,
int aAltFreqId = -1 )
virtual

◆ SelectAlternateFrequency()

void wsf::comm::ComponentHW::SelectAlternateFrequency ( double aSimTime,
int aAltFreqId = -1 )

◆ TransmitsContinuously()

bool wsf::comm::ComponentHW::TransmitsContinuously ( ) const
inline

Indicates if the device transmits continuously.

Returns
if the device transmits continuously or false if it transmits only when a message is being sent.

References mTransmitsContinuously.

◆ TurnOff()

void wsf::comm::ComponentHW::TurnOff ( double aSimTime)
overridevirtual

Reimplemented from wsf::comm::Component.

References wsf::comm::Component::GetComm(), mRcvrPtr, and mXmtrPtr.

Referenced by ~ComponentHW().

◆ TurnOn()

void wsf::comm::ComponentHW::TurnOn ( double aSimTime)
overridevirtual

Reimplemented from wsf::comm::Component.

References wsf::comm::Component::GetComm(), mRcvrPtr, and mXmtrPtr.

Referenced by ~ComponentHW().

Member Data Documentation

◆ mAltFreqChangeScheduled

bool wsf::comm::ComponentHW::mAltFreqChangeScheduled
protected

◆ mAltFreqSelectDelay

double wsf::comm::ComponentHW::mAltFreqSelectDelay
protected

◆ mAntennaPtr

◆ mLastAltFreqSelectTime

double wsf::comm::ComponentHW::mLastAltFreqSelectTime
protected

◆ mRcvrPtr

◆ mTransmitsContinuously

bool wsf::comm::ComponentHW::mTransmitsContinuously
protected

True if this interface transmits continuously.

Referenced by ComponentHW(), ComponentHW(), ProcessInput(), and TransmitsContinuously().

◆ mXmtrPtr

◆ mZoneAttenuationModifier

WsfStringId wsf::comm::ComponentHW::mZoneAttenuationModifier
protected

If non-zero, the name of ID of the category to be used for zone-based attenuation.

Referenced by wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), ComponentHW(), ComponentHW(), and ProcessInput().


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