WSF
WsfWeaponTaskManager.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 2003-2015 The Boeing 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// Updated by Infoscitex, a DCS Company
13// ****************************************************************************
14
15#ifndef WSFWEAPONTASKMANAGER_HPP
16#define WSFWEAPONTASKMANAGER_HPP
17
18#include "wsf_mil_export.h"
19
21#include "WsfTaskManager.hpp"
22#include "WsfTaskProcessor.hpp"
23class WsfTrack;
24class WsfTrackId;
25class WsfWeapon;
27
42class WSF_MIL_EXPORT WsfWeaponTaskManager : public WsfTaskManagerComponent
43{
44public:
45 static void RegisterComponentFactory(WsfScenario& aScenario);
46 static WsfWeaponTaskManager* Find(const WsfProcessor& aParent);
48
52 ~WsfWeaponTaskManager() override = default;
53
55
56 WsfComponent* CloneComponent() const override;
57 WsfStringId GetComponentName() const override;
58 const int* GetComponentRoles() const override;
59 void* QueryInterface(int aRole) override;
61
63
64 bool Initialize(double aSimTime) override;
65 bool ProcessInput(UtInput& aInput) override;
67
69
70 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
71 bool AcquireResource(double aSimTime, WsfTask& aTask, const WsfTrack& aTrack, bool& aStatusOk) override;
72 bool ReleaseResource(double aSimTime, WsfTask& aTask) override;
73 bool AssignTask(double aSimTime, const WsfTrack& aTrack, const WsfTask& aTask, bool aLockTrack = true) override;
74
75 void PurgeReceivedTask(double aSimTime, WsfTask& aTask) override;
76 void PurgeTransmittedTask(double aSimTime, WsfTask& aTask) override;
77
78 void TaskCorrelated(double aSimTime, WsfTask& aTask) override;
79 void TaskCanceled(double aSimTime, WsfTask& aTask) override;
80
81 void TrackDropped(double aSimTime, const WsfTrackId& aTrackId) override;
82
83 bool ProcessAssociationMessage(double aSimTime, const WsfAssociationMessage& aMessage) override;
84 bool ProcessTaskStatusMessage(double aSimTime, const WsfTaskStatusMessage& aMessage) override;
86
90
91 using WeaponTaskLogEntry = std::set<std::pair<size_t, WsfStringId>>;
92 using WeaponTaskLogMap = std::map<WsfTrackId, WeaponTaskLogEntry>;
94
96
97 virtual bool AbortFiring(double aSimTime, const WsfTrackId& aTrackId);
99
100
102
103 virtual void WeaponFireAborted(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTargetTrackPtr, double aQuantity);
104
105 virtual void WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTargetTrackPtr);
106
107 void WeaponTerminated(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
109
110
112
113 void StartingWeaponTask(double aSimTime, const WsfTask& aTask);
115
117
118 double TimeWeaponLastFiredFor(const WsfTrackId& aTrackId);
119 double TimeWeaponLastTerminatedFor(const WsfTrackId& aTrackId);
120 int WeaponsActiveFor(const WsfTrackId& aTrackId);
121 int WeaponsActiveFor(const WsfTrackId& aTrackId, WsfPlatform* aPlatformPtr);
122 int SalvosFiredAt(const WsfTrackId& aTrackId);
123 int RoundsFiredAt(const WsfTrackId& aTrackId);
124 int RoundsFiredAt(const WsfTrackId& aTrackId, WsfPlatform* aPlatformPtr);
126
128 static UtCallbackListN<void(const WsfWeapon*, bool&)> IsWeaponReadyForLaunch;
129
132
133 void UplinkStart(double aSimTime, unsigned int aTaskId);
135
136 bool IsAutoUplink() const { return mAutoUplink; }
137 // Allow the auto up-link flag to be turned off during the run.
138 // BAR/AJM: Bug in auto up-link logic 06/13. Need it off when running
139 // with net logic.
140 // Bug: All targets are being up-linked to the weapon and not just the
141 // current target.
142 void SetAutoUplink(bool aBool) { mAutoUplink = aBool; }
143
144 WsfStringId GetAutoUplinkPlatformNameId() const { return mAutoUplinkPlatform; }
145
146 void SetAutoUplinkPlatformNameId(WsfStringId aAutoUplinkPlatform) { mAutoUplinkPlatform = aAutoUplinkPlatform; }
147
148private:
149 void BeginAutoUplink(double aSimTime, const WsfTrack& aTrack, const WsfTask& aFireTask);
150
151 bool TaskWaitToTransmit(double aSimTime, const WsfTrack& aTrack, const WsfTask& aTask);
152
154 WsfTaskManager* mTaskManagerPtr;
155
156 UtCallbackHolder mCallbacks;
157
158 WeaponTaskLogMap mWeaponTaskLog;
159
162 WsfTaskManager::TaskList mWaitingTaskList;
163
165 WsfStringId mDefaultUplinkSource;
166
168 WsfStringId mDefaultUplinkComm;
169
171 double mDefaultUplinkDelay;
172
174 double mUplinkSendInterval;
175
177 WsfStringId mAutoUplinkPlatform;
178
180 bool mAutoUplink;
181};
182
184
185#endif
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_WEAPON_TASK_MANAGER
WsfTaskManager extension for weapons.
Definition WsfMilComponentRoles.hpp:20
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfAssociationMessage.hpp:43
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
virtual bool Initialize(double aSimTime)
Definition WsfComponent.cpp:45
virtual bool ProcessInput(UtInput &aInput)
Definition WsfComponent.cpp:100
Definition WsfProcessor.hpp:39
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfTaskManager.hpp:55
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfTaskManager.hpp:60
virtual bool ReleaseResource(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:65
virtual void TaskCorrelated(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:67
virtual bool AcquireResource(double aSimTime, WsfTask &aTask, const WsfTrack &aTrack, bool &aStatusOk)
Definition WsfTaskManager.hpp:61
virtual void TaskCanceled(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:68
virtual bool AssignTask(double aSimTime, const WsfTrack &aTrack, const WsfTask &aTask, bool aLockTrack=true)
Definition WsfTaskManager.hpp:71
virtual void TrackDropped(double aSimTime, const WsfTrackId &aTrackId)
Definition WsfTaskManager.hpp:79
virtual bool ProcessTaskStatusMessage(double aSimTime, const WsfTaskStatusMessage &aMessage)
Definition WsfTaskManager.hpp:82
virtual void PurgeReceivedTask(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:76
virtual void PurgeTransmittedTask(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:77
virtual bool ProcessAssociationMessage(double aSimTime, const WsfAssociationMessage &aMessage)
Definition WsfTaskManager.hpp:81
Definition WsfTaskManager.hpp:98
std::list< WsfTask > TaskList
Definition WsfTaskManager.hpp:109
Definition WsfTaskStatusMessage.hpp:42
A class that defines a task to be performed.
Definition WsfTask.hpp:28
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
Definition WsfWeaponTaskManager.hpp:43
static WsfWeaponTaskManager * FindOrCreate(WsfProcessor &aParent)
Definition WsfWeaponTaskManager.cpp:101
~WsfWeaponTaskManager() override=default
virtual void WeaponFired(double aSimTime, const WsfWeaponEngagement *aEngagementPtr, const WsfTrack *aTargetTrackPtr)
Definition WsfWeaponTaskManager.cpp:1044
std::map< WsfTrackId, WeaponTaskLogEntry > WeaponTaskLogMap
Definition WsfWeaponTaskManager.hpp:92
int RoundsFiredAt(const WsfTrackId &aTrackId)
Definition WsfWeaponTaskManager.cpp:803
int SalvosFiredAt(const WsfTrackId &aTrackId)
Definition WsfWeaponTaskManager.cpp:781
static WsfWeaponTaskManager * Find(const WsfProcessor &aParent)
Find the instance of this component attached to the specified processor.
Definition WsfWeaponTaskManager.cpp:91
void UplinkStart(double aSimTime, unsigned int aTaskId)
Definition WsfWeaponTaskManager.cpp:844
WsfWeaponTaskManager & operator=(const WsfWeaponTaskManager &)=delete
static void RegisterComponentFactory(WsfScenario &aScenario)
Register the component factory that handles input for this component.
Definition WsfWeaponTaskManager.cpp:84
std::set< std::pair< size_t, WsfStringId > > WeaponTaskLogEntry
Definition WsfWeaponTaskManager.hpp:91
virtual bool AbortFiring(double aSimTime, const WsfTrackId &aTrackId)
Definition WsfWeaponTaskManager.cpp:929
WsfStringId GetAutoUplinkPlatformNameId() const
Definition WsfWeaponTaskManager.hpp:144
void StartingWeaponTask(double aSimTime, const WsfTask &aTask)
Definition WsfWeaponTaskManager.cpp:1214
void SetAutoUplinkPlatformNameId(WsfStringId aAutoUplinkPlatform)
Definition WsfWeaponTaskManager.hpp:146
virtual void WeaponFireAborted(double aSimTime, WsfWeapon *aWeaponPtr, const WsfTrack *aTargetTrackPtr, double aQuantity)
Definition WsfWeaponTaskManager.cpp:998
static UtCallbackListN< void(const WsfWeapon *, bool &)> IsWeaponReadyForLaunch
Check for weapon ready states.
Definition WsfWeaponTaskManager.hpp:128
void WeaponTerminated(double aSimTime, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfWeaponTaskManager.cpp:1194
double TimeWeaponLastFiredFor(const WsfTrackId &aTrackId)
Return the simulation time of the most recent weapon firing against the specified track.
Definition WsfWeaponTaskManager.cpp:675
WsfWeaponTaskManager()
Definition WsfWeaponTaskManager.cpp:113
double TimeWeaponLastTerminatedFor(const WsfTrackId &aTrackId)
Return the simulation time of the most recent weapon termination against the specified track.
Definition WsfWeaponTaskManager.cpp:700
bool IsAutoUplink() const
Definition WsfWeaponTaskManager.hpp:136
int WeaponsActiveFor(const WsfTrackId &aTrackId)
Definition WsfWeaponTaskManager.cpp:726
void SetAutoUplink(bool aBool)
Definition WsfWeaponTaskManager.hpp:142
Definition WsfWeapon.hpp:63
Copyrights Multiple, All Rights Reserved