WSF
WsfDefaultSensorScheduler.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 WSFDEFAULTSENSORSCHEDULER_HPP
13#define WSFDEFAULTSENSORSCHEDULER_HPP
14
15#include "wsf_export.h"
16
17#include <vector>
18
20#include "WsfTrack.hpp"
21#include "WsfTrackId.hpp"
22
29{
30public:
32
33 ~WsfDefaultSensorScheduler() override = default;
34
35 static std::unique_ptr<WsfSensorScheduler> ObjectFactory(const std::string& aTypeName);
36
37 WsfSensorScheduler* Clone() const override;
38
39 void FrameTimeChanged(double aSimTime, WsfStringId aModeNameId) override;
40
41 int GetActiveRequestCount(WsfStringId aModeNameId) const override;
42
43 int GetMaximumRequestCount(WsfStringId aModeNameId) const override;
44
45 bool HaveRequestFor(const WsfTrackId& aRequestId) const override;
46
47 bool Initialize(double aSimTime, WsfSensor* aSensorPtr, WsfSensorTracker* aTrackerPtr) override;
48
49 void ModeDeselected(double aSimTime, WsfStringId aModeNameId) override;
50
51 void ModeSelected(double aSimTime, WsfStringId aModeNameId) override;
52
53 void PlatformAdded(double aSimTime, WsfPlatform* aPlatformPtr) override;
54
55 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
56
57 bool ProcessInput(UtInput& aInput) override;
58
59 void RemoveTarget(double aSimTime, size_t aTargetIndex) override;
60
61 const WsfTrack& GetTrackForRequest(const WsfTrackId& aRequestId) const override;
62
63 bool SelectTarget(double aSimTime,
64 double& aNextSimTime,
65 size_t& aTargetIndex,
66 WsfTrackId& aRequestId,
67 WsfSensor::Settings& aSettings) override;
68
69 bool StartTracking(double aSimTime, const WsfTrack& aTrack, WsfStringId aModeNameId) override;
70
71 bool StopTracking(double aSimTime, const WsfTrackId& aRequestId) override;
72
73 void TrackerModeChange(double aSimTime,
74 const WsfTrackId& aRequestId,
75 size_t aTargetIndex,
76 WsfPlatform* aTargetPtr,
77 const WsfTrack* aTrackPtr,
78 WsfStringId aModeNameId) override;
79
80 void TurnOff(double aSimTime) override;
81
82 void TurnOn(double aSimTime) override;
83
87 class Request
88 {
89 public:
90 Request() = default;
91 Request(double aSimTime, const WsfTrack& aTrack, size_t aModeIndex)
92 : mRequestId(aTrack.GetTrackId())
93 , mTrack(aTrack)
94 , mStartTime(aSimTime)
95 , mNextVisitTime(aSimTime)
96 , mLastVisitTime(-1.0)
97 , mTargetIndex(0)
98 , mModeIndex(aModeIndex)
99 {
100 }
101
104
109
111 double mStartTime = -1.0;
112
114 double mNextVisitTime = -1.0;
115
117 double mLastVisitTime = -1.0;
118
120 size_t mTargetIndex = 0;
121
123 size_t mModeIndex = 0;
124 };
125 using RequestList = std::vector<Request>;
126 using RequestListIndex = RequestList::size_type;
127
128 const RequestList& GetRequestList() const { return mRequestList; }
129
130protected:
137
140
142
143 void DeselectMode(double aSimTime, Request& aRequest);
144
145 void SelectMode(double aSimTime, Request& aRequest);
146
147 void ResetTrackList();
148
149 void ResetSearchList();
150
151 size_t SelectTargetForRequest(Request& aRequest);
152
153 bool TargetHasActiveRequest(size_t aTargetIndex) const;
154
156
158
159 void UpdateSearchFrameTime(double aSimTime);
160
161
164 {
165 public:
166 CompareRequestId(const WsfTrackId& aRequestId)
167 : mRequestId(aRequestId)
168 {
169 }
170
171 bool operator()(const Request& aRequest) const { return (aRequest.mRequestId == mRequestId); }
172
173 private:
174 WsfTrackId mRequestId;
175 };
176
178 std::vector<WsfSensorMode*> mModeList;
179
185
188
191
194
197
201
204
208
211};
212
213#endif
WsfTrackId GetTrackId(const UtScriptData &aScriptArg)
Definition WsfMilScriptExtensions.cpp:58
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
CompareRequestId(const WsfTrackId &aRequestId)
Definition WsfDefaultSensorScheduler.hpp:166
bool operator()(const Request &aRequest) const
Definition WsfDefaultSensorScheduler.hpp:171
Definition WsfDefaultSensorScheduler.hpp:88
double mNextVisitTime
The simulation time of the next visit (sensing chance).
Definition WsfDefaultSensorScheduler.hpp:114
WsfTrackId mRequestId
The track ID from the original request.
Definition WsfDefaultSensorScheduler.hpp:103
double mStartTime
The time when the request was initiated.
Definition WsfDefaultSensorScheduler.hpp:111
size_t mTargetIndex
The target index to be used for this track request.
Definition WsfDefaultSensorScheduler.hpp:120
double mLastVisitTime
The simulation time of the last visit (sensing chance).
Definition WsfDefaultSensorScheduler.hpp:117
Request(double aSimTime, const WsfTrack &aTrack, size_t aModeIndex)
Definition WsfDefaultSensorScheduler.hpp:91
WsfTrack mTrack
Definition WsfDefaultSensorScheduler.hpp:108
size_t mModeIndex
The index of the sensor mode to be used for this request.
Definition WsfDefaultSensorScheduler.hpp:123
Definition WsfDefaultSensorScheduler.hpp:29
void DeselectMode(double aSimTime, Request &aRequest)
Deselect the mode associated with the current request if it is not in use by other requests.
Definition WsfDefaultSensorScheduler.cpp:880
void ResetSearchList()
Definition WsfDefaultSensorScheduler.cpp:923
SearchListIndex mSearchIndex
The vector index of the next search chance to be performed.
Definition WsfDefaultSensorScheduler.hpp:187
static std::unique_ptr< WsfSensorScheduler > ObjectFactory(const std::string &aTypeName)
Definition WsfDefaultSensorScheduler.cpp:99
RequestList mRequestList
A list of active track requests.
Definition WsfDefaultSensorScheduler.hpp:190
bool mSearchAllowed
'true' if search chances can be processed.
Definition WsfDefaultSensorScheduler.hpp:203
~WsfDefaultSensorScheduler() override=default
size_t SelectTargetForRequest(Request &aRequest)
Definition WsfDefaultSensorScheduler.cpp:943
bool TargetHasActiveRequest(size_t aTargetIndex) const
Returns true if the target has an active request against it.
Definition WsfDefaultSensorScheduler.cpp:958
WsfDefaultSensorScheduler()
Definition WsfDefaultSensorScheduler.cpp:56
void UpdateSearchFrameTime(double aSimTime)
Definition WsfDefaultSensorScheduler.cpp:1026
void CheckSearchModeAvailability()
Check if the current mode selections provide for the ability to process search chances.
Definition WsfDefaultSensorScheduler.cpp:821
void UpdateSearchChanceInterval()
Definition WsfDefaultSensorScheduler.cpp:1005
std::vector< Request > RequestList
Definition WsfDefaultSensorScheduler.hpp:125
RequestListIndex mRequestIndex
The index of the next request to be performed.
Definition WsfDefaultSensorScheduler.hpp:193
WsfDefaultSensorScheduler & operator=(const WsfDefaultSensorScheduler &)=delete
size_t mLastExplicitModeIndex
The last mode explicitly selected (i.e.: via WsfSensor::SelectMode).
Definition WsfDefaultSensorScheduler.hpp:196
ScanSchedulingMethod
Definition WsfDefaultSensorScheduler.hpp:132
@ cSSM_RANDOM
Definition WsfDefaultSensorScheduler.hpp:133
@ cSSM_REVERSE_INPUT_ORDER
Definition WsfDefaultSensorScheduler.hpp:135
@ cSSM_INPUT_ORDER
Definition WsfDefaultSensorScheduler.hpp:134
double mSearchFrameTime
Definition WsfDefaultSensorScheduler.hpp:184
const RequestList & GetRequestList() const
Definition WsfDefaultSensorScheduler.hpp:128
void UpdateNextTrackVisitTime()
Definition WsfDefaultSensorScheduler.cpp:979
double mNextTrackVisitTime
Definition WsfDefaultSensorScheduler.hpp:182
RequestList::size_type RequestListIndex
Definition WsfDefaultSensorScheduler.hpp:126
double mSearchChanceInterval
Definition WsfDefaultSensorScheduler.hpp:183
ScanSchedulingMethod mScanSchedulingMethod
How scan chances are added to the search list.
Definition WsfDefaultSensorScheduler.hpp:210
void SelectMode(double aSimTime, Request &aRequest)
Definition WsfDefaultSensorScheduler.cpp:912
size_t mSearchModeIndex
Definition WsfDefaultSensorScheduler.hpp:200
std::vector< WsfSensorMode * > mModeList
The pointers to the sensor modes, indexed by mode index.
Definition WsfDefaultSensorScheduler.hpp:178
void ResetTrackList()
Definition WsfDefaultSensorScheduler.cpp:933
double mDwellEndTime
Definition WsfDefaultSensorScheduler.hpp:180
double mNextSearchVisitTime
Definition WsfDefaultSensorScheduler.hpp:181
bool mCheckSearchList
Definition WsfDefaultSensorScheduler.hpp:207
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
virtual void RemoveTarget(double aSimTime, size_t aTargetIndex)
Definition WsfSensorScheduler.cpp:150
virtual void PlatformAdded(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfSensorScheduler.cpp:122
virtual void TurnOff(double aSimTime)
Definition WsfSensorScheduler.cpp:213
virtual bool HaveRequestFor(const WsfTrackId &aRequestId) const
Definition WsfSensorScheduler.cpp:79
virtual bool Initialize(double aSimTime, WsfSensor *aSensorPtr, WsfSensorTracker *aTrackerPtr)
Definition WsfSensorScheduler.cpp:91
virtual bool SelectTarget(double aSimTime, double &aNextSimTime, size_t &aTargetIndex, WsfTrackId &aRequestId, WsfSensor::Settings &aSettings)
Definition WsfSensorScheduler.cpp:176
virtual int GetMaximumRequestCount(WsfStringId aModeNameId) const
Definition WsfSensorScheduler.cpp:70
virtual void FrameTimeChanged(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:55
virtual int GetActiveRequestCount(WsfStringId aModeNameId) const
Definition WsfSensorScheduler.cpp:61
WsfSensorScheduler()
Definition WsfSensorScheduler.cpp:26
virtual void ModeDeselected(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:106
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfSensorScheduler.cpp:128
virtual void TrackerModeChange(double aSimTime, const WsfTrackId &aRequestId, size_t aTargetIndex, WsfPlatform *aTargetPtr, const WsfTrack *aTrackPtr, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:232
virtual void TurnOn(double aSimTime)
Definition WsfSensorScheduler.cpp:219
SearchList::size_type SearchListIndex
Definition WsfSensorScheduler.hpp:92
virtual WsfSensorScheduler * Clone() const
Definition WsfSensorScheduler.cpp:45
virtual bool StartTracking(double aSimTime, const WsfTrack &aTrack, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:193
virtual void ModeSelected(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:115
virtual bool ProcessInput(UtInput &aInput)
Definition WsfSensorScheduler.cpp:132
virtual bool StopTracking(double aSimTime, const WsfTrackId &aTrackId)
Definition WsfSensorScheduler.cpp:204
virtual const WsfTrack & GetTrackForRequest(const WsfTrackId &aRequestId) const
Definition WsfSensorScheduler.cpp:157
Definition WsfSensorTracker.hpp:75
Definition WsfSensor.hpp:133
Definition WsfSensor.hpp:92
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Copyrights Multiple, All Rights Reserved