WSF
WsfMilEventPipe.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 WSFMILEVENTPIPE_HPP
13#define WSFMILEVENTPIPE_HPP
14
17#include "WsfEventPipe.hpp"
20class WsfSensor;
21class WsfTask;
22class WsfTrack;
23#include "WsfWeapon.hpp"
26
27class WsfMilEventPipeWeaponUpdateEvent;
28
29#define JAM_CHANGE_WORKAROUND_NECESSARY 1
30
32{
33public:
34 static void RegisterEvents(WsfEventPipeExtension& aEventPipeExtension);
35 static void RegisterMessages(UtPackSerializer* aSerializer);
36 WsfMilEventPipe(WsfEventPipeInterface* aEventPipeInterfacePtr);
37
38 void GetAdditionalDE_Info(WsfDirectedEnergyWeapon* aWeaponPtr, WsfPlatform* aTargetPtr, std::string& aInfo);
39
40 void PlatformKilled(double aSimTime, WsfPlatform* aPlatformPtr);
41
42 void UpdateSubscriptions(const WsfEventPipeOptions& aNewCombinedOptions,
43 const WsfEventPipeOptions& aPreviousCombinedOptions) override;
44
45 void WeaponFinalOutgoingCheck(double aSimTime, WsfWeaponEngagement* aEngagementPtr);
46
47 void WeaponFireAborted(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTargetTrackPtr, double aQuantity);
48
49 void WeaponFireRequested(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTargetTrackPtr, double aQuantity);
50
51 void WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTargetTrackPtr);
52
53 // void WeaponHit(double aSimTime,
54 // const WsfWeaponEngagement* aEngagementPtr,
55 // WsfPlatform* aTargetPtr);
56
57 void WeaponKilled(double aSimTime, WsfWeapon* aWeaponPtr);
58
59 void WeaponModeActivated(double aSimTime, WsfWeapon* aWeaponPtr, WsfWeapon::WsfWeaponMode* aModePtr);
60
61 void WeaponModeDeactivated(double aSimTime, WsfWeapon* aWeaponPtr, WsfWeapon::WsfWeaponMode* aModePtr);
62
63 // void WeaponMissed(double aSimTime,
64 // const WsfWeaponEngagement* aEngagementPtr,
65 // WsfPlatform* aTargetPtr);
66
67 void WeaponNonOperational(double aSimTime, WsfWeapon* aWeaponPtr);
68
69 void WeaponOperational(double aSimTime, WsfWeapon* aWeaponPtr);
70
71 // void WeaponReloadStarted(double aSimTime,
72 // WsfWeapon* aWeaponPtr);
73 //
74 // void WeaponReloadEnded(double aSimTime,
75 // WsfWeapon* aWeaponPtr);
76
77 void WeaponQuantityChanged(double aSimTime, WsfWeapon* aWeaponPtr);
78
79 void WeaponSelected(double aSimTime, WsfWeapon* aWeaponPtr, WsfTrack* aTargetTrackPtr = nullptr, int aStoreId = 0);
80
81 void WeaponTerminated(double aSimTime, const WsfWeaponEngagement* aEngagementPtr);
82
83 void WeaponTurnedOff(double aSimTime, WsfWeapon* aWeaponPtr);
84
85 void WeaponTurnedOn(double aSimTime, WsfWeapon* aWeaponPtr);
86
87 void SendModeActive(double aSimTime, WsfWeapon* aSensorPtr, WsfWeapon::WsfWeaponMode* aModePtr, bool aActive);
88
89 void TaskAssigned(double aSimTime, const WsfTask* aTaskPtr, const WsfTrack* aTrackPtr);
90
91 void TaskCanceled(double aSimTime, const WsfTask* aTaskPtr);
92
93 void TaskCompleted(double aSimTime, const WsfTask* aTaskPtr, WsfStringId aStatus);
94
95 void QuantumTaskerUpdate(double aSimTime, WsfQuantumTaskerProcessor* aProcessor);
96
97
98 // void ImplicitWeaponBeginEngagement(double aSimTime,
99 // WsfImplicitWeapon* aWeaponPtr,
100 // const WsfWeaponEngagement* aEngagementPtr);
101 //
102 // void ImplicitWeaponEndEngagement(double aSimTime,
103 // WsfImplicitWeapon* aWeaponPtr,
104 // const WsfWeaponEngagement* aEngagementPtr);
105
106 void JammingAttempt(double aSimTime, WsfEM_Xmtr* aXmtrPtr, WsfEM_Rcvr* aRcvrPtr, WsfEM_Interaction& aResult);
107
108 void JammingRequestCanceled(double aSimTime,
109 WsfWeapon* aWeaponPtr,
110 double aFrequency,
111 double aBandwidth,
112 std::size_t aTargetIndex);
113
114 void JammingRequestInitiated(double aSimTime,
115 WsfWeapon* aWeaponPtr,
116 double aFrequency,
117 double aBandwidth,
118 WsfStringId aTechniqueId,
119 std::size_t aTargetIndex);
120
121 void JammingRequestUpdated(double aSimTime,
122 WsfWeapon* aWeaponPtr,
123 double aFrequency,
124 double aBandwidth,
125 WsfStringId aTechniqueId,
126 std::size_t aTargetIndex);
127 void UpdateWeaponArticulation(double aSimTime, size_t aPlatformId, WsfStringId& aSensorNameId);
128
129private:
130 void SendWeaponStatus(double aSimTime, WsfWeapon* aWeaponPtr);
131 void PublishMode(double aSimTime, WsfWeapon* aWeaponPtr, WsfWeapon::WsfWeaponMode* aModePtr);
132
133 void PublishAntennaData(WsfEventPipe::BeamDefinition& bd,
134 WsfEM_Antenna* aAntennaPtr,
135 WsfArticulatedPart* aWeaponPtr,
136 WsfAntennaPattern* aAntennaPatternPtr,
137 double aFreq) const;
138
139 void Send(double aSimTime, const WsfPlatform& aPlatform, std::unique_ptr<WsfEventPipe::MsgBase> aMessagePtr)
140 {
141 mEventPipePtr->SendDependent(aSimTime, aPlatform, std::move(aMessagePtr));
142 }
143
144 WsfSimulation* mSimulationPtr;
145 UtCallbackHolder mBaseCallbacks;
146 WsfEventPipeInterface* mEventPipePtr;
147
148 UtCallbackHolder mTaskCallback;
149 UtCallbackHolder mJammingCallback;
150
151 int cBASE_DATA;
152 int cTASK;
153 int cQUANTUMTASK;
154 int cJAMMING;
155
156 using WeaponModeIdentifier =
157 std::pair<unsigned int, std::string>; // identify a sensor mode with sensor unique id and mode name
158 std::set<WeaponModeIdentifier> mModeSet;
159 std::map<unsigned int, WsfMilEventPipeWeaponUpdateEvent*> mWeaponUpdateEvents;
160#ifdef JAM_CHANGE_WORKAROUND_NECESSARY
161 std::map<std::pair<size_t, std::string>, std::map<size_t, int>> mJamList;
162#endif
163};
164#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition UtPack.hpp:137
Definition WsfAntennaPattern.hpp:35
Definition WsfArticulatedPart.hpp:36
Definition WsfDirectedEnergyWeapon.hpp:27
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_Xmtr.hpp:55
Scenario extension for event pipe. Reads the input file.
Definition WsfEventPipe.hpp:36
Definition WsfEventPipeInterface.hpp:87
Definition WsfEventPipeLogger.hpp:20
Definition WsfEventPipeOptions.hpp:23
void PlatformKilled(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfMilEventPipe.cpp:214
void TaskAssigned(double aSimTime, const WsfTask *aTaskPtr, const WsfTrack *aTrackPtr)
Definition WsfMilEventPipe.cpp:528
void WeaponFireAborted(double aSimTime, WsfWeapon *aWeaponPtr, const WsfTrack *aTargetTrackPtr, double aQuantity)
void WeaponModeActivated(double aSimTime, WsfWeapon *aWeaponPtr, WsfWeapon::WsfWeaponMode *aModePtr)
Definition WsfMilEventPipe.cpp:412
void GetAdditionalDE_Info(WsfDirectedEnergyWeapon *aWeaponPtr, WsfPlatform *aTargetPtr, std::string &aInfo)
void JammingRequestUpdated(double aSimTime, WsfWeapon *aWeaponPtr, double aFrequency, double aBandwidth, WsfStringId aTechniqueId, std::size_t aTargetIndex)
Definition WsfMilEventPipe.cpp:833
void WeaponNonOperational(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:476
WsfMilEventPipe(WsfEventPipeInterface *aEventPipeInterfacePtr)
Definition WsfMilEventPipe.cpp:104
void WeaponTurnedOff(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:422
void JammingRequestInitiated(double aSimTime, WsfWeapon *aWeaponPtr, double aFrequency, double aBandwidth, WsfStringId aTechniqueId, std::size_t aTargetIndex)
Definition WsfMilEventPipe.cpp:809
void UpdateWeaponArticulation(double aSimTime, size_t aPlatformId, WsfStringId &aSensorNameId)
Definition WsfMilEventPipe.cpp:386
static void RegisterEvents(WsfEventPipeExtension &aEventPipeExtension)
Definition WsfMilEventPipe.cpp:85
void TaskCompleted(double aSimTime, const WsfTask *aTaskPtr, WsfStringId aStatus)
Definition WsfMilEventPipe.cpp:558
void QuantumTaskerUpdate(double aSimTime, WsfQuantumTaskerProcessor *aProcessor)
Definition WsfMilEventPipe.cpp:704
void WeaponTurnedOn(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:456
void WeaponKilled(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:481
void JammingAttempt(double aSimTime, WsfEM_Xmtr *aXmtrPtr, WsfEM_Rcvr *aRcvrPtr, WsfEM_Interaction &aResult)
void WeaponFinalOutgoingCheck(double aSimTime, WsfWeaponEngagement *aEngagementPtr)
void TaskCanceled(double aSimTime, const WsfTask *aTaskPtr)
Definition WsfMilEventPipe.cpp:545
void WeaponModeDeactivated(double aSimTime, WsfWeapon *aWeaponPtr, WsfWeapon::WsfWeaponMode *aModePtr)
Definition WsfMilEventPipe.cpp:417
void WeaponQuantityChanged(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:687
void SendModeActive(double aSimTime, WsfWeapon *aSensorPtr, WsfWeapon::WsfWeaponMode *aModePtr, bool aActive)
Definition WsfMilEventPipe.cpp:226
void WeaponFired(double aSimTime, const WsfWeaponEngagement *aEngagementPtr, const WsfTrack *aTargetTrackPtr)
Definition WsfMilEventPipe.cpp:653
void WeaponOperational(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfMilEventPipe.cpp:471
void WeaponTerminated(double aSimTime, const WsfWeaponEngagement *aEngagementPtr)
Definition WsfMilEventPipe.cpp:571
void JammingRequestCanceled(double aSimTime, WsfWeapon *aWeaponPtr, double aFrequency, double aBandwidth, std::size_t aTargetIndex)
Definition WsfMilEventPipe.cpp:784
void UpdateSubscriptions(const WsfEventPipeOptions &aNewCombinedOptions, const WsfEventPipeOptions &aPreviousCombinedOptions) override
Definition WsfMilEventPipe.cpp:114
void WeaponSelected(double aSimTime, WsfWeapon *aWeaponPtr, WsfTrack *aTargetTrackPtr=nullptr, int aStoreId=0)
void WeaponFireRequested(double aSimTime, WsfWeapon *aWeaponPtr, const WsfTrack *aTargetTrackPtr, double aQuantity)
static void RegisterMessages(UtPackSerializer *aSerializer)
A callback from WsfEventPipeInterface::AddedToSimulation to register our message types with the seria...
Definition WsfMilEventPipe.cpp:99
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfQuantumTaskerProcessor.hpp:55
Definition WsfSensor.hpp:92
The main controller for a simulation.
Definition WsfSimulation.hpp:109
A class that defines a task to be performed.
Definition WsfTask.hpp:28
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEffects.hpp:48
Definition WsfWeaponEngagement.hpp:43
A 'mode' of the weapon.
Definition WsfWeapon.hpp:78
Definition WsfWeapon.hpp:63
Copyrights Multiple, All Rights Reserved