WSF
WsfSensorTracker.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 WSFSENSORTRACKER_HPP
13#define WSFSENSORTRACKER_HPP
14
15#include "wsf_export.h"
16
17class UtInput;
18#include "UtRandom.hpp"
19#include "UtVec3.hpp"
20class WsfPlatform;
21class WsfSensor;
22class WsfSensorMode;
23class WsfSensorResult;
25class WsfSimulation;
26#include "WsfStringId.hpp"
27class WsfTrackId;
28#include "WsfTrackListFwd.hpp"
29
34{
35public:
43
50
51 WsfSensorTrackerSettings(unsigned int aOptions, int aComponentRole, unsigned int aComponentFlags)
52 : mOptions(aOptions)
53 , mComponentRole(aComponentRole)
54 , mComponentFlags(aComponentFlags)
55 {
56 }
57
59 unsigned int mOptions;
66 unsigned int mComponentFlags;
67};
68
75{
76public:
79 {
80 public:
82
83 UtVec3d mLocationWCS;
84 UtVec3d mVelocityWCS;
86 };
87
88 // Just to make things shorter.
90
92 virtual ~WsfSensorTracker() = default;
93
94 virtual WsfSensorTracker* Clone() const;
95
97 bool DebugEnabled() const { return mDebugEnabled; }
98
99 virtual unsigned int GetActiveTrackCount() const;
100
101 virtual void GetActiveTrackList(WsfTrackList& aActiveTrackList);
102
103 virtual unsigned int GetMaximumTrackCount() const;
104
105 virtual bool GetTargetState(double aSimTime, const WsfTrackId& aRequestId, TargetState& aTargetState);
106
107 virtual void GetRequestDataForTarget(size_t aObjectId, WsfTrackId& aRequestId, size_t& aModeIndex, WsfTrackId& aTrackId) const;
108
109 virtual bool Initialize(double aSimTime, WsfSensor* aSensorPtr, WsfSensorScheduler* aSchedulerPtr);
110
111 virtual bool ProcessInput(UtInput& aInput);
112
113 virtual void SchedulerModeChange(double aSimTime,
114 const WsfTrackId& aRequestId,
115 size_t aObjectId,
116 WsfPlatform* aTargetPtr,
117 WsfStringId aNewModeName);
118
119 virtual void StopTracking(double aSimTime, const WsfTrackId& aRequestId);
120
121 virtual void TargetBlocked(double aSimTime, const Settings& aSettings, const WsfTrackId& aRequestId, size_t aObjectId);
122
123 virtual bool TargetDeleted(double aSimTime, const Settings& aSettings, const WsfTrackId& aRequestId, size_t aObjectId);
124
125 virtual void TargetDetected(double aSimTime,
126 const Settings& aSettings,
127 const WsfTrackId& aRequestId,
128 size_t aObjectId,
129 WsfPlatform* aTargetPtr,
130 WsfSensorResult& aResult);
131
132 virtual bool TargetSkipped(double aSimTime, const Settings& aSettings, const WsfTrackId& aRequestId, size_t aObjectId);
133
134 virtual void TargetUndetected(double aSimTime,
135 const Settings& aSettings,
136 const WsfTrackId& aRequestId,
137 size_t aObjectId,
138 WsfPlatform* aTargetPtr,
139 WsfSensorResult& aResult);
140
141 virtual void TurnOff(double aSimTime);
142
143 virtual void TurnOn(double aSimTime);
144
145 WsfSensor* GetSensor() const { return mSensorPtr; }
146 WsfSimulation* GetSimulation() const;
147
148protected:
151
152 ut::Random& GetRandom() const;
153
154 bool AllowTrackingP(double aSimTime,
155 const Settings& aSettings,
156 const WsfTrackId& aRequestId,
157 size_t aObjectId,
158 WsfTrack* aTrackPtr, // TODO_JAJ - NEEDED?
159 WsfSensorResult& aResult);
160
161 void DropTrackP(double aSimTime,
162 const Settings& aSettings,
163 const WsfTrackId& aRequestId,
164 size_t aObjectId,
165 WsfSensorMode* aModePtr,
166 WsfTrack*& aTrackPtr);
167
168 void InitializeTrackP(double aSimTime,
169 const Settings& aSettings,
170 const WsfTrackId& aRequestId,
171 size_t aObjectId,
172 WsfSensorMode* aModePtr,
173 WsfTrack*& aTrackPtr);
174
175 void UpdateTrackP(double aSimTime,
176 const Settings& aSettings,
177 const WsfTrackId& aRequestId,
178 size_t aObjectId,
179 WsfSensorMode* aModePtr,
180 WsfTrack* aTrackPtr,
181 WsfPlatform* aTargetPtr,
182 WsfSensorResult& aResult);
183
186
190
191private:
193 bool mDebugEnabled;
194};
195
196#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfTrackListT< WsfTrack > WsfTrackList
Definition WsfTrackList.hpp:88
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
Definition WsfSensorScheduler.hpp:29
Definition WsfSensorTracker.hpp:34
WsfSensorTrackerSettings()
Definition WsfSensorTracker.hpp:44
unsigned int mOptions
Definition WsfSensorTracker.hpp:59
unsigned int mComponentFlags
Additional flags that are passed to the component when mComponentRole is non-zero.
Definition WsfSensorTracker.hpp:66
int mComponentRole
Definition WsfSensorTracker.hpp:64
Options
A bitmask of options that can be passed to the tracker.
Definition WsfSensorTracker.hpp:38
@ cSUPPRESS_ALLOW_TRACKING_CHECK
Definition WsfSensorTracker.hpp:41
@ cSUPPRESS_TRACKING_CRITERIA
Definition WsfSensorTracker.hpp:40
@ cSUPPRESS_DETECTION_CHANGE_MESSAGES
Definition WsfSensorTracker.hpp:39
WsfSensorTrackerSettings(unsigned int aOptions, int aComponentRole, unsigned int aComponentFlags)
A bitmask of Settings (from the enum Settings).
Definition WsfSensorTracker.hpp:51
double mLockonTime
Definition WsfSensorTracker.hpp:85
UtVec3d mLocationWCS
Definition WsfSensorTracker.hpp:83
UtVec3d mVelocityWCS
Definition WsfSensorTracker.hpp:84
TargetState()
Constructor for nested class TargetState.
Definition WsfSensorTracker.cpp:413
Definition WsfSensorTracker.hpp:75
WsfSensor * GetSensor() const
Definition WsfSensorTracker.hpp:145
virtual WsfSensorTracker * Clone() const
Clone this tracker.
Definition WsfSensorTracker.cpp:45
WsfSensorTracker & operator=(const WsfSensorTracker &aSrc)=delete
void InitializeTrackP(double aSimTime, const Settings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfSensorMode *aModePtr, WsfTrack *&aTrackPtr)
Definition WsfSensorTracker.cpp:356
bool AllowTrackingP(double aSimTime, const Settings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfTrack *aTrackPtr, WsfSensorResult &aResult)
A convenience method for tracker implementations to ask components if an object should be allowed to ...
Definition WsfSensorTracker.cpp:299
void DropTrackP(double aSimTime, const Settings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfSensorMode *aModePtr, WsfTrack *&aTrackPtr)
Definition WsfSensorTracker.cpp:326
ut::Random & GetRandom() const
Definition WsfSensorTracker.cpp:292
void UpdateTrackP(double aSimTime, const Settings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfSensorMode *aModePtr, WsfTrack *aTrackPtr, WsfPlatform *aTargetPtr, WsfSensorResult &aResult)
Definition WsfSensorTracker.cpp:384
virtual ~WsfSensorTracker()=default
WsfSensorTracker()
Definition WsfSensorTracker.cpp:25
WsfSensorScheduler * mSchedulerPtr
Definition WsfSensorTracker.hpp:189
bool DebugEnabled() const
Returns 'true' if debugging is enabled for the tracker.
Definition WsfSensorTracker.hpp:97
WsfSensorTrackerSettings Settings
Definition WsfSensorTracker.hpp:89
WsfSensor * mSensorPtr
The sensor to which the tracker is attached.
Definition WsfSensorTracker.hpp:185
Definition WsfSensor.hpp:92
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Copyrights Multiple, All Rights Reserved