|
WSF
|
#include <WsfTrackProcessor.hpp>


Public Member Functions | |
| WsfTrackProcessor (const WsfScenario &aScenario) | |
| The default constructor. | |
| WsfTrackProcessor & | operator= (const WsfTrackProcessor &)=delete |
| ~WsfTrackProcessor () override | |
| WsfProcessor * | Clone () const override |
| bool | Initialize (double aSimTime) override |
| bool | ProcessInput (UtInput &aInput) override |
| bool | ProcessMessage (double aSimTime, const WsfMessage &aMessage) override |
| const char * | GetScriptClassName () const override |
| WsfTrackManager & | GetTrackManager () const |
| Return the track manager object referenced by this processor. | |
| wsf::ExternalLinks & | GetExternalLinks () |
| Allow track reporting strategies to access the external links object. | |
| bool | InitializeMemberData (double aSimTime) |
| void | ConnectCallbacks () |
| bool | IsMasterTrackManager () const |
| virtual void | SendTrack (double aSimTime, const WsfTrack &aTrack) |
| virtual void | SendTrack (double aSimTime, const WsfLocalTrack &aLocalTrack) |
| Public Member Functions inherited from WsfScriptProcessor | |
| WsfScriptProcessor (const WsfScenario &aScenario) | |
| WsfScriptProcessor (const WsfScenario &aScenario, WsfStringId aPartClass, const std::string &aPartVarName) | |
| ~WsfScriptProcessor () override | |
| bool | Initialize2 (double aSimTime) override |
| void | Update (double aSimTime) override |
| void | SendMessage (double aSimTime, const WsfMessage &aMessage) override |
| virtual void | ExecuteOnMessageCreate (double aSimTime, WsfMessage &aMessage) |
| virtual bool | ExecuteScript (double aSimTime, const std::string &aScriptName) |
| virtual bool | ExecuteScript (double aSimTime, WsfStringId aScriptName, UtScriptData &aScriptRetVal, const UtScriptDataList &aScriptArgs=UtScriptDataList()) |
| void | ExecuteScriptAtTime (double aTime, WsfStringId aScriptName, const UtScriptDataList &aScriptArgs) |
| virtual void | SuppressMessage (bool aSuppressMessage) |
| WsfScriptMessageHandler * | GetMessageHandler () |
| WsfScriptContext & | GetScriptContext () |
| UtScriptContext * | GetScriptAccessibleContext () const override |
| void | SetPlatform (WsfPlatform *aPlatformPtr) override |
| const WsfBehaviorTree * | BehaviorTree () const |
| WsfAdvancedBehaviorTree * | AdvancedBehaviorTree () const |
| virtual const WsfScriptStateMachine * | GetStateMachine () const |
| wsf::ExternalLinks & | GetExternalLinks () |
| std::string | State () |
| std::string | StateAll () |
| void | SetState (std::string &stateName) |
| void | SetStateAll (std::string &stateNameAll) |
| Public Member Functions inherited from WsfProcessor | |
| WsfProcessor (const WsfScenario &aScenario) | |
| ~WsfProcessor () override=default | |
| ComponentList & | GetComponents () |
| const ComponentList & | GetComponents () const |
| virtual void | ProcessCallback (double aSimTime, const WsfCallback &aCallback) |
| WsfComponent * | CloneComponent () const override |
| const int * | GetComponentRoles () const override |
| void * | QueryInterface (int aRole) override |
| int | GetComponentInitializationOrder () const override |
| const char * | GetScriptClassName () const override |
| bool | PreInitialize (double aSimTime) override |
| void | PreInput () override |
| void | TurnOff (double aSimTime) override |
| void | TurnOn (double aSimTime) override |
| void | SetNonOperational (double aSimTime) override |
| void | SetOperational (double aSimTime) override |
| void | PartBroken (double aSimTime) override |
| double | GetUpdateInterval () const override |
| void | SetUpdateInterval (double aUpdateInterval) override |
| Public Member Functions inherited from WsfPlatformPart | |
| WsfPlatformPart (const WsfScenario &aScenario, int aPartType) | |
| WsfPlatformPart & | operator= (const WsfPlatformPart &aRhs)=delete |
| ~WsfPlatformPart () override | |
| bool | DebugEnabled () const |
| Returns 'true' if debugging is enabled for this instance. | |
| void | SetDebugEnabled (bool aDebugEnabled) |
| unsigned int | GetDebugMask () |
| bool | IsExternallyControlled () const |
| virtual void | SetExternallyControlled (double aSimTime, bool aIsExternallyControlled) |
| int | GetPartType () const |
| const char * | GetScriptClassName () const override |
| WsfSimulation * | GetSimulation () const |
| const WsfScenario & | GetScenario () const |
| WsfStringId | GetComponentName () const override |
| void | ComponentParentChanged (WsfPlatform *aPlatformPtr) override |
| WsfPlatform * | GetPlatform () const |
| virtual void | PlatformAdded (double aSimTime, WsfPlatform *aPlatformPtr) |
| virtual void | PlatformDeleted (WsfPlatform *aPlatformPtr) |
| double | GetLastStatusChangeTime () const |
| void | SetLastStatusChangeTime (double aSimTime) |
| Allows a system to set the time at which the device was initialized. | |
| bool | CanBeMadeOperational () const |
| Returns an indication that this system can be made operational. | |
| bool | CanBeMadeNonOperational () const |
| Returns an indication that this system can be made non-operational. | |
| bool | CanBeTurnedOn () const |
| Returns an indication that this system can be turned on. | |
| bool | CanBeTurnedOff () const |
| Returns an indication that this system can be turned off. | |
| bool | IsTurnedOn () const |
| bool | InitiallyTurnedOn () const |
| Is the system to be turned 'on' when added to the simulation? | |
| void | SetInitiallyTurnedOn (bool aInitiallyTurnedOn) |
| Sets if the system is turned on when added to the simulation. | |
| virtual void | Restore (double aSimTime) |
| bool | IsOperational () const |
| bool | SetOperational (double aSimTime, bool aMakeOperational) |
| double | GetDamageFactor () const |
| bool | SetDamageFactor (double aSimTime, double aDamageFactor) |
| bool | IsCritical () const |
| void | SetCritical (bool aValue) |
| virtual void | OnPlatformBrokenEvent (double aSimTime) |
| Owning platform has issued a broken event. | |
| bool | IsBroken () const |
| WsfInternalLinks & | GetInternalLinks () |
| Return the internal links for this part. | |
| virtual bool | HasInternalLinks () const |
| Does this platform part have a communication link to other platform parts? | |
| virtual bool | ReceiveMessage (double aSimTime, const WsfMessage &aMessage) |
| virtual void | SendMessageTo (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId) |
| void | SendMessageToProcessor (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId) |
| virtual void | SendQueuedMessages (double aSimTime) |
| const WsfCategoryList & | GetCategories () const |
| Get the categories to which this part belongs. | |
| void | AddCategory (WsfStringId aCategoryId) |
| Adds the provided category to the platform part's category list. | |
| bool | IsCategoryMember (WsfStringId aCategoryId) const |
| const WsfGroupList & | GetGroups () const |
| Get the groups to which this platform part belongs. | |
| void | JoinGroup (WsfGroup *aGroupPtr) |
| Join the given group. | |
| void | LeaveGroup (WsfGroup *aGroupPtr) |
| Leave the given group. | |
| bool | IsGroupMember (WsfStringId aGroupId) |
| unsigned int | GetUpdateEventEpoch () const |
| void | IncrementUpdateEventEpoch () |
| bool | UpdateEventActive () const |
| Is an 'Update' event active? | |
| void | SetUpdateEventActive (bool aUpdateEventActive) |
| Indicate if the 'Update' event is active. | |
| Public Member Functions inherited from WsfObject | |
| WsfObject () | |
| This is the constructor for the WsfObject class. | |
| ~WsfObject () override | |
| This is the destructor for the WsfObject class. | |
| const char * | GetScriptClassName () const override |
| const std::string & | GetType () const |
| WsfStringId | GetTypeId () const |
| Get the string ID of the 'type' of the object. | |
| void | SetType (WsfStringId aType) |
| const std::string & | GetBaseType () const |
| WsfStringId | GetBaseTypeId () const |
| const TypeList & | GetTypeList () const |
| bool | IsA_TypeOf (WsfStringId aType) const |
| WsfObject & | operator= (const WsfObject &aRhs) |
| Assignment operator. | |
| template<typename T> | |
| void | Serialize (T &aBuff) |
| For XIO (de)serialization. | |
| const std::string & | GetName () const |
| WsfStringId | GetNameId () const |
| void | SetName (WsfStringId aName) |
| Public Member Functions inherited from WsfComponentT< WsfPlatform > | |
| WsfComponentT () | |
| WsfComponentT (const WsfComponentT &) noexcept | |
| WsfComponentT & | operator= (const WsfComponentT &) noexcept |
| ~WsfComponentT () override=default | |
| ParentType * | GetComponentParent () const |
| void | SetComponentParent (ParentType *aParentPtr) |
| Public Member Functions inherited from WsfComponent | |
| virtual | ~WsfComponent ()=default |
| template<typename T> | |
| bool | QueryInterfaceT (T *&aRolePtr) |
| bool | ComponentHasRole (int aRole) |
| Returns true if the component has the specified role. | |
| Public Member Functions inherited from WsfUniqueId | |
| WsfUniqueId () | |
| Construtor initializes the unique identifier to 0. | |
| WsfUniqueId (const WsfUniqueId &) | |
| Copy constructor initializes the unique identifier to 0. | |
| WsfUniqueId & | operator= (const WsfUniqueId &) |
| unsigned int | GetUniqueId () const |
| Get the unique identifier assigned to this object. | |
| template<typename T> | |
| void | Serialize (T &aBuff) |
| For XIO (de)serialization. | |
| Public Member Functions inherited from WsfAuxDataEnabled | |
| WsfAuxDataEnabled ()=default | |
| WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default | |
| WsfAuxDataEnabled & | operator= (const WsfAuxDataEnabled &aRhs) |
| WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default | |
| WsfAuxDataEnabled & | operator= (WsfAuxDataEnabled &&)=default |
| virtual | ~WsfAuxDataEnabled () noexcept |
| void | SetAuxData (const WsfAttributeContainer &aAuxData) |
| void | DeleteAuxData () |
| Delete the aux data container from the object. | |
| void | MergeAuxData (const WsfAuxDataEnabled &aSrc) |
| Merge the object's aux data with aux data from an existing object. | |
| void | UpdateAuxData (const WsfAuxDataEnabled &aSrc) |
| Update the object's aux data with aux data from an existing object. | |
| bool | HasAuxData () const |
| Returns true if this object has aux data. | |
| bool | ProcessInput (UtInput &aInput) |
| template<typename T> | |
| void | Serialize (T &aBuff) |
| (De)serialization for XIO | |
| WsfAttributeContainer & | GetAuxData () |
| const WsfAttributeContainer & | GetAuxData () const noexcept |
| const WsfAttributeContainer & | GetAuxDataConst () const noexcept |
Internal methods. | |
The following methods are not to be considered part of the public interface. | |
| virtual void | PerformTrackPurging (double aSimTime) |
| This method is called by PurgeTracksEvent to perform the periodic track purging. | |
| virtual void | PerformTrackHistoryPurging (double aSimTime) |
| This method is called by PurgeTracksEvent to perform the periodic track purging. | |
| virtual void | PerformTrackReporting (double aSimTime) |
| double | GetReportingInterval () const |
| double | GetPurgeInterval () const |
| bool | GetReportFusedTracks () const |
| bool | GetReportRawTracks () const |
| WsfTrackProcessor (const WsfTrackProcessor &aSrc) | |
| virtual bool | IsTrackReportable (double aSimTime, const WsfTrack *aTrackPtr) |
| virtual void | NotifyPlatform (double aSimTime, const WsfTrack *aChangedTrackPtr, int aChangedReason) |
| void | ProcessInboundFilterBlock (UtInput &aInput) |
| Process the 'inbound_filter' input block. | |
| void | SelectNonMasterTrackProcessor () |
| virtual void | SendTrackP (double aSimTime, const WsfTrack &aTrack) |
| Immediately send a track over external links. | |
| virtual bool | ShouldProcessInboundReport (double aSimTime, const WsfTrack &aTrack) |
Additional Inherited Members | |
| using | ComponentList = WsfComponentListT<WsfProcessorComponent> |
| Public Types inherited from WsfPlatformPart | |
| enum | { cLEVEL_ONE_DEBUG = 0x00000001 , cLEVEL_TWO_DEBUG = 0x00000002 } |
| using | InternalMessageQueue = std::queue<WsfMessage*> |
| using | RecipientMessageQueue = std::queue<std::pair<WsfPlatformPart*, WsfMessage*>> |
| Public Types inherited from WsfObject | |
| typedef std::vector< WsfStringId > | TypeList |
| The list of types returned by GetTypeList. | |
| Public Types inherited from WsfComponentT< WsfPlatform > | |
| typedef WsfPlatform | ParentType |
| This is needed to support the WsfComponentList template. | |
| Static Public Attributes inherited from WsfAuxDataEnabled | |
| static UtCallbackListN< void(const WsfAuxDataEnabled *)> | AuxDataAccessed |
| static UtCallbackListN< void(const WsfAuxDataEnabled *)> | AuxDataDestroyed |
| Protected Member Functions inherited from WsfScriptProcessor | |
| WsfScriptProcessor (const WsfScriptProcessor &aSrc) | |
| WsfProcessor (const WsfProcessor &aSrc) | |
| Copy constructor (for Clone()). | |
| WsfProcessor & | operator= (const WsfProcessor &aRhs)=delete |
| WsfPlatformPart (const WsfPlatformPart &aSrc) | |
| Copy constructor (for Clone()). | |
| WsfObject (const WsfObject &aSrc) | |
| Copy constructor (for Clone()). | |
| Protected Member Functions inherited from WsfUniqueId | |
| void | AssignUniqueId (WsfSimulation *aSimulationPtr) |
| Protected Attributes inherited from WsfScriptProcessor | |
| WsfScriptContext * | mContextPtr |
| Pointer to the script context. | |
| WsfScriptMessageHandler * | mMessageHandlerPtr |
| Pointer to the 'on_message' handler. | |
| UtScript * | mOnMessageCreateScriptPtr |
| Pointer to the 'on_message_create' script. | |
| UtScriptClass * | mMessageClassPtr |
| wsf::ExternalLinks | mExternalLinks |
| The external recipients. | |
| WsfBehaviorTree * | mBehaviorTreePtr |
| ut::CloneablePtr< WsfAdvancedBehaviorTree > | mAdvancedBehaviorTreePtr |
| std::unique_ptr< WsfScriptStateMachine > | mStateMachinePtr |
| int | mStateIndex |
| bool | mSuppressMessage |
This is a processor incorporating track management and fusion capabilities. This processor utilizes a track manager (see WsfTrackManager) to process non-local, "raw" track reports (see WsfTrack) and into local, fused tracks (see WsfLocalTrack).
This processor, as a WsfScriptProcessor, maintains internal and external links. Any internally connected processors are notified of any event relevant to tracks (creation, deletion, update, and drop) through internal links. Also, track drops and periodic local track reports are sent over external links to command chain recipients.
This processor may be configured as either the master track processor or as an independent track processor. If it is the master track processor (the default, also triggered by user input "master_track_processor"), it maintains local tracks in the platform's master track list (maintained by the platform's track manager [see WsfTrackManager]). If this processor is not configured as the master track processor (user input "non_master_track_processor"), this object will create its own track manager. This separate track manager will maintain its own local tracks separate from the master track list.
| WsfTrackProcessor::WsfTrackProcessor | ( | const WsfScenario & | aScenario | ) |
The default constructor.
References WsfScriptProcessor::WsfScriptProcessor().
Referenced by Clone(), operator=(), ProcessMessage(), and WsfTrackProcessor().
|
override |
|
protected |
References if(), WsfScriptProcessor::WsfScriptProcessor(), and WsfTrackProcessor().
|
overridevirtual |
Create a clone of this object.
Reimplemented from WsfScriptProcessor.
References WsfProcessor::WsfProcessor(), and WsfTrackProcessor().
| void WsfTrackProcessor::ConnectCallbacks | ( | ) |
Referenced by InitializeMemberData().
|
inline |
Allow track reporting strategies to access the external links object.
References WsfScriptProcessor::mExternalLinks.
Referenced by WsfBatchTrackReporting::ReportFusedTracks(), WsfBatchTrackReporting::ReportRawTracks(), and SendTrackP().
|
inline |
|
inline |
|
inline |
|
inline |
|
override |
|
inline |
Return the track manager object referenced by this processor.
Referenced by WsfTaskManager::Initialize2(), WsfSA_Processor::PlatformInTrackListMWS(), WsfBatchTrackReporting::ReportFusedTracks(), WsfBatchTrackReporting::ReportRawTracks(), WsfSA_Perceive::UpdatePerceivedItemsCalculation(), UT_DEFINE_SCRIPT_METHOD(), and UT_DEFINE_SCRIPT_METHOD().
|
overridevirtual |
Perform phase 1 initialization of the part. This is invoked by WsfPlatform::Initialize() during phase 1 initialization of the platform. During phase 1 initialization, platform components must not assume the existence of ANY data that is the responsibility of another platform component. In particular, the platform location and initial tracks cannot be assumed to be valid.
| aSimTime | The current simulation time. |
Reimplemented from WsfScriptProcessor.
References WsfPlatformPart::GetPlatform(), WsfPlatform::GetTrackManager(), WsfScriptProcessor::Initialize(), InitializeMemberData(), and ok.
| bool WsfTrackProcessor::InitializeMemberData | ( | double | aSimTime | ) |
References WsfSimulation::AddEvent(), ConnectCallbacks(), WsfTrackReportingStrategyTypes::Create(), WsfTrackReportingStrategyTypes::Get(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfSimulation::GetRandom(), WsfPlatformPart::GetScenario(), WsfPlatformPart::GetSimulation(), WsfScriptProcessor::mContextPtr, WsfScriptProcessor::mExternalLinks, and ok.
Referenced by Initialize().
|
inline |
|
protectedvirtual |
Executes the 'is_track_reportable' script. Allows analysts to check attributes of a track to determine if it is reported. The track is considered reportable unless the script returns false.
| aSimTime | The current simulation time. |
| aTrackPtr | A pointer to a track. |
References WsfScriptProcessor::mContextPtr.
Referenced by SendTrackP().
|
protectedvirtual |
Send a message to other processors (a WsfTrackNotifyMessage) that a track in the track list has changed.
| aSimTime | The current simulation time. |
| aChangedTrackPtr | A pointer to the changed track. |
| aChangedReason | The reason code for the change. |
References WsfObject::GetNameId(), WsfPlatformPart::GetPlatform(), WsfTrack::GetTrackId(), and WsfPlatformPart::SendMessage().
|
delete |
References WsfProcessor::WsfProcessor(), and WsfTrackProcessor().
|
virtual |
This method is called by PurgeTracksEvent to perform the periodic track purging.
|
virtual |
This method is called by PurgeTracksEvent to perform the periodic track purging.
|
virtual |
This method is called by ReportTracksEvent to perform the periodic track reporting. It delegates track reporting responsibility to the reporting strategy.
|
protected |
Process the 'inbound_filter' input block.
Referenced by ProcessInput().
|
overridevirtual |
Process input from a generic source.
Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.
| aInput | a reference to a UtInput object. |
| UtInput::ExceptionBase | (or an object derived from it) if the command was recognized but contains some sort of error. |
Reimplemented from WsfScriptProcessor.
References WsfTrackReportingStrategyTypes::Get(), WsfPlatformPart::GetScenario(), ProcessInboundFilterBlock(), WsfScriptProcessor::ProcessInput(), and SelectNonMasterTrackProcessor().
|
overridevirtual |
Process a received message.
| aSimTime | The current simulation time. |
| aMessage | The message that is being sent. |
Reimplemented from WsfScriptProcessor.
References WsfTrackManager::cCANDIDATE_TRACK_PROMOTED, WsfTrackManager::cCREATED, WsfTrackManager::cDROPPED, WsfTrackManager::cUPDATED, WsfPlatformPart::DebugEnabled(), WsfTrackManager::FindTrack(), WsfTrackNotifyMessage::GetChangedReason(), WsfComponentList::GetComponent(), WsfScriptProcessor::GetMessageHandler(), WsfObject::GetName(), WsfObject::GetNameId(), WsfMessage::GetOriginator(), WsfPlatformPart::GetPlatform(), WsfSimulation::GetPlatformByIndex(), WsfTrackMessage::GetReplyId(), WsfTrackMessage::GetSenderId(), WsfPlatformPart::GetSimulation(), WsfTrackDropMessage::GetTargetIndex(), WsfTrackMessage::GetTrack(), WsfTrackDropMessage::GetTrackId(), WsfTrackNotifyMessage::GetTrackId(), WsfTrackNotifyMessage::GetTrackProcessorNameId(), WsfMessage::GetType(), WsfTrackDropMessage::GetTypeId(), WsfTrackMessage::GetTypeId(), WsfTrackNotifyMessage::GetTypeId(), WsfScriptMessageHandler::ProcessMessage(), ShouldProcessInboundReport(), trackPtr, WsfProcessor::WsfProcessor(), and WsfTrackProcessor().
|
protected |
References WsfPlatformPart::GetScenario().
Referenced by ProcessInput().
|
virtual |
Send a single track to externally connected entities. If the option is selected, do not report candidate tracks.
References WsfTrack::IsCandidate(), and SendTrackP().
|
virtual |
Send a single track to externally connected entities. Only reportable tracks are sent.
References WsfTrack::IsCandidate(), and SendTrackP().
Referenced by WsfBatchTrackReporting::ReportFusedTracks(), and WsfBatchTrackReporting::ReportRawTracks().
|
protectedvirtual |
Immediately send a track over external links.
References WsfPlatformPart::DebugEnabled(), WsfScriptProcessor::ExecuteOnMessageCreate(), GetExternalLinks(), WsfTrack::GetLastSourceName(), WsfObject::GetName(), WsfObject::GetNameId(), WsfPlatformPart::GetPlatform(), WsfTrack::GetTargetName(), WsfTrackMessage::GetTrack(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateTime(), WsfTrack::IsReportable(), WsfTrack::IsStale(), IsTrackReportable(), WsfTrack::KinematicUpdate(), wsf::ExternalLinks::SendMessage(), WsfTrackMessage::SetReplyId(), and WsfTrackMessage::SetSenderId().
Referenced by SendTrack(), and SendTrack().
|
protectedvirtual |
Should the supplied inbound report be processed? This method is called when an incoming track report is received. It determines if the report should be forwarded to the track manager for assimilation or 'false' if it should be ignored.
References WsfTrack::cFILTERED_SENSOR, WsfTrack::cUNFILTERED_SENSOR, WsfPlatformPart::DebugEnabled(), and WsfTrack::GetTrackType().
Referenced by ProcessMessage().