WSF
WsfBMSensorInfoRecord.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// The use, dissemination or disclosure of data in this file is subject to
7// limitation or restriction. See accompanying README and LICENSE for details.
8// ****************************************************************************
9// Classification: UNCLASSIFIED
10
11#ifndef WSF_BM_SENSOR_INFO_RECORD_HPP
12#define WSF_BM_SENSOR_INFO_RECORD_HPP
13
14#include <WsfObject.hpp>
15#include <WsfPlatform.hpp>
16#include "WsfBMCommon.hpp"
17#include <iadsLib/sensorRecordInterface.hpp>
18#include <iadsLib/trackRecord.hpp>
19
21class WsfSensor;
22
23class WSF_IADS_C2_LIB_EXPORT WsfBMSensorInfoRecord : public WsfObject, public il::sensorRecord
24{
25 public:
26
29 virtual ~WsfBMSensorInfoRecord();
30
32 virtual WsfBMSensorInfoRecord* Clone() const = 0;
33
34 double GetAz() const override;
35 double GetAzExtent() const override;
36 void SetAzSlewRate(double slewRate) override;
37 void CueToAzimuth(double azimuth) override;
38
39 vm::Vector3<double> WcsToEcs(const vm::Vector3<double>& p) const override;
40 vm::Vector3<double> WcsToPcs(const vm::Vector3<double>& p) const override;
41
42 double GetRestingAzimuth() override { return restingAzimuth; }
43 void SetRestingAzimuth(double azimuth) { restingAzimuth = azimuth; }
44
45 double GetCoarseSlewRate() override { return coarseSlewRate; }
46 void SetCoarseSlewRate(double slewRate) { coarseSlewRate = slewRate; }
47
48 double GetFineSlewRate() override { return fineSlewRate; }
49 void SetFineSlewRate(double slewRate) { fineSlewRate = slewRate; }
50
51 void Set(/* const */ WsfSimulation* sim_ptr, WsfBMAssetRecord* asset, tSensorSysID sensor_sys_id, il::AssetTypeEnum weapon_type);
52 void Set(/* const */ WsfSimulation* sim_ptr, const std::shared_ptr<il::assetRecord>& asset, tSensorSysID sensor_sys_id, il::AssetTypeEnum sensor_type);
53
54 tSensorSysID GetSsysID() const;
55 il::unitTypeRecord GetTypeRecord() const;
56 virtual std::string GetName() const;
57
58 // for AFSIM, we never send cues out so the sensors don't send sensor status in their messages relating to cues, override the max and active cues
59 // so our sensor perception can work correctly with modes
60 int GetTruthActiveCues(std::weak_ptr<il::logger::GlobalLogger> aGlobalLogger) const override;
61 int GetMaxActiveCues() const override;
62
63 bool IsTurnedOn() const override;
64 bool TurnOff(const double aSimTime) override;
65 bool TurnOn(const double aSimTime) override;
66 bool Cue(const double aSimTime, const il::idRecord& invoking_asset, const il::tTrackID& master_track_id) override;
67 bool CueTrackUpdated(const double aSimTime, const il::idRecord& invoking_asset, const il::tTrackID& master_track_id) override;
68 bool DropCue(const double aSimTime, const il::tTrackID& master_track_id) override;
69
70 void
71 SetTrackingMode(const std::string& opt_tracking_mode);
72
73 protected:
74 WsfSensor* GetSensorRef() const;
75
76 private:
77 WsfPlatform* GetPlatformRef() const;
78
79 tPlatformRef m_attached_plat;
80 WsfSimulation* m_sim_ptr; // we don't own this
81
82 std::string m_tracking_mode;
83
84 WsfStringId GetTrackingMode() const;
85
86 double restingAzimuth;
87 double coarseSlewRate;
88 double fineSlewRate;
89};
90
92{
93 public:
94 WsfBMEWSensorInfoRecord* Clone() const override;
95 il::SensorEnum GetSensorType() const override;
96 bool IsEW() const override;
97
98 bool HasEstimatedAvailableCues() const { return true; } // by default, non-tracking radars will have infinite cues
99};
100
102{
103 public:
104 WsfBMTARSensorInfoRecord* Clone() const override;
105 il::SensorEnum GetSensorType() const override;
106 bool IsTAR() const override;
107 bool HasEstimatedAvailableCues() const override { return true; } // by default, non-tracking radars will have infinite cues
108};
109
111{
112 public:
113 WsfBMTTRSensorInfoRecord* Clone() const override;
114 il::SensorEnum GetSensorType() const override;
115 bool IsTTR() const override;
116};
117
119{
120 public:
121 WsfBMRWRSensorInfoRecord* Clone() const override;
122 il::SensorEnum GetSensorType() const override;
123 bool IsRWR() const override;
124 bool HasEstimatedAvailableCues() const override { return true; } // by default, non-tracking radars will have infinite cues
125
126 bool IsValid() const;
127 WsfStringId GetNameId() const;
128 int GetRWRActiveTrackCount() const;
129 void GetRWRActiveTrackList(WsfTrackList& trackList);
130};
131
132#endif
int tSensorSysID
Definition WsfBMCommon.hpp:29
unsigned int tPlatformRef
Definition WsfBMCommon.hpp:27
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfTrackListT< WsfTrack > WsfTrackList
Definition WsfTrackList.hpp:88
Definition WsfBMAssetRecord.hpp:32
Definition WsfBMSensorInfoRecord.hpp:92
WsfBMEWSensorInfoRecord * Clone() const override
The standard Clone() method (virtual copy constructor).
Definition WsfBMSensorInfoRecord.cpp:468
bool HasEstimatedAvailableCues() const
Definition WsfBMSensorInfoRecord.hpp:98
bool IsEW() const override
Definition WsfBMSensorInfoRecord.cpp:478
il::SensorEnum GetSensorType() const override
Definition WsfBMSensorInfoRecord.cpp:473
Definition WsfBMSensorInfoRecord.hpp:119
il::SensorEnum GetSensorType() const override
Definition WsfBMSensorInfoRecord.cpp:527
WsfBMRWRSensorInfoRecord * Clone() const override
The standard Clone() method (virtual copy constructor).
Definition WsfBMSensorInfoRecord.cpp:522
bool HasEstimatedAvailableCues() const override
Definition WsfBMSensorInfoRecord.hpp:124
void GetRWRActiveTrackList(WsfTrackList &trackList)
Definition WsfBMSensorInfoRecord.cpp:558
WsfStringId GetNameId() const
Definition WsfBMSensorInfoRecord.cpp:537
int GetRWRActiveTrackCount() const
Definition WsfBMSensorInfoRecord.cpp:547
bool IsRWR() const override
Definition WsfBMSensorInfoRecord.cpp:532
void CueToAzimuth(double azimuth) override
Definition WsfBMSensorInfoRecord.cpp:143
double GetAz() const override
Definition WsfBMSensorInfoRecord.cpp:49
WsfBMSensorInfoRecord()
Definition WsfBMSensorInfoRecord.cpp:28
vm::Vector3< double > WcsToPcs(const vm::Vector3< double > &p) const override
Definition WsfBMSensorInfoRecord.cpp:188
void SetRestingAzimuth(double azimuth)
Definition WsfBMSensorInfoRecord.hpp:43
double GetFineSlewRate() override
Definition WsfBMSensorInfoRecord.hpp:48
double GetAzExtent() const override
Definition WsfBMSensorInfoRecord.cpp:68
void SetCoarseSlewRate(double slewRate)
Definition WsfBMSensorInfoRecord.hpp:46
vm::Vector3< double > WcsToEcs(const vm::Vector3< double > &p) const override
Definition WsfBMSensorInfoRecord.cpp:167
double GetRestingAzimuth() override
Definition WsfBMSensorInfoRecord.hpp:42
virtual WsfBMSensorInfoRecord * Clone() const =0
The standard Clone() method (virtual copy constructor).
void SetFineSlewRate(double slewRate)
Definition WsfBMSensorInfoRecord.hpp:49
void SetAzSlewRate(double slewRate) override
Definition WsfBMSensorInfoRecord.cpp:126
double GetCoarseSlewRate() override
Definition WsfBMSensorInfoRecord.hpp:45
Definition WsfBMSensorInfoRecord.hpp:102
bool HasEstimatedAvailableCues() const override
Definition WsfBMSensorInfoRecord.hpp:107
WsfBMTARSensorInfoRecord * Clone() const override
The standard Clone() method (virtual copy constructor).
Definition WsfBMSensorInfoRecord.cpp:486
bool IsTAR() const override
Definition WsfBMSensorInfoRecord.cpp:496
il::SensorEnum GetSensorType() const override
Definition WsfBMSensorInfoRecord.cpp:491
Definition WsfBMSensorInfoRecord.hpp:111
il::SensorEnum GetSensorType() const override
Definition WsfBMSensorInfoRecord.cpp:509
bool IsTTR() const override
Definition WsfBMSensorInfoRecord.cpp:514
WsfBMTTRSensorInfoRecord * Clone() const override
The standard Clone() method (virtual copy constructor).
Definition WsfBMSensorInfoRecord.cpp:504
const std::string & GetName() const
Definition WsfObject.cpp:235
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfSensor.hpp:92
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved