WSF
WsfCTD_SensorComponent.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 2019 Infoscitex, a DCS 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 WSFCTD_SENSORCOMPONENT_HPP
13#define WSFCTD_SENSORCOMPONENT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <unordered_set>
18#include <vector>
19
21class WsfScenario;
22#include "WsfSensor.hpp"
24#include "WsfSensorResult.hpp"
25
27class WSF_MIL_EXPORT WsfCTD_SensorComponent : public WsfSensorComponent
28{
29public:
30 static void RegisterComponentFactory(WsfScenario& aScenario);
31 static WsfCTD_SensorComponent* Find(const WsfSensor& aSensor);
33
37 ~WsfCTD_SensorComponent() override = default;
38
40
41 WsfComponent* CloneComponent() const override;
42 WsfStringId GetComponentName() const override;
43 const int* GetComponentRoles() const override;
44 void* QueryInterface(int aRole) override;
46
48
49 bool Initialize(double aSimTime) override;
50 bool ProcessBeamInput(UtInput& aInput, WsfSensorBeam& aSensorBeam) override;
51
52 void SelectMode(double aSimTime, WsfStringId aModeNameId) override;
53 void DeselectMode(double aSimTime, WsfStringId aModeNameId) override;
54
55 void AttemptToDetect(double aSimTime, WsfSensorResult& aResult) override;
56
57 void PostAttemptToDetect(double aSimTime, WsfPlatform* aTargetPtr, WsfSensorResult& aResult) override;
58
59 bool TrackerAllowTracking(double aSimTime,
60 const TrackerSettings& aSettings,
61 const WsfTrackId& aRequestId,
62 size_t aObjectId,
63 WsfTrack* aTrackPtr,
64 WsfSensorResult& aResult) override;
65
66 // Callback from WsfSensorTracker implementation when dropping a track.
67 void TrackerDropTrack(double aSimTime,
68 const TrackerSettings& aSettings,
69 const WsfTrackId& aRequestId,
70 size_t aObjectId,
71 WsfSensorMode* aModePtr,
72 WsfTrack* aTrackPtr) override;
74
75 void PlatformAdded(double aSimTime, WsfPlatform* aPlatformPtr) override;
76 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
77
78 void TurnOff(double aSimTime) override;
79
82
83
84
85 using CTD_ResultsMap = std::map<WsfEM_Xmtr*, WsfSensorResult>;
86
89 {
90 public:
91 CTD_Beam() = default;
92
93 struct Deltas
94 {
95 double mAzimuthDelta{-1.0};
96 double mElevationDelta{-1.0};
97 double mRangeDelta{-1.0};
98 };
99
100 size_t mBeamIndex{0};
103 size_t mTargetIndex{0}; // prevent circular references
104 std::unordered_set<size_t> mCTD_Platforms;
105 std::vector<WsfSensorResult> mCTD_Results;
106 };
107
110 {
111 public:
112 CTD_Mode();
113 CTD_Mode(const CTD_Mode& aSrc);
114 CTD_Mode& operator=(const CTD_Mode& aRhs);
115 ~CTD_Mode() = default;
116
117 std::vector<CTD_Beam> mBeamList;
118
120 {
123 bool mTargetReacquired{false};
125 };
126 std::map<size_t, TargetResult> mTargetResults;
127 };
128
129private:
130 void ProcessDeltaInputs(UtInput& aInput, CTD_Beam::Deltas& aDeltas);
131
132 WsfSensorMode* GetMode(WsfStringId aModeNameId) const;
133 CTD_Mode& GetOrCreateCTD_Mode(const WsfSensorMode& aSensorMode);
134 CTD_Beam& GetOrCreateCTD_Beam(const WsfSensorBeam& aSensorBeam);
135
136 void ResetPlatforms();
137
138 std::vector<CTD_Mode> mModeList;
139 CTD_Mode mTemplate;
140 bool mIsWsfRadarSensor{false};
141 bool mDebugEnabled{false};
142 bool mEnabled{false};
143};
144
146
147#endif
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_CTD_SENSOR
Close Target Detection (CTD) model sensor component.
Definition WsfMilComponentRoles.hpp:37
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
The component extensions to a sensor beam.
Definition WsfCTD_SensorComponent.hpp:89
Deltas mReacquireDeltas
Definition WsfCTD_SensorComponent.hpp:102
Deltas mAcquireDeltas
Definition WsfCTD_SensorComponent.hpp:101
std::unordered_set< size_t > mCTD_Platforms
Definition WsfCTD_SensorComponent.hpp:104
size_t mTargetIndex
Definition WsfCTD_SensorComponent.hpp:103
std::vector< WsfSensorResult > mCTD_Results
Definition WsfCTD_SensorComponent.hpp:105
size_t mBeamIndex
Definition WsfCTD_SensorComponent.hpp:100
The CTD component extensions to a sensor mode.
Definition WsfCTD_SensorComponent.hpp:110
std::map< size_t, TargetResult > mTargetResults
Definition WsfCTD_SensorComponent.hpp:126
std::vector< CTD_Beam > mBeamList
Definition WsfCTD_SensorComponent.hpp:117
CTD_Mode()
Definition WsfCTD_SensorComponent.cpp:669
CTD_Mode & operator=(const CTD_Mode &aRhs)
Definition WsfCTD_SensorComponent.cpp:681
The Close Target Detection (CTD) sensor component that will be attached to all sensor systems.
Definition WsfCTD_SensorComponent.hpp:28
static WsfCTD_SensorComponent * Find(const WsfSensor &aSensor)
Find the instance of this component attached to the specified sensor.
Definition WsfCTD_SensorComponent.cpp:78
~WsfCTD_SensorComponent() override=default
WsfCTD_SensorComponent & operator=(const WsfCTD_SensorComponent &)=delete
static void RegisterComponentFactory(WsfScenario &aScenario)
Register the component factory that handles input for this component.
Definition WsfCTD_SensorComponent.cpp:71
static WsfCTD_SensorComponent * FindOrCreate(WsfSensor &aSensor)
Definition WsfCTD_SensorComponent.cpp:88
WsfCTD_SensorComponent(const WsfCTD_SensorComponent &aSrc)=default
WsfCTD_SensorComponent()=default
std::map< WsfEM_Xmtr *, WsfSensorResult > CTD_ResultsMap
Definition WsfCTD_SensorComponent.hpp:85
Definition WsfComponent.hpp:39
virtual const int * GetComponentRoles() const =0
virtual WsfStringId GetComponentName() const =0
virtual WsfComponent * CloneComponent() const =0
virtual void * QueryInterface(int aRole)=0
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSensorBeam.hpp:58
Definition WsfSensorComponent.hpp:36
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfSensorComponent.hpp:65
virtual void AttemptToDetect(double aSimTime, WsfSensorResult &aResult)
Extends the sensor-model implementation of AttemptToDetect.
Definition WsfSensorComponent.hpp:80
virtual void PostAttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, WsfSensorResult &aResult)
Definition WsfSensorComponent.hpp:85
virtual bool Initialize(double aSimTime)
Definition WsfComponent.cpp:45
WsfSensorTrackerSettings TrackerSettings
Definition WsfSensorComponent.hpp:39
virtual void DeselectMode(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorComponent.hpp:68
virtual void PlatformAdded(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfSensorComponent.hpp:64
virtual bool ProcessBeamInput(UtInput &aInput, WsfSensorBeam &aSensorBeam)
Definition WsfSensorComponent.hpp:62
virtual void TurnOff(double aSimTime)
Definition WsfSensorComponent.hpp:70
virtual bool TrackerAllowTracking(double aSimTime, const TrackerSettings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfTrack *aTrackPtr, WsfSensorResult &aResult)
Definition WsfSensorComponent.hpp:123
virtual void TrackerDropTrack(double aSimTime, const TrackerSettings &aSettings, const WsfTrackId &aRequestId, size_t aObjectId, WsfSensorMode *aModePtr, WsfTrack *aTrackPtr)
Definition WsfSensorComponent.hpp:176
virtual void SelectMode(double aSimTime, WsfStringId aModeNameId)
Definition WsfSensorComponent.hpp:67
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:92
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfCTD_SensorComponent.hpp:94
double mAzimuthDelta
Definition WsfCTD_SensorComponent.hpp:95
double mRangeDelta
Definition WsfCTD_SensorComponent.hpp:97
double mElevationDelta
Definition WsfCTD_SensorComponent.hpp:96
Definition WsfCTD_SensorComponent.hpp:120
bool mReacquirePossible
Definition WsfCTD_SensorComponent.hpp:122
bool mTargetReacquired
Definition WsfCTD_SensorComponent.hpp:123
bool mTrackingCloseTarget
Definition WsfCTD_SensorComponent.hpp:121
size_t mLastTargetResult
Definition WsfCTD_SensorComponent.hpp:124
Copyrights Multiple, All Rights Reserved