WSF
WsfDefaultAssetManagerImpl.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/*******************************************************************************
10*
11* File: WsfDefaultAssetManagerImpl.hpp
12*
13* Classification: UNCLASSIFIED
14*
15* Details:
16*
17* Contract Number:
18* Contractor Name: Radiance Technologies
19* Address: 350 Wynn Drive
20* Huntsville, AL 35805
21*
22* Abstract: This class provides default implementations in C++ for
23* what could be overridden in script for the Asset Manager base class.
24* The intention was to provide the classical implementation of what was originally
25* done in script so default usage of the processor works without supplemental scripting.
26*
27*******************************************************************************/
28
29#ifndef WSF_DEFAULT_ASSET_MANAGER_IMPL_HPP
30#define WSF_DEFAULT_ASSET_MANAGER_IMPL_HPP
31
32#include <memory>
33
34#include <WsfBMCommon.hpp>
36#include <WsfBMTrackMessage.hpp>
39#include <WsfBMCueMessage.hpp>
40
41// forward declarations
42class WsfPlatform;
43class WsfWeapon;
46class WsfAssetManager;
47class WsfSimulation;
48class WsfLocalTrack;
49class WsfMessage;
55
56namespace il
57{
58 class AssetManagerInterface;
59 class BattleManagerInterface;
60 class assetMap;
61 class assetRecord;
62}
63
64class WSF_IADS_C2_LIB_EXPORT WsfDefaultAssetManagerImpl
65{
66 public:
67 WsfDefaultAssetManagerImpl(std::weak_ptr<il::logger::GlobalLogger> aGlobalLogger);
69
70 virtual bool ProcessInput(UtInput& aInput);
71 virtual void Initialize(WsfAssetManager* am);
72 virtual void Initialize2(WsfAssetManager* am);
73
74 virtual void on_update(const double sim_time_s, WsfPlatform* this_plat, WsfAssetManager* am);
75 virtual bool on_message(const double sim_time_s, const WsfMessage& message, WsfAssetManager* am);
76 virtual void LocalTrackDropped(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, WsfAssetManager* am);
77 virtual void LocalTrackInitiated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr, WsfAssetManager* am);
78 virtual void LocalTrackUpdated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr, WsfAssetManager* am);
79
80 protected:
81 virtual void PrintStatus(WsfAssetManager* am, const bool direct_only = false) const;
82
83 private:
84 virtual void InitializeIADSChainOfCommand(const double sim_time_s, WsfPlatform* this_plat, WsfAssetManager* am);
85 virtual void SetupIADSLaydown(WsfPlatform* initing_plat, WsfAssetManager* am);
86 virtual void EstablishNewCmdrSubRelationship(const WsfPlatform* new_plat, std::shared_ptr<il::assetRecord>& new_asset, il::assetMap& asset_map);
87 virtual std::shared_ptr<il::assetRecord> InitAssetRecord(const WsfPlatform* plat, il::assetMap& asset_map, WsfAssetManager* am);
88 virtual std::shared_ptr<il::assetRecord> InitializeAssetAndSubordinates(const WsfPlatform* plat, il::assetMap& asset_map, WsfAssetManager* am);
89 virtual void InitializeAssetCommanders(const WsfPlatform* plat, il::assetMap& asset_map, WsfAssetManager* am);
90 virtual void InitializeAssetDAZones(const WsfPlatform* plat, std::shared_ptr<il::assetRecord>& asset_record) const;
91 virtual void InitializeAssetZones(const WsfPlatform* plat, std::shared_ptr<il::assetRecord>& asset_record) const;
92
93 // this will go away when asset managers are full supported on all platforms and HELIOS C2 status messages are flowing
94 virtual void InitializeWeaponZones(const WsfPlatform* owning_plat, WsfWeapon* weapon, WsfBMWeaponInfoRecord* weapon_interface);
95
96 // Perceptions
97 virtual bool IsAssetPerceptionValid(WsfSimulation* sim, const WsfBMStatusMessage& status) const;
98 virtual void HandleAssetStatusUpdate(WsfAssetManager* am, const WsfBMStatusMessage& status);
99 virtual std::size_t UpdateThreatPerceptions(const double sim_time_s, const WsfPlatform* this_plat, WsfAssetManager* am);
100 virtual bool UpdateTrack(const double sim_time_s, const WsfLocalTrack* track, WsfAssetManager* am);
101 virtual WsfBMTrackMessage ConvertTrackUpdate(const double sim_time_s, WsfAssetManager* am, const WsfLocalTrack* track) const;
102 virtual WsfBMTrackMessage ConvertTrackDrop(const WsfSimulation* sim, const WsfLocalTrack* drop_track) const;
103
104 // Message handling
105 virtual void HandleAssignmentStatusUpdate(const double sim_time_s, const WsfBMAssignmentStatusMessage& message, WsfAssetManager* am);
106 virtual void HandleAssignmentMessage(const double aSimTime, const WsfBMAssignmentMessage& message, WsfAssetManager* am);
107 virtual void HandleSensorCueMessage(const double aSimTime, WsfAssetManager* am, const WsfBMCueMessage& message);
108 virtual void HandleAssignmentTrackMessage(const double aSimTime, WsfAssetManager* am, const WsfBMAssignmentTrackMessage& message);
109 virtual bool IsSelfAssignment(const WsfBMAssignmentMessage& message, WsfAssetManager* am) const;
110 virtual bool IsSelfCue(const WsfBMCueMessage& message, WsfAssetManager* am) const;
111 virtual bool CorrelateMasterTrackWithAssignment(WsfBMAssignmentMessage& message, WsfAssetManager* am);
112 virtual bool CorrelateMasterTrackWithCue(WsfBMCueMessage& message, WsfAssetManager* am);
113 virtual void AddDelegation(const double sim_time_s, const WsfBMAssignmentMessage& message, WsfAssetManager* am);
114 virtual void CheckPendingAssignmentCorrelations(const double sim_time_s, WsfSimulation* sim, WsfAssetManager* am);
115 virtual void CheckPendingCueCorrelations(const double sim_time_s, WsfSimulation* sim, WsfAssetManager* am);
116 virtual bool ShouldDelayIncomingMessage(double aSimTime, const WsfMessage& aMessage, const WsfAssetManager* am, double& amount_s);
117
118 bool m_iads_initialized;
119
120 WsfBattleManager* m_bm_ref;
121 WsfBMDisseminateC2* m_dc2_ref;
122 WsfBMWeaponsManager* m_wm_ref;
123 WsfBMSensorsManager* m_sm_ref;
124 bool m_threat_check_believed_alive;
125 double m_max_track_grouping_distance_m;
126
127 std::vector<std::pair<double, WsfBMAssignmentMessage>> m_uncorrelated_assignments; // time/TaskAssign pair
128 std::vector<std::pair<double, WsfBMCueMessage>> m_uncorrelated_cues;
129
130 std::weak_ptr<il::logger::GlobalLogger> mGlobalLogger;
131
132 // friends
133 friend class WsfAssetManager;
134};
135
136#endif
Definition WsfAssetManager.hpp:63
Definition WsfBMAssignmentMessage.hpp:43
Definition WsfBMAssignmentStatusMessage.hpp:44
Definition WsfBMAssignmentTrackMessage.hpp:41
Definition WsfBMCueMessage.hpp:43
Definition WsfBMDisseminateC2.hpp:53
Definition WsfBMSensorInfoRecord.hpp:24
Definition WsfBMSensorsManager.hpp:50
Definition WsfBMStatusMessage.hpp:29
Definition WsfBMTrackMessage.hpp:30
Definition WsfBMWeaponInfoRecord.hpp:24
Definition WsfBMWeaponsManager.hpp:50
Definition WsfBattleManager.hpp:61
virtual void PrintStatus(WsfAssetManager *am, const bool direct_only=false) const
Definition WsfDefaultAssetManagerImpl.cpp:155
virtual bool ProcessInput(UtInput &aInput)
Definition WsfDefaultAssetManagerImpl.cpp:105
friend class WsfAssetManager
Definition WsfDefaultAssetManagerImpl.hpp:133
virtual void LocalTrackUpdated(double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr, WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:391
virtual void Initialize2(WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:133
virtual void on_update(const double sim_time_s, WsfPlatform *this_plat, WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:171
virtual void Initialize(WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:128
WsfDefaultAssetManagerImpl(std::weak_ptr< il::logger::GlobalLogger > aGlobalLogger)
Definition WsfDefaultAssetManagerImpl.cpp:79
virtual void LocalTrackDropped(double aSimTime, const WsfLocalTrack *aLocalTrackPtr, WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:367
virtual bool on_message(const double sim_time_s, const WsfMessage &message, WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:276
virtual void LocalTrackInitiated(double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr, WsfAssetManager *am)
Definition WsfDefaultAssetManagerImpl.cpp:374
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
The main controller for a simulation.
Definition WsfSimulation.hpp:109
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