WSF
WsfMilDisInterface.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#ifndef WSFMILDISINTERFACE_HPP
13#define WSFMILDISINTERFACE_HPP
14
15#include "wsf_mil_export.h"
16
17#include <memory>
18#include <vector>
19
20#include "DisEntityId.hpp"
21#include "DisEntityType.hpp"
22#include "DisEventId.hpp"
23#include "UtCallbackHolder.hpp"
26#include "WsfStringId.hpp"
27#include "dis/WsfDisInput.hpp"
28
29class DisBeam;
30class DisSystem;
33class WsfEM_Xmtr;
36class WsfTrack;
37class WsfWeapon;
39class WsfMilExtension;
40
41class WSF_MIL_EXPORT WsfMilDisInterface : public WsfDisComponent
42{
43public:
44 static WsfMilDisInterface* Find(const WsfDisInterface& aDisInterface);
45
46 WsfMilDisInterface(WsfMilExtension* aMilExtensionPtr);
51 ~WsfMilDisInterface() override;
52
53 WsfDisWeaponEvents* GetWeaponEvents() const { return mWeaponEventsPtr; }
54
56
57 WsfComponent* CloneComponent() const override;
58 WsfStringId GetComponentName() const override { return "#WsfMilDisInterface"; }
59 const int* GetComponentRoles() const override
60 {
61 static const int roles[] = {cWSF_COMPONENT_MIL_DIS_EXTENSION, 0};
62 return roles;
63 }
64 void* QueryInterface(int aRole) override;
66
67 void AddedToDisInterface(WsfDisInterface* aDisInterfacePtr) override;
68
69 bool Initialize(double aSimTime) override;
70 bool ProcessInput(UtInput& aInput) override;
71
72 bool TransferPlatformToInternalControl(double aSimTime,
73 WsfPlatform* aPlatformPtr,
74 DisEntityId& aEntityId,
75 DisEntityType& aEntityType) override;
76
77 bool TransferPlatformToExternalControl(double aSimTime, WsfPlatform* aPlatformPtr) override;
78
79 void PrepareComponent(double aSimTime) override;
80
81 void PlatformCreated(WsfDisPlatform* aPlatformPtr) override;
82
83 bool UpdateEmissionSystem(WsfPlatform* aPlatformPtr, WsfDisEmission* aEmissionPtr, DisSystem* aSystemPtr) override;
84
85 bool AddEmissionSystem(WsfPlatform* aPlatformPtr, WsfDisEmission* aEmissionPtr, DisSystem* aSystemPtr) override;
86
87 bool UpdateXmtrFromBeam(WsfDisEmission* aEmissionPtr, DisBeam* aBeamPtr, WsfEM_Xmtr* aXmtrPtr, bool& aBeamOn) override;
88
89 void UpdateWeapon(WsfDisEmission* aEmissionPtr, DisSystem* aSystemPtr, WsfWeapon* aWeaponPtr);
90
91 void RemoveXmtrs(WsfDisEmission* aEmissionPtr, DisSystem* aSystemPtr, WsfWeapon* aWeaponPtr);
92
95 {
96 public:
97 DisEntityId mFiringDisEntityId;
98 DisEntityType mWeaponDisEntityType;
100 };
101 using IncomingTransferList = std::vector<IncomingTransfer>;
103 {
104 public:
106 };
107 using OutgoingTransferList = std::vector<OutgoingTransfer>;
108
109 const IncomingTransferList& GetIncomingTransferList() const { return sIncomingTransferList; }
110
111 const OutgoingTransferList& GetOutgoingTransferList() const { return sOutgoingTransferList; }
112
113 WsfDisInterface* GetDis() const { return mDisInterfacePtr; }
114 WsfMilExtension* GetMilExtension() const { return mMilExtensionPtr; }
115 const WsfScenario& GetScenario() const;
116
117 void UpdateSystemFromWeapon(WsfWeapon* aWeaponPtr, DisSystem* aSystemPtr);
118 void UpdateBeamFromXmtr(WsfEM_Xmtr& aXmtr, DisBeam* aBeamPtr, double aMinAz, double aMaxAz, double aMinEl, double aMaxEl);
119
120 void AddImplicitWeaponEngagement(WsfWeaponEngagement* aEngagement, const DisEventId& aId);
121
122 WsfWeaponEngagement* FindImpicitWeaponEngagement(const DisEventId& aId) const;
123
124 void AddDirectedEnergyWeapon(std::unique_ptr<WsfDirectedEnergyWeapon> aWeaponPtr, const DisEventId& aId);
125
126 WsfDirectedEnergyWeapon* FindDirectedEnergyWeapon(const DisEventId& aId) const;
127
128 void DeleteDirectedEnergyWeapon(const DisEventId& aId);
129
130private:
131 void WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTrackPtr);
132
133 void DirectedEnergyWeaponBeginShot(double aSimTime,
134 WsfDirectedEnergyWeapon* aWeaponPtr,
135 const WsfWeaponEngagement* aEngagementPtr);
136
137 void DirectedEnergyWeaponUpdateShot(double aSimTime,
138 WsfDirectedEnergyWeapon* aWeaponPtr,
139 const WsfWeaponEngagement* aEngagementPtr);
140
141 void DirectedEnergyWeaponEndShot(double aSimTime,
142 WsfDirectedEnergyWeapon* aWeaponPtr,
143 const WsfWeaponEngagement* aEngagementPtr);
144
145 void ImplicitWeaponEndEngagement(double aSimTime,
146 WsfImplicitWeapon* aImplicitWeapon,
147 const WsfWeaponEngagement* aEngagementPtr);
148
149 void WeaponTerminated(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
150
151 void WeaponTurnedOff(double aSimTime, WsfWeapon* aWeaponPtr);
152
153 void WeaponTurnedOn(double aSimTime, WsfWeapon* aWeaponPtr);
154
155 void JammingRequestCanceled(double aSimTime, WsfWeapon* aWeaponPtr, double aFrequency, double aBandwidth, size_t aTargetIndex);
156
157 void JammingRequestInitiated(double aSimTime,
158 WsfWeapon* aWeaponPtr,
159 double aFrequency,
160 double aBandwidth,
161 WsfStringId aTechniqueId,
162 size_t aTargetIndex);
163
164 void JammingRequestUpdated(double aSimTime,
165 WsfWeapon* aWeaponPtr,
166 double aFrequency,
167 double aBandwidth,
168 WsfStringId aTechniqueId,
169 size_t aTargetIndex);
170 // Inputs:
171 bool mSuppressDirectedEnergyData;
172 WsfDisInterface* mDisInterfacePtr;
173 WsfMilExtInterface* mExtMilPtr;
174 WsfDisLaserDesignations* mLaserDesignationsPtr;
175 WsfDisWeaponEvents* mWeaponEventsPtr;
176 WsfMilExtension* mMilExtensionPtr;
177
179 IncomingTransferList sIncomingTransferList;
180
182 OutgoingTransferList sOutgoingTransferList;
183
184 using ImplicitWeaponEngagementMap = std::map<DisEventId, WsfWeaponEngagement*>;
185 using DirectedEnergyWeaponMap = std::map<DisEventId, std::unique_ptr<WsfDirectedEnergyWeapon>>;
186
187 ImplicitWeaponEngagementMap mImplicitWeaponEngagementMap;
188 DirectedEnergyWeaponMap mDirectedEnergyWeaponMap;
189
190 UtCallbackHolder mCallbacks;
191};
192
194
195#endif
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_MIL_DIS_EXTENSION
Definition WsfMilComponentRoles.hpp:22
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfComponent.hpp:39
virtual bool Initialize(double aSimTime)
Definition WsfComponent.cpp:45
virtual bool ProcessInput(UtInput &aInput)
Definition WsfComponent.cpp:100
virtual WsfComponent * CloneComponent() const =0
virtual void * QueryInterface(int aRole)=0
Definition WsfDirectedEnergyWeapon.hpp:27
Definition WsfDisInput.hpp:42
virtual void PrepareComponent(double aSimTime)
Definition WsfDisInput.hpp:44
virtual void AddedToDisInterface(WsfDisInterface *aDisInterfacePtr)
Definition WsfDisInput.hpp:45
virtual bool AddEmissionSystem(WsfPlatform *aPlatformPtr, WsfDisEmission *aEmissionPtr, DisSystem *aSystemPtr)
Definition WsfDisInput.hpp:61
virtual bool TransferPlatformToExternalControl(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfDisInput.hpp:53
virtual bool UpdateXmtrFromBeam(WsfDisEmission *aEmissionPtr, DisBeam *aBeamPtr, WsfEM_Xmtr *aXmtrPtr, bool &aBeamOn)
Definition WsfDisInput.hpp:66
virtual bool TransferPlatformToInternalControl(double aSimTime, WsfPlatform *aPlatformPtr, DisEntityId &aEntityId, DisEntityType &aEntityType)
Definition WsfDisInput.hpp:46
virtual void PlatformCreated(WsfDisPlatform *aPlatformPtr)
Definition WsfDisInput.hpp:54
virtual bool UpdateEmissionSystem(WsfPlatform *aPlatformPtr, WsfDisEmission *aEmissionPtr, DisSystem *aSystemPtr)
Definition WsfDisInput.hpp:56
Definition WsfDisEmission.hpp:37
Definition WsfDisInterface.hpp:83
Definition WsfDisLaserDesignations.hpp:34
An internal class used by WsfDisInterface to maintain information about a platform.
Definition WsfDisPlatform.hpp:67
A Helper class for WsfDisInterface to process weapon launch and termination events.
Definition WsfDisWeaponEvents.hpp:46
Definition WsfEM_Xmtr.hpp:55
Definition WsfImplicitWeapon.hpp:31
Definition WsfMilDisInterface.hpp:42
static WsfMilDisInterface * Find(const WsfDisInterface &aDisInterface)
Definition WsfMilDisInterface.cpp:474
WsfMilDisInterface(WsfMilExtension *aMilExtensionPtr)
Definition WsfMilDisInterface.cpp:47
WsfDisWeaponEvents * GetWeaponEvents() const
Definition WsfMilDisInterface.hpp:53
std::vector< IncomingTransfer > IncomingTransferList
Definition WsfMilDisInterface.hpp:101
WsfMilExtension * GetMilExtension() const
Definition WsfMilDisInterface.hpp:114
WsfMilDisInterface(WsfMilDisInterface &&)=default
WsfDisInterface * GetDis() const
Definition WsfMilDisInterface.hpp:113
WsfMilDisInterface & operator=(const WsfMilDisInterface &)=delete
WsfStringId GetComponentName() const override
Definition WsfMilDisInterface.hpp:58
std::vector< OutgoingTransfer > OutgoingTransferList
Definition WsfMilDisInterface.hpp:107
const IncomingTransferList & GetIncomingTransferList() const
Definition WsfMilDisInterface.hpp:109
const OutgoingTransferList & GetOutgoingTransferList() const
Definition WsfMilDisInterface.hpp:111
WsfMilDisInterface & operator=(WsfMilDisInterface &&)=default
const int * GetComponentRoles() const override
Definition WsfMilDisInterface.hpp:59
Definition WsfMilExtInterface.hpp:23
Definition WsfMil.hpp:63
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
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
Definition WsfWeapon.hpp:63
Incoming weapon transfer definition.
Definition WsfMilDisInterface.hpp:95
DisEntityId mFiringDisEntityId
Definition WsfMilDisInterface.hpp:97
DisEntityType mWeaponDisEntityType
Definition WsfMilDisInterface.hpp:98
WsfStringId mWeaponSystemType
Definition WsfMilDisInterface.hpp:99
Definition WsfMilDisInterface.hpp:103
WsfStringId mWeaponSystemType
Definition WsfMilDisInterface.hpp:105
Copyrights Multiple, All Rights Reserved