WSF
WsfTrackProcessor.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 WSFTRACKPROCESSOR_HPP
13#define WSFTRACKPROCESSOR_HPP
14
15#include "wsf_export.h"
16
17#include <unordered_map>
18
19#include "UtCallbackHolder.hpp"
20#include "WsfEvent.hpp"
21class WsfLocalTrack;
23class WsfTrack;
24#include "WsfTrackId.hpp"
25class WsfTrackManager;
28
47{
48public:
49 WsfTrackProcessor(const WsfScenario& aScenario);
51 ~WsfTrackProcessor() override;
52
53 WsfProcessor* Clone() const override;
54 bool Initialize(double aSimTime) override;
55 bool ProcessInput(UtInput& aInput) override;
56 bool ProcessMessage(double aSimTime, const WsfMessage& aMessage) override;
57 const char* GetScriptClassName() const override;
58
60 WsfTrackManager& GetTrackManager() const { return *mTrackManagerPtr; }
61
64
65 bool InitializeMemberData(double aSimTime);
66
67 void ConnectCallbacks();
68
69 bool IsMasterTrackManager() const { return mMasterTrackProcessor; }
70
71 virtual void SendTrack(double aSimTime, const WsfTrack& aTrack);
72
73 virtual void SendTrack(double aSimTime, const WsfLocalTrack& aLocalTrack);
74
77
78 virtual void PerformTrackPurging(double aSimTime);
79 virtual void PerformTrackHistoryPurging(double aSimTime);
80 virtual void PerformTrackReporting(double aSimTime);
81 double GetReportingInterval() const { return mReportInterval; } // TODO-AWK HACK for Scenario Analyzer
82 double GetPurgeInterval() const { return mPurgeInterval; } // TODO-AWK HACK for Scenario Analyzer
83 bool GetReportFusedTracks() const { return mReportFusedTracks; } // TODO-AWK HACK for Scenario Analyzer
84 bool GetReportRawTracks() const { return mReportRawTracks; } // TODO-AWK HACK for Scenario Analyzer
86
87protected:
89
90 virtual bool IsTrackReportable(double aSimTime, const WsfTrack* aTrackPtr);
91
92 virtual void NotifyPlatform(double aSimTime, const WsfTrack* aChangedTrackPtr, int aChangedReason);
93
94 void ProcessInboundFilterBlock(UtInput& aInput);
95
96 void SelectNonMasterTrackProcessor();
97
98 virtual void SendTrackP(double aSimTime, const WsfTrack& aTrack);
99
100 virtual bool ShouldProcessInboundReport(double aSimTime, const WsfTrack& aTrack);
101
102private:
104
105 void CandidateTrackPromoted(double aSimTime, const WsfLocalTrack* aLocalTrackPtr);
106
107 void CurrentTargetChanged(double aSimTime, const WsfLocalTrack* aLocalTrackPtr);
108
109 void LocalTrackDropped(double aSimTime, const WsfLocalTrack* aLocalTrackPtr);
110
111 void LocalTrackInitiated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr);
112
113 void LocalTrackUpdated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr);
114
115 void RawTrackDropped(double aSimTime, const WsfTrack* aRawTrackPtr);
116
117 void RawTrackReceived(double aSimTime, const WsfTrack* aRawTrackPtr);
118
119 void SendTrackDropMessage(double aSimTime, const WsfTrack* aTrackPtr);
120
121 void SendTrackNotifyMessage(double aSimTime, const WsfTrack* aTrackPtr, int aReason);
122
123 void SendTrackUpdateMessage(double aSimTime, const WsfTrack* aTrackPtr);
124
125 void TrackManagerChanged(double aSimTime, WsfTrackManager* aNewManagerPtr);
126
127 void WriteTrackDebugMessage(double aSimTime, const WsfTrack* aTrackPtr, const std::string& aReason);
128
129 void SelectMasterTrackProcessor(UtInput& aInput);
130
131 void SelectNonMasterTrackProcessor(UtInput& aInput);
132
134
136 double mPurgeInterval;
137 double mTrackHistoryRetentionInterval;
138
141 double mImagePurgeMultiplier;
142
144 double mReportInterval;
145
146 bool mReportFusedTracks;
147 bool mReportCandidateTracks;
148 bool mReportRawTracks;
149 bool mReportUnchangedTracks;
150 bool mReportPassThrough;
151 bool mMasterTrackProcessor;
152 bool mTrackManagerTypeSelected;
153
154 bool mRejectCircularReports;
155 bool mRejectNonSensorReports;
156
157 bool mReportOnUpdate;
158 bool mUpdateOnReport;
159 bool mUpdateOnReportSet;
160
161 WsfStringId mReportingStrategyName;
162 WsfTrackReportingStrategy* mReportingStrategyPtr;
163
164 UtCallbackHolder mCallbacks;
165
167 WsfTrackManager* mTrackManagerPtr;
168
170 UtScript* mIsTrackReportableScriptPtr;
171
175 using DroppedRawTrackList = std::unordered_map<WsfTrackId, double, WsfTrackId>;
176 DroppedRawTrackList mDroppedRawTrackList;
177
181 WsfStringId mSourceId;
182
183 using LastReportTimeMap = std::unordered_map<WsfTrackId, double, WsfTrackId>;
184 LastReportTimeMap mLastReportTime;
185};
186
189{
190public:
192 WsfTrackProcessor_PurgeTracksEvent(double aSimTime, WsfTrackProcessor* aProcessorPtr, double aPurgeInterval);
193
194 EventDisposition Execute() override;
195
196protected:
200};
201
204{
205public:
207 WsfTrackProcessor_PurgeTrackHistoryEvent(double aSimTime, WsfTrackProcessor* aProcessorPtr, double aPurgeInterval);
208
209 EventDisposition Execute() override;
210};
211
214{
215public:
217 WsfTrackProcessor_ReportTracksEvent(double aSimTime, WsfTrackProcessor* aProcessorPtr, double aReportInterval);
218
219 EventDisposition Execute() override;
220
221private:
222 double mReportInterval;
223 WsfTrackProcessor* mProcessorPtr;
224 size_t mPlatformIndex;
225};
226
227#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfEvent()=default
EventDisposition
Definition WsfEvent.hpp:37
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
WsfProcessor(const WsfScenario &aScenario)
Definition WsfProcessor.cpp:25
const char * GetScriptClassName() const override
Definition WsfProcessor.cpp:63
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfScriptMessageHandler.hpp:42
WsfProcessor * Clone() const override
Definition WsfScriptProcessor.cpp:97
wsf::ExternalLinks mExternalLinks
The external recipients.
Definition WsfScriptProcessor.hpp:112
WsfScriptProcessor(const WsfScenario &aScenario)
Definition WsfScriptProcessor.cpp:30
bool Initialize(double aSimTime) override
Definition WsfScriptProcessor.cpp:104
bool ProcessInput(UtInput &aInput) override
Definition WsfScriptProcessor.cpp:186
bool ProcessMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfScriptProcessor.cpp:300
Definition WsfTrackManager.hpp:62
EventDisposition Execute() override
Definition WsfTrackProcessor.cpp:1057
WsfTrackProcessor * mProcessorPtr
Definition WsfTrackProcessor.hpp:198
EventDisposition Execute() override
Definition WsfTrackProcessor.cpp:1030
double mPurgeInterval
Definition WsfTrackProcessor.hpp:197
size_t mPlatformIndex
Definition WsfTrackProcessor.hpp:199
EventDisposition Execute() override
Definition WsfTrackProcessor.cpp:1078
Definition WsfTrackProcessor.hpp:47
double GetPurgeInterval() const
Definition WsfTrackProcessor.hpp:82
bool GetReportRawTracks() const
Definition WsfTrackProcessor.hpp:84
double GetReportingInterval() const
Definition WsfTrackProcessor.hpp:81
WsfTrackProcessor(const WsfScenario &aScenario)
The default constructor.
Definition WsfTrackProcessor.cpp:44
wsf::ExternalLinks & GetExternalLinks()
Allow track reporting strategies to access the external links object.
Definition WsfTrackProcessor.hpp:63
WsfTrackManager & GetTrackManager() const
Return the track manager object referenced by this processor.
Definition WsfTrackProcessor.hpp:60
bool GetReportFusedTracks() const
Definition WsfTrackProcessor.hpp:83
WsfTrackProcessor & operator=(const WsfTrackProcessor &)=delete
bool IsMasterTrackManager() const
Definition WsfTrackProcessor.hpp:69
Definition WsfTrackReportingStrategy.hpp:28
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Copyrights Multiple, All Rights Reserved