WSF
WsfSpinSensorScheduler.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 2021 Radiance Technologies. 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 WSFSPINSENSORSCHEDULER_HPP
13#define WSFSPINSENSORSCHEDULER_HPP
14
15#include "wsf_export.h"
16
17#include <queue>
18#include <vector>
19
20class UtInput;
21#include "UtCallback.hpp"
22#include "UtCallbackHolder.hpp"
24#include "WsfTrack.hpp"
25
31{
32public:
34 ~WsfSpinSensorScheduler() override = default;
35
38 static std::unique_ptr<WsfSensorScheduler> ObjectFactory(const std::string& aTypeName);
39
41
42
44 WsfSensorScheduler* Clone() const override;
45
46 bool Initialize(double aSimTime, WsfSensor* aSensorPtr, WsfSensorTracker* aTrackerPtr) override;
47 bool ProcessInput(UtInput& aInput) override;
49
50 void ModeDeselected(double aSimTime, WsfStringId aModeNameId) override;
51 void ModeSelected(double aSimTime, WsfStringId aModeNameId) override;
52
53 void PlatformAdded(double aSimTime, WsfPlatform* aPlatformPtr) override;
54
55 void RemoveTarget(double aSimTime, size_t aTargetIndex) override;
56
57 bool SelectTarget(double aSimTime,
58 double& aNextSimTime,
59 size_t& aTargetIndex,
60 WsfTrackId& aRequestId,
61 WsfSensor::Settings& aSettings) override;
62
63 void TurnOff(double aSimTime) override;
64 void TurnOn(double aSimTime) override;
65
66protected:
69
70private:
73 void ResetSearchList();
74
80 void CalculateDetectionTime(size_t aTargetIndex, double aSimTime);
81
83 double CalculateAngle(const ut::coords::WCS& aRangeVector, double aAngle);
84
88 double GetDirection(double aSimTime) const;
89
93 ut::coords::WCS FutureVec(double aSimTime, WsfSensor* aSensorPtr, const WsfPlatform* aTargetPtr);
94
98 double AngularDistance(double aSimTime, const WsfPlatform* aTargetPtr);
99
101 double mScanPeriod{10.0};
102
104 float mScanDirection{1.0f};
105
108 double mInitialAngle{0.0};
109
111 bool mRandomAzimuthPosition{false};
112
114 bool mRandomAzimuthPositionCheck{false};
115
117 std::map<std::size_t, double> mDetectionTimes;
118
122 std::map<size_t, std::unique_ptr<UtCallback>> mMoverCallbackMap;
123 std::map<size_t, std::unique_ptr<UtCallback>> mRouteCallbackMap;
124
126 std::vector<WsfSensorMode*> mModeList;
127
129 size_t mLastExplicitModeIndex{0};
130};
131
132#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
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 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
WsfSensorScheduler()
Definition WsfSensorScheduler.cpp:26
virtual void ModeDeselected(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:106
virtual void TurnOn(double aSimTime)
Definition WsfSensorScheduler.cpp:219
virtual WsfSensorScheduler * Clone() const
Definition WsfSensorScheduler.cpp:45
virtual void ModeSelected(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorScheduler.cpp:115
virtual bool ProcessInput(UtInput &aInput)
Definition WsfSensorScheduler.cpp:132
Definition WsfSensorTracker.hpp:75
Definition WsfSensor.hpp:133
Definition WsfSensor.hpp:92
~WsfSpinSensorScheduler() override=default
static std::unique_ptr< WsfSensorScheduler > ObjectFactory(const std::string &aTypeName)
Definition WsfSpinSensorScheduler.cpp:49
WsfSpinSensorScheduler()=default
WsfSpinSensorScheduler & operator=(const WsfSpinSensorScheduler &)=delete
Definition WsfTrackId.hpp:33
Copyrights Multiple, All Rights Reserved