WSF
WsfBMUtils.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_UTILS_HPP
12#define WSF_BM_UTILS_HPP
13
14#include <map>
15#include <string>
16#include <set>
17#include <memory>
18
19#include <WsfBMCommon.hpp>
20#include <WsfObject.hpp>
21#include <WsfLocalTrack.hpp>
22#include <WsfBMTrackMessage.hpp>
23#include <WsfPlatform.hpp>
24#include <WsfTrackId.hpp>
25#include <iadsLib/idRecord.hpp>
26#include <WsfQuantumTask.hpp>
27#include <iadsLib/baseMessage.hpp>
28#include <WsfProcessor.hpp>
29#include <WsfBattleManager.hpp>
30#include <WsfTrackManager.hpp>
31#include <WsfLocalTrack.hpp>
32#include <WsfMessage.hpp>
33#include <UtVec3.hpp>
34#include <iadsLib/enum.hpp>
35
36// forward declarations
38class WsfSimulation;
39class WsfAssetManager;
44class WsfWeapon;
45
46namespace il
47{
48 class BattleManagerInterface;
49 class AssetManagerInterface;
50 class DisseminateC2Interface;
51 class SensorsManagerInterface;
52 class WeaponsManagerInterface;
53}
54
55class WSF_IADS_C2_LIB_EXPORT WsfBMUtils : public WsfObject
56{
57 public:
58
59 WsfBMUtils* Clone() const override;
60 const char* GetScriptClassName() const override { return "WsfBMUtils"; }
61
62 static int GetStringId(const std::string& str_Value);
63 static std::string GetStringFromId(const int stringid);
64
65 static bool IsTypeUnknown(const std::string& type_str);
66 static bool IsSubtypeUnknown(const std::string& subtype_str);
67
68 static bool IsTypeAny(const std::string& type_str);
69 static bool IsSubtypeAny(const std::string& subtype_str);
70
71 static int GetUnknownType();
72 static int GetUnknownSubtype();
73
74 static int GetType(const std::string& type_str);
75 static int GetSubType(const std::string& subtype_str);
76
77 static std::string GetSpatialDomain(const WsfPlatform* platform);
78
79 static WsfTrackId ConvertTrackId(const il::idRecord& il_record);
80 static il::idRecord ConvertTrackId(const WsfTrackId& track_id);
81 static il::idRecord ConvertTrackId(const int owning_plat_string_id, const int tan);
82
83 static std::size_t GetTracksUpdated(const WsfAssetManager* am_proc, double sim_time, std::vector<WsfLocalTrack*>& tracks);
84 static bool IsTrackGeneratedByLocalSensor(WsfPlatform* relative_to_platform, const WsfTrackId& track_id, il::SensorEnum reporting_sensor_type);
85
86 static WsfPlatform* GetMessageDestination(/* const */ WsfSimulation* sim_ptr, const std::shared_ptr<const il::baseMessage>& message);
87
88 static int GetUnitIDFromPlatform(const WsfPlatform* platform);
89 static il::idRecord GetUnitIDRecordFromPlatform(const WsfPlatform* platform);
90 static il::idRecord GetUnitIDRecordFromPlatformIndex(/* const */ WsfSimulation* sim_ptr, const int plat_idx);
91 static WsfPlatform* GetPlatformFromUnitID(/* const */ WsfSimulation* sim_ptr, const int id);
92 static WsfPlatform* GetPlatformFromUnitIDRecord(/* const */ WsfSimulation* sim_ptr, const il::idRecord& id);
93 // returns true if platforms have a common commander on any command chain
94 static bool ArePlatformsPeers(const WsfPlatform* plat1, const WsfPlatform* plat2);
95 static bool IsDirectCommander(const WsfPlatform* test_cmdr, const WsfPlatform* against_plat, const std::string& opt_cmd_chain_name = "");
96 static WsfPlatform* GetCommander(const WsfPlatform* from, const std::string& opt_cmd_chain_name = "");
97 static WsfPlatform* GetTopMostCommander(const WsfPlatform* from, const std::string& opt_cmd_chain_name = "");
98 static bool BelievedAlive(/*const*/ WsfSimulation* sim, const WsfLocalTrack* track);
99 static bool ConfirmedDead(/*const*/ WsfSimulation* sim, const WsfLocalTrack* track);
100
101 static il::idRecord GetAssignedIDRecord(/* const */ WsfSimulation* sim_ptr, const int plat_idx, const int wpn_idx);
102 static il::idRecord GetAssignedIDRecord(const WsfPlatform* plat, const WsfWeapon* weapon);
103 static WsfPlatform* GetAssignedPlatformFromAssignedIDRecord(/* const */ WsfSimulation* sim_ptr, const il::idRecord& assigned_id);
104 static WsfWeapon* GetAssignedWeaponFromAssignedIDRecord(/* const */ WsfSimulation* sim_ptr, const il::idRecord& assigned_id);
105
106 static WsfWeapon* GetWeapon(const WsfPlatform* platform, const std::string& weapon_name);
107 static il::idRecord GetWeaponID(const WsfPlatform* platform, const std::string& weapon_name);
108 static il::idRecord GetWeaponID(const WsfPlatform* platform, const WsfWeapon* weapon);
109 static il::idRecord GetWeaponID(/* const */ WsfSimulation* sim_ptr, const int plat_idx, const int wpn_idx);
110 static bool IsWeaponIDValid(const int id);
111
112 static WsfSensor* GetSensor(const WsfPlatform* platform, const std::string& sensor_name);
113 static WsfSensor* GetSensor(const WsfPlatform* platform, const int sensor_id);
114 static int GetSensorID(/*const*/ WsfPlatform* platform, const std::string& sensor_name);
115 static il::idRecord GetSensorID(const WsfPlatform* platform, const WsfSensor* sensor);
116 static il::idRecord GetSensorID(/* const */ WsfSimulation* sim_ptr, const int plat_idx, const int snsr_idx);
117 static il::SensorEnum GetSensorType(const WsfSensor& sensor);
118 static il::SensorEnum GetTrackSensorType(WsfSimulation* sim, const WsfLocalTrack* track);
119 static il::SensorEnum GetTrackSensorType(WsfSimulation* sim, const WsfLocalTrack* track, std::set<WsfTrackId>& oldTracks);
120 static std::vector<const WsfTrack*> GetOriginalTracks(WsfSimulation* sim, const WsfLocalTrack* track);
121 static void GetOriginalTracks(WsfSimulation* sim, const WsfLocalTrack* track, std::set<WsfTrackId>& tested_tracks, std::vector<const WsfTrack*>& original_tracks);
122 static il::SensorEnum GetRawTrackSensorType(WsfSimulation* sim, const WsfPlatform* platform, const WsfTrack* raw_track);
123
124 static void SetAssignmentStatusFromAuxDataString(WsfBMAssignmentStatusMessage* assignment_status, const std::string& status_string);
125 static std::string AssignmentStatusToAuxDataString(const WsfBMAssignmentStatusMessage* assignment_status);
126
127 static bool IsAssignedBy(const WsfPlatform* plat, const WsfBMAssignmentMessage& message);
128 static WsfLocalTrack* FindCorrelatedTrack(/* const */ WsfTrackManager* trk_mgr, const WsfTrackId* aRawTrackId);
129
130 static std::shared_ptr<il::AssetManagerInterface> FindAttachedAssetManagerRef(const WsfPlatform* platform, const bool log_errors = true);
131 static std::shared_ptr<il::BattleManagerInterface> FindAttachedBattleManagerRef(const WsfPlatform* platform, const bool log_errors = true);
132 static std::shared_ptr<il::DisseminateC2Interface> FindAttachedDisseminationManagerRef(const WsfPlatform* platform, const bool log_errors = true);
133 static std::shared_ptr<il::SensorsManagerInterface> FindAttachedSensorsManagerRef(const WsfPlatform* platform, const bool log_errors = true);
134 static std::shared_ptr<il::WeaponsManagerInterface> FindAttachedWeaponsManagerRef(const WsfPlatform* platform, const bool log_errors = true);
135 static WsfAssetManager* FindAttachedAssetManagerRef2(const WsfPlatform* platform, const bool log_errors = false);
136 static WsfBattleManager* FindAttachedBattleManagerRef2(const WsfPlatform* platform, const bool log_errors = false);
137 static WsfBMDisseminateC2* FindAttachedDisseminationManagerRef2(const WsfPlatform* platform, const bool log_errors = false);
138 static WsfBMSensorsManager* FindAttachedSensorsManagerRef2(const WsfPlatform* platform, const bool log_errors = false);
139 static WsfBMWeaponsManager* FindAttachedWeaponsManagerRef2(const WsfPlatform* platform, const bool log_errors = false);
140
141 // Aux Data-related calls.
142 static bool AuxDataExists(const WsfPlatform* platform, const std::string& attrib_name); // not needed in script because this call is supported in script but here it's a helper for C++
143 static bool AuxDataExists(const WsfWeapon* weapon, const std::string& attrib_name);
144 static bool AuxDataExists(const WsfTrack* track, const std::string& attrib_name);
145 static bool AuxDataExists(const WsfMessage& message, const std::string& attrib_name);
146
147 // Track-related calls
148 static double GetHeading(const WsfTrack* track);
149 static bool HeadingValid(const WsfTrack* track);
150 static WsfPlatform* GetTarget(WsfSimulation* sim_ptr, const WsfTrack* track);
152 const WsfLocalTrack* aTrackPtr,
153 const bool aLogWarnings = true);
154
155 // Platform-related calls
156 static UtVec3d GetOrientationWCS(const double sim_time_s, WsfPlatform* plat);
157 static int GetPlatformMaxAssignments(const WsfPlatform* plat);
158 static int GetPlatformNumAssignments(const WsfPlatform* plat);
159 static double GetPlatformNumAssignmentDelay(const WsfPlatform* plat);
160
161 private:
162
163 /*static const int UNKNOWN_TYPE;
164 static const int UNKNOWN_SUBTYPE;
165 static const int INVALID_ID;*/
166 //const int UNKNOWN_TYPE = 0;
167 //const int UNKNOWN_SUBTYPE = 0;
168 //const int INVALID_ID = INVALID_UNIT_ID;
169
170 static unsigned int GetWeaponIndexOnPlatform(const WsfPlatform* platform, const WsfWeapon* weapon);
171};
172
173#endif
auto am_proc
Definition WsfScriptBMUtilsClass.cpp:269
Definition WsfAssetManager.hpp:63
Definition WsfBMAssignmentMessage.hpp:43
Definition WsfBMAssignmentStatusMessage.hpp:44
Definition WsfBMDisseminateC2.hpp:53
Definition WsfBMSensorsManager.hpp:50
Definition WsfBMTrackMessage.hpp:30
Definition WsfBMUtils.hpp:56
static WsfBMSensorsManager * FindAttachedSensorsManagerRef2(const WsfPlatform *platform, const bool log_errors=false)
Definition WsfBMUtils.cpp:826
static bool HeadingValid(const WsfTrack *track)
Definition WsfBMUtils.cpp:877
static UtVec3d GetOrientationWCS(const double sim_time_s, WsfPlatform *plat)
Definition WsfBMUtils.cpp:1066
static int GetPlatformMaxAssignments(const WsfPlatform *plat)
Definition WsfBMUtils.cpp:1082
const char * GetScriptClassName() const override
Definition WsfBMUtils.hpp:60
static WsfAssetManager * FindAttachedAssetManagerRef2(const WsfPlatform *platform, const bool log_errors=false)
Definition WsfBMUtils.cpp:808
static void SetAssignmentStatusFromAuxDataString(WsfBMAssignmentStatusMessage *assignment_status, const std::string &status_string)
static bool AuxDataExists(const WsfPlatform *platform, const std::string &attrib_name)
Definition WsfBMUtils.cpp:838
static bool IsAssignedBy(const WsfPlatform *plat, const WsfBMAssignmentMessage &message)
Definition WsfBMUtils.cpp:723
static int GetPlatformNumAssignments(const WsfPlatform *plat)
Definition WsfBMUtils.cpp:1095
static WsfBMTrackMessage ConvertTrack(WsfSimulation *aSimPtr, const WsfLocalTrack *aTrackPtr, const bool aLogWarnings=true)
Definition WsfBMUtils.cpp:927
static std::string AssignmentStatusToAuxDataString(const WsfBMAssignmentStatusMessage *assignment_status)
static std::shared_ptr< il::AssetManagerInterface > FindAttachedAssetManagerRef(const WsfPlatform *platform, const bool log_errors=true)
Definition WsfBMUtils.cpp:773
static double GetPlatformNumAssignmentDelay(const WsfPlatform *plat)
Definition WsfBMUtils.cpp:1108
static std::shared_ptr< il::DisseminateC2Interface > FindAttachedDisseminationManagerRef(const WsfPlatform *platform, const bool log_errors=true)
Definition WsfBMUtils.cpp:787
static WsfLocalTrack * FindCorrelatedTrack(WsfTrackManager *trk_mgr, const WsfTrackId *aRawTrackId)
Definition WsfBMUtils.cpp:717
static WsfBMWeaponsManager * FindAttachedWeaponsManagerRef2(const WsfPlatform *platform, const bool log_errors=false)
Definition WsfBMUtils.cpp:832
static std::shared_ptr< il::SensorsManagerInterface > FindAttachedSensorsManagerRef(const WsfPlatform *platform, const bool log_errors=true)
Definition WsfBMUtils.cpp:794
static WsfPlatform * GetTarget(WsfSimulation *sim_ptr, const WsfTrack *track)
Definition WsfBMUtils.cpp:916
static double GetHeading(const WsfTrack *track)
Definition WsfBMUtils.cpp:892
static WsfBMDisseminateC2 * FindAttachedDisseminationManagerRef2(const WsfPlatform *platform, const bool log_errors=false)
Definition WsfBMUtils.cpp:820
static std::shared_ptr< il::WeaponsManagerInterface > FindAttachedWeaponsManagerRef(const WsfPlatform *platform, const bool log_errors=true)
Definition WsfBMUtils.cpp:801
static std::shared_ptr< il::BattleManagerInterface > FindAttachedBattleManagerRef(const WsfPlatform *platform, const bool log_errors=true)
Definition WsfBMUtils.cpp:780
static WsfBattleManager * FindAttachedBattleManagerRef2(const WsfPlatform *platform, const bool log_errors=false)
Definition WsfBMUtils.cpp:814
Definition WsfBMWeaponsManager.hpp:50
Definition WsfBattleManager.hpp:61
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
const std::string & GetType() const
Definition WsfObject.cpp:243
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual WsfObject * Clone() const =0
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
Definition WsfTrackId.hpp:33
Definition WsfTrackManager.hpp:62
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeapon.hpp:63
Definition WsfAssetManager.hpp:34
Copyrights Multiple, All Rights Reserved