WSF
WsfWeaponServer.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// 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 WSFWEAPONSERVER_HPP
13#define WSFWEAPONSERVER_HPP
14
15#include "wsf_weapon_server_export.h"
16
17#include <functional>
18#include <iostream>
19#include <list>
20#include <map>
21
22#include "DisEntityId.hpp"
23#include "UtAtmosphere.hpp"
24#include "UtCallback.hpp"
25#include "UtCallbackHolder.hpp"
26#include "WsfEvent.hpp"
29#include "WsfStringId.hpp"
30#include "WsfThread.hpp"
31
32// class GenUDP_IO;
33class DisDatumSpec;
34class GenTCP_IO;
35class PakTCP_Server;
36class WsfDisPlatform;
37class WsfDisSetData;
38class WsfPlatform;
39class WsfTrack;
40class WsfWeapon;
42class UtInput;
43class UtCallback;
44class WsfDisInterface;
45
46struct WSF_WEAPON_SERVER_EXPORT WsfWeaponServerInput
47{
49
50 // Mapping for weapon keyword to AFNES weapon type
51 // Key = user-defined keyword
52 // Data = WSF weapon type
53 std::map<WsfStringId, WsfStringId> mWeaponNameMapTheirsToOurs;
54
55 // Mapping for weapon station to weapon type on station
56 // Key = ShooterNameId,Station number
57 // Data = WSF weapon type
58 std::map<std::pair<WsfStringId, WsfStringId>, WsfStringId> mPlatformStationToOurWeaponName;
59
60 // Weapon mapping for LARs.
61 // Key = Weapon enumeration
62 // Data = WSF weapon type
63 std::map<int, WsfStringId> mWeaponEnumToWeaponType;
64
65 // Map to match track number to external entities
66 // Key = track number
67 // Data = DisEntityId
68 std::map<unsigned int, DisEntityId> mTrackNumberToDisEntityIdMap;
69
70 bool mHostTrue_ClientFalse; // configuration (is this server a client or a host)
71 bool mWeaponServerIncluded; // weapon server enabled
73 std::string mErrorString;
74 std::string mWarningString;
75 std::string mOutGoingHostName;
76 unsigned int mOutGoingPort;
77 std::list<WsfStringId> mOutgoingWeaponTypes;
78 unsigned int mPort; // listen for connections on this port
79 std::string mHostName; // listen for connections on this host
80
81 // Test parameters for default return LAR data, used to test communication link only
82 double mTestRMax;
84 double mTestRNe;
86 double mTestRMin;
89 unsigned int mLarMsgTypeIdIn;
90 unsigned int mLarMsgTypeIdOut;
93};
94
95class WSF_WEAPON_SERVER_EXPORT WsfWeaponServerExtension : public WsfScenarioExtension, public WsfWeaponServerInput
96{
97public:
99 bool ProcessInput(UtInput& aInput) override;
100 void SimulationCreated(WsfSimulation& aSimulation) override;
101};
102
104// The weapon server is not thread-safe. Taking out that functionality until it gets reworked.
105// TODO: Make thread-safe public WsfThread
106class WSF_WEAPON_SERVER_EXPORT WsfWeaponServer : public WsfWeaponServerInput, public WsfSimulationExtension
107{
108public:
109 typedef UtCallbackListN<void(WsfPlatform*, unsigned int, double, int, bool)> PostLaunchCallback;
111
112 typedef UtCallbackListN<void(bool)> WeaponServerEnabledCallback;
114
115 // useful as enum or bit mask
117 {
119 BY_NAME = 0x01,
120 BY_DIS_ID = 0x02,
122 BY_LAT = 0x10,
123 BY_LON = 0x20,
125 };
126
128 {
130 cFREQ = 0x01,
131 cMID = 0x02,
132 cPOSN = 0x04,
133 cPOSE = 0x08,
134 cPOSD = 0x10,
135 cVELN = 0x20,
136 cVELE = 0x40,
137 cVELD = 0x80
138 };
139
141 {
142 double ownshipLLA[3];
143 double ownshipVelWCS[3];
144 double targetLLA[3];
145 double targetVelWCS[3];
148 int DMC;
149 };
151 {
152 double rmax;
153 double rmaxTOF;
154 double rpi;
155 double rpiTOF;
156 double rNe;
157 double rNeTOF;
158 double rmin;
159 double rminTOF;
160 int DMC;
161 };
162
164 {
165 unsigned int mode; // 0=init; 1=umbilical; 2=launch; 3=delete; 4=uplink; 5=update
166 unsigned short missileIdentity[3]; // site; app; entity
167 };
168
170 {
173 unsigned char launchStation[2]; // e.g. "2A"
174 float mountingAngle[3]; // yaw, pitch, roll; Radians
175 float timeThreshold; // DR time setting [s]
176 double simTime; // Simulation time; Seconds
177 };
178
180 {
182 float ejectVelocity[3]; // NED; Meters/second
183 float alignmentUncertainty[3]; // yaw, pitch, roll; Radians
184 int engagementOrderNumber; // 0=visual launch, 1-4
185 double firstDatalinkTime; // relative to launch; Seconds
186 float radarResolutions; // range, range rate, azimuth, elevation; Radians
187 unsigned short uncertaintyTableType; // 0=coupled; 1=decoupled; 2=decoupled/expanded
189 unsigned short* uncertaintiyIndices; // 1-n
190 short rcsSize; //
191 short physicalSize; //
192 double cuePosition[3]; // NED relative to stake; Meters
193 float cueVelocity[3]; // NED; Meters/second
194 unsigned short missileNumber; //
195 double freqA; // MHz
196 double freqB; // MHz
197 unsigned short enableFreqB; // 0=disabled; 1=enabled
198 short launchMode; //
199 short launchFlags[3]; //
200 };
201
203 {
206 double targetPosition[3]; // WGS84; Meters
207 float targetAngle[3]; // NED; Radians
208 float targetRCS[3]; // square meters
209 };
210
212 {
216 float pk; // <0-1>
218 float tof; // Seconds
219 short targetIndex; // <1-6>
220 float missileMach; //
221 float missileAngleOfAttack; // Degrees;
222 double simTime; // Missile simulation time; Seconds
224 };
225
227 {
229 int launchType; // 0=air-to-air; 1=air-to-ground
231 int frequency; // Mhz
232 int targetPositionType; // 0=NED; 1=LLA
233 double targetPosition[3];
234 float targetVelocity[3]; // NED; Meters/second
236 int tailNumber[2]; // [0]=tailNumber; [1]=0 - do not use tail number is DIS PDUs
237 // =1 - use tail number if Dis Pdu entity field
238 };
239
240 static WsfWeaponServer* Find(const WsfSimulation& aSimulation);
241
242 static void GetWeaponTrackNumbers(WsfSimulation& aSimulation,
243 size_t aWeaponPlatformIndex,
244 unsigned int& aWeaponTrackNumber,
245 unsigned int& aControllerTrackNumber);
246
248 WsfWeaponServer(WsfWeaponServerInput& aScenario, WsfSimulation* aSimulationPtr, WsfDisInterface* aDisInterfacePtr);
249
250 ~WsfWeaponServer() override;
251
252 // The weapon server is not thread-safe.
253 // Implementation of abstract base class methods.
254 // TODO: Make thread-safe virtual FunctionType DoWork();
255 // TODO: Make thread-safe virtual FunctionType Pause() { return AVAILABLE; }
256 // TODO: Make thread-safe virtual void Available(); //not a pure virtual, overriding.
257
258 bool Initialize() override;
259
260 // Added to keep weapon server from running as thread until logic is made thread-safe
261 void AddedToSimulation() override;
262
263 // Added to keep weapon server from running as thread until logic is made thread-safe
264 // Methods for TCP connection
265 void Update(double aSimTime);
266 // Added to keep weapon server from running as thread until logic is made thread-safe
267 void UpdateAsServer();
268
269 bool IsConnected();
270
271 bool ProcessCommand(const std::string& command);
272 std::string GenerateCommand(const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTrackPtr);
273 // should return a valid description string if ProcessCommand() returns false
274 std::string GetLastError() { return mErrorString; }
275 std::string GetLastWarning() { return mWarningString; }
276
277 double GetCurrentFrequency() { return mCurrentFrequency; }
278 int GetCurrentId() { return mCurrentWpnId; }
279
280 // Track data was insufficient, create a point out into space at which to aim
281 WsfTrack* CreateATargetPoint(double aSimTime, WsfPlatform* aPlatformPtr, double aAtRangeNM = 40.0);
282
283 // Track data was insufficient, create a point out into space at which to aim
284 // from known n, e, d components.
285 WsfTrack* CreateATargetPoint(double aSimTime, WsfPlatform* aPlatformPtr, double aPosNM, double aPosEM, double aPosDM);
286
287 unsigned int DecimalToOctal(unsigned int aDecimalValue);
288
289 // callbacks, the simulation hooks into the weapon server with these methods
290 void SendToOtherWeaponServer(double aSimTime,
291 WsfPlatform* aPlatformPtr,
292 const WsfWeaponEngagement* aEngagementPtr,
293 const WsfTrack* aTrackPtr);
294 bool GetWeaponServerNumbers(const size_t weaponIndex, unsigned int& weaponTnumber, unsigned int& controllerTnumber);
295
296 void PlatformAdded(double aTime, WsfPlatform* aPlatformPtr);
297 void PlatformDeleted(double aTime, WsfPlatform* aPlatformPtr);
298 void PlatformInitialized(double aTime, WsfPlatform* aPlatformPtr);
299
300 void RetrieveErrorMessage(std::string& aErrorString) { aErrorString = mErrorString; }
301
303 void SetWeaponServerIncluded(bool aBool) { mWeaponServerIncluded = aBool; }
304 void InitiateCallbacks();
305
307 {
308 public:
309 UniqueWeaponKey(DisEntityId aShooter, unsigned int aControllerNum, unsigned int aWeaponNum)
310 : mShooter(aShooter)
311 , mControllerNum(aControllerNum)
312 , mWeaponNum(aWeaponNum)
313 {
314 }
315
316 bool operator<(const UniqueWeaponKey& aRhs) const
317 {
318 if (mShooter < aRhs.mShooter)
319 {
320 return true;
321 }
322 if (mShooter != aRhs.mShooter)
323 {
324 return false;
325 } // its not less than & not equal, so its greater than
327 {
328 return true;
329 }
331 {
332 return false;
333 }
334 if (mWeaponNum < aRhs.mWeaponNum)
335 {
336 return true;
337 }
338 return false;
339 }
340
341 DisEntityId mShooter;
342 unsigned int mControllerNum;
343 unsigned int mWeaponNum;
344 };
345
346 std::map<UniqueWeaponKey, size_t>* GetPlatformIndexMap() { return &mPlatformIndexMap; }
347
348 std::map<size_t, unsigned int>* GetWeaponTrackNumberMap() { return &mWeaponTrackNumberMap; }
349
350 std::map<size_t, unsigned int>* GetControllerTrackNumberMap() { return &mControllerTrackNumberMap; }
351
352 static std::function<unsigned int(WsfPlatform&)> GetControllerTrackNumber;
353
354 // Returns pointer to weapon name map. Maps an external application weapon name to one defined in the
355 // WSF input files. Used with the wsf_weapon_server.
356 std::map<WsfStringId, WsfStringId>* GetWeaponNameMap() { return &mWeaponNameMapTheirsToOurs; }
357
358 std::map<std::pair<WsfStringId, WsfStringId>, WsfStringId>* GetPlatformStationToOurWeaponNameMap()
359 {
361 }
362
363 // Be able to set the simulation pointer when the Register_wsf_weapon_server does not get called.
364 // Will be the case when the ASCII Interface is being used and the 'wsf_weapon_server' block in not present in any input file.
365 void SetSimulation(WsfSimulation* aSimulationPtr) { mSimulationPtr = aSimulationPtr; }
366 WsfSimulation& GetSimulation();
367
371 bool SetCommander(WsfPlatform* aPlatformPtr);
372
373private:
374 // Write debug statements to console output to debug LAR interface
375 bool DebugSetData() const { return mDebugSetData; }
376 // Convert string DisEntityId to DisEntityId
377 bool GetDisEntityId(const std::string& aStr, DisEntityId& aDisEntityId);
378
379 // Returns LAR data based on own ship and target inputs
380 bool GetLARData(LARInputType aLARInput, LAROutputType& aLAROutput);
381
382 // Process any Set Data PDU coming across the DIS network.
383 void HandleSetDataPDU(WsfDisInterface* aInterfacePtr, const WsfDisSetData& aPdu);
384
385 void SendLARData(const WsfDisSetData& aPdu, LAROutputType aLARData);
386
387 void SetTheVariableData(DisUint32 aDatumId, DisUint16 aDatum, DisDatumSpec& aDataToSend);
388
389 void SetTheVariableData(DisUint32 aDatumId, DisUint32 aDatum, DisDatumSpec& aDataToSend);
390
391 void SetTheVariableData(DisUint32 aDatumId, DisFloat64 aDatum, DisDatumSpec& aDataToSend);
392
393 // Added to keep weapon server from running as thread until logic is made thread-safe
396 class TCPUpdateEvent : public WsfEvent
397 {
398 public:
399 EventDisposition Execute() override;
400
401 double mUpdateTime;
402 WsfWeaponServer* mWeaponServerPtr;
403 };
404
405 bool mWeaponServerRequest; // set if the release store command was issued because of a weapon server request.
406 bool mWeaponDisidOverride; // set to 'true' if the user sent a new disid for the weapon
407 bool mWeaponIdOverride; // set to 'true' if the user sent a new id only for a weapon
408 bool mUseWpnIdInPDUs; // set to 'true' if the user sent a new id for a weapon and this id is to be used
409 // by all associated DIS PDUs.
410 bool mWarningStringSet; // set to 'true' if an error occurred during processing
411
412 // properties for weapon server host
413 PakTCP_Server* mServer; // listens for & initializes any connections to the weapon server host
414 std::vector<GenTCP_IO*> mConnections; // current connections (from other clients to this host)
415 GenTCP_IO* mCurrentConnection;
416 UtAtmosphere mAtm;
417 std::map<size_t, DisEntityId> mShooterIdMap;
418 std::map<size_t, unsigned int> mControllerTrackNumberMap;
419 std::map<size_t, unsigned int> mWeaponTrackNumberMap;
420 std::map<UniqueWeaponKey, size_t> mPlatformIndexMap;
421
422 DisEntityId mCurrentShooterId;
423 DisEntityId mCurrentWeaponId;
424 unsigned int mCurrentControllerTrackNumber;
425 unsigned int mCurrentWeaponTrackNumber;
426 double mCurrentFrequency;
427 int mCurrentWpnId;
428
429 // properties for weapon server client
430 GenTCP_IO* mOutgoingClientConnection;
431 unsigned int mOutgoingWeaponTrackNumbers; // ever increasing counter for track number (tail number) IDs
432
433 UtCallbackHolder mCallbacks;
434 WsfDisInterface* mDisInterfacePtr;
435 WsfSimulation* mSimulationPtr;
436 WsfPlatform* mWeaponPlatformPtr;
437};
438
439#endif
aObjectPtr Update(simTime)
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfDisInterface.hpp:83
An internal class used by WsfDisInterface to maintain information about a platform.
Definition WsfDisPlatform.hpp:67
Definition WsfDisSetData.hpp:24
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
WsfScenarioExtension()
Definition WsfScenarioExtension.cpp:21
WsfSimulationExtension()
Definition WsfSimulationExtension.cpp:23
friend class WsfSimulation
Definition WsfSimulationExtension.hpp:43
The main controller for a simulation.
Definition WsfSimulation.hpp:109
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
void SimulationCreated(WsfSimulation &aSimulation) override
Definition WsfWeaponServer.cpp:540
bool ProcessInput(UtInput &aInput) override
Definition WsfWeaponServer.cpp:281
WsfWeaponServerExtension()
Definition WsfWeaponServer.cpp:538
bool operator<(const UniqueWeaponKey &aRhs) const
Definition WsfWeaponServer.hpp:316
unsigned int mControllerNum
Definition WsfWeaponServer.hpp:342
UniqueWeaponKey(DisEntityId aShooter, unsigned int aControllerNum, unsigned int aWeaponNum)
Definition WsfWeaponServer.hpp:309
DisEntityId mShooter
Definition WsfWeaponServer.hpp:341
unsigned int mWeaponNum
Definition WsfWeaponServer.hpp:343
UtCallbackListN< void(bool)> WeaponServerEnabledCallback
Definition WsfWeaponServer.hpp:112
int GetCurrentId()
Definition WsfWeaponServer.hpp:278
void SetSimulation(WsfSimulation *aSimulationPtr)
Definition WsfWeaponServer.hpp:365
bool GetWeaponServerIncluded() const
Definition WsfWeaponServer.hpp:302
static std::function< unsigned int(WsfPlatform &)> GetControllerTrackNumber
Definition WsfWeaponServer.hpp:352
double GetCurrentFrequency()
Definition WsfWeaponServer.hpp:277
void RetrieveErrorMessage(std::string &aErrorString)
Definition WsfWeaponServer.hpp:300
std::map< WsfStringId, WsfStringId > * GetWeaponNameMap()
Definition WsfWeaponServer.hpp:356
UtCallbackListN< void(WsfPlatform *, unsigned int, double, int, bool)> PostLaunchCallback
Definition WsfWeaponServer.hpp:109
void SetWeaponServerIncluded(bool aBool)
Definition WsfWeaponServer.hpp:303
bool ProcessCommand(const std::string &command)
Definition WsfWeaponServer.cpp:560
std::map< UniqueWeaponKey, size_t > * GetPlatformIndexMap()
Definition WsfWeaponServer.hpp:346
void UpdateAsServer()
Definition WsfWeaponServer.cpp:2671
bool IsConnected()
Definition WsfWeaponServer.cpp:550
bool Initialize() override
Called from the main thread to initialize the thread.
Definition WsfWeaponServer.cpp:188
IdentifierType
Definition WsfWeaponServer.hpp:117
@ BY_TAIL_NUMBER
Definition WsfWeaponServer.hpp:121
@ NO_IDENTIFIER
Definition WsfWeaponServer.hpp:118
@ BY_NAME
Definition WsfWeaponServer.hpp:119
@ BY_DIS_ID
Definition WsfWeaponServer.hpp:120
@ BY_LON
Definition WsfWeaponServer.hpp:123
@ BY_LAT
Definition WsfWeaponServer.hpp:122
@ BY_LOCATION
Definition WsfWeaponServer.hpp:124
static WeaponServerEnabledCallback WeaponServerEnabled
Definition WsfWeaponServer.hpp:113
std::map< size_t, unsigned int > * GetControllerTrackNumberMap()
Definition WsfWeaponServer.hpp:350
static WsfWeaponServer * Find(const WsfSimulation &aSimulation)
Definition WsfWeaponServer.cpp:97
std::string GetLastError()
Definition WsfWeaponServer.hpp:274
std::string GetLastWarning()
Definition WsfWeaponServer.hpp:275
WsfWeaponServer(WsfWeaponServerInput &aScenario, WsfSimulation *aSimulationPtr, WsfDisInterface *aDisInterfacePtr)
Constructor and destructor.
Definition WsfWeaponServer.cpp:121
ValidityType
Definition WsfWeaponServer.hpp:128
@ cNO_IDENTIFIER
Definition WsfWeaponServer.hpp:129
@ cMID
Definition WsfWeaponServer.hpp:131
@ cFREQ
Definition WsfWeaponServer.hpp:130
@ cPOSN
Definition WsfWeaponServer.hpp:132
@ cPOSE
Definition WsfWeaponServer.hpp:133
@ cVELD
Definition WsfWeaponServer.hpp:137
@ cPOSD
Definition WsfWeaponServer.hpp:134
@ cVELN
Definition WsfWeaponServer.hpp:135
@ cVELE
Definition WsfWeaponServer.hpp:136
std::string GenerateCommand(const WsfWeaponEngagement *aEngagementPtr, const WsfTrack *aTrackPtr)
Definition WsfWeaponServer.cpp:1613
void AddedToSimulation() override
Definition WsfWeaponServer.cpp:174
std::map< size_t, unsigned int > * GetWeaponTrackNumberMap()
Definition WsfWeaponServer.hpp:348
static PostLaunchCallback PostLaunch
Definition WsfWeaponServer.hpp:110
static void GetWeaponTrackNumbers(WsfSimulation &aSimulation, size_t aWeaponPlatformIndex, unsigned int &aWeaponTrackNumber, unsigned int &aControllerTrackNumber)
Definition WsfWeaponServer.cpp:108
std::map< std::pair< WsfStringId, WsfStringId >, WsfStringId > * GetPlatformStationToOurWeaponNameMap()
Definition WsfWeaponServer.hpp:358
Definition WsfWeapon.hpp:63
bool mDebugEnabled
Definition WsfWeaponServer.hpp:72
std::string mWarningString
Definition WsfWeaponServer.hpp:74
double mTestRNeTOF
Definition WsfWeaponServer.hpp:85
std::map< std::pair< WsfStringId, WsfStringId >, WsfStringId > mPlatformStationToOurWeaponName
Definition WsfWeaponServer.hpp:58
double mTestRMin
Definition WsfWeaponServer.hpp:86
std::map< int, WsfStringId > mWeaponEnumToWeaponType
Definition WsfWeaponServer.hpp:63
unsigned int mPort
Definition WsfWeaponServer.hpp:78
double mTestRNe
Definition WsfWeaponServer.hpp:84
std::map< unsigned int, DisEntityId > mTrackNumberToDisEntityIdMap
Definition WsfWeaponServer.hpp:68
bool mHostTrue_ClientFalse
Definition WsfWeaponServer.hpp:70
std::map< WsfStringId, WsfStringId > mWeaponNameMapTheirsToOurs
Definition WsfWeaponServer.hpp:53
double mTestRMaxTOF
Definition WsfWeaponServer.hpp:83
WsfWeaponServerInput()
Definition WsfWeaponServer.cpp:2797
unsigned int mLarMsgTypeIdIn
Definition WsfWeaponServer.hpp:89
std::string mHostName
Definition WsfWeaponServer.hpp:79
double mTestRMinTOF
Definition WsfWeaponServer.hpp:87
double mRpiMultiplier
Definition WsfWeaponServer.hpp:88
bool mWeaponServerIncluded
Definition WsfWeaponServer.hpp:71
std::string mErrorString
Definition WsfWeaponServer.hpp:73
unsigned int mLarMsgTypeIdOut
Definition WsfWeaponServer.hpp:90
std::string mOutGoingHostName
Definition WsfWeaponServer.hpp:75
std::list< WsfStringId > mOutgoingWeaponTypes
Definition WsfWeaponServer.hpp:77
bool mDebugSetData
Definition WsfWeaponServer.hpp:92
unsigned int mOutGoingPort
Definition WsfWeaponServer.hpp:76
bool mUseTestLARData
Definition WsfWeaponServer.hpp:91
double mTestRMax
Definition WsfWeaponServer.hpp:82
Definition WsfWeaponServer.hpp:170
double simTime
Definition WsfWeaponServer.hpp:176
unsigned char launchStation[2]
Definition WsfWeaponServer.hpp:173
float mountingAngle[3]
Definition WsfWeaponServer.hpp:174
float timeThreshold
Definition WsfWeaponServer.hpp:175
int randomNumberSeed
Definition WsfWeaponServer.hpp:172
MissileIdType missileIdentity
Definition WsfWeaponServer.hpp:171
Definition WsfWeaponServer.hpp:141
double ownshipLLA[3]
Definition WsfWeaponServer.hpp:142
int weaponEnum
Definition WsfWeaponServer.hpp:146
double targetLLA[3]
Definition WsfWeaponServer.hpp:144
double targetVelWCS[3]
Definition WsfWeaponServer.hpp:145
double ownshipVelWCS[3]
Definition WsfWeaponServer.hpp:143
int testCase
Definition WsfWeaponServer.hpp:147
int DMC
Definition WsfWeaponServer.hpp:148
Definition WsfWeaponServer.hpp:151
double rNe
Definition WsfWeaponServer.hpp:156
int DMC
Definition WsfWeaponServer.hpp:160
double rNeTOF
Definition WsfWeaponServer.hpp:157
double rminTOF
Definition WsfWeaponServer.hpp:159
double rmaxTOF
Definition WsfWeaponServer.hpp:153
double rmin
Definition WsfWeaponServer.hpp:158
double rpi
Definition WsfWeaponServer.hpp:154
double rmax
Definition WsfWeaponServer.hpp:152
double rpiTOF
Definition WsfWeaponServer.hpp:155
Definition WsfWeaponServer.hpp:227
int missileIdentifier
Definition WsfWeaponServer.hpp:230
double targetPosition[3]
Definition WsfWeaponServer.hpp:233
int frequency
Definition WsfWeaponServer.hpp:231
int controllerTrackNumber
Definition WsfWeaponServer.hpp:235
float targetVelocity[3]
Definition WsfWeaponServer.hpp:234
MissileIdType missileId
Definition WsfWeaponServer.hpp:228
int tailNumber[2]
Definition WsfWeaponServer.hpp:236
int launchType
Definition WsfWeaponServer.hpp:229
int targetPositionType
Definition WsfWeaponServer.hpp:232
Definition WsfWeaponServer.hpp:203
MissileIdType missileId
Definition WsfWeaponServer.hpp:204
float targetAngle[3]
Definition WsfWeaponServer.hpp:207
double targetPosition[3]
Definition WsfWeaponServer.hpp:206
short targetIdentifiers[3]
Definition WsfWeaponServer.hpp:205
float targetRCS[3]
Definition WsfWeaponServer.hpp:208
Definition WsfWeaponServer.hpp:164
unsigned short missileIdentity[3]
Definition WsfWeaponServer.hpp:166
unsigned int mode
Definition WsfWeaponServer.hpp:165
Definition WsfWeaponServer.hpp:212
short targetIndex
Definition WsfWeaponServer.hpp:219
float tof
Definition WsfWeaponServer.hpp:218
MissileIdType missileId
Definition WsfWeaponServer.hpp:213
float missileMach
Definition WsfWeaponServer.hpp:220
short thrustPhase
Definition WsfWeaponServer.hpp:217
short missileTerminationCode
Definition WsfWeaponServer.hpp:215
double simTime
Definition WsfWeaponServer.hpp:222
float missileGs
Definition WsfWeaponServer.hpp:223
short missileMode
Definition WsfWeaponServer.hpp:214
float missileAngleOfAttack
Definition WsfWeaponServer.hpp:221
float pk
Definition WsfWeaponServer.hpp:216
Definition WsfWeaponServer.hpp:180
unsigned short uncertaintyTableType
Definition WsfWeaponServer.hpp:187
double freqB
Definition WsfWeaponServer.hpp:196
MissileIdType misslieIdentity
Definition WsfWeaponServer.hpp:181
short rcsSize
Definition WsfWeaponServer.hpp:190
unsigned short enableFreqB
Definition WsfWeaponServer.hpp:197
short launchMode
Definition WsfWeaponServer.hpp:198
double freqA
Definition WsfWeaponServer.hpp:195
float ejectVelocity[3]
Definition WsfWeaponServer.hpp:182
double cuePosition[3]
Definition WsfWeaponServer.hpp:192
short physicalSize
Definition WsfWeaponServer.hpp:191
float alignmentUncertainty[3]
Definition WsfWeaponServer.hpp:183
float radarResolutions
Definition WsfWeaponServer.hpp:186
unsigned short missileNumber
Definition WsfWeaponServer.hpp:194
double firstDatalinkTime
Definition WsfWeaponServer.hpp:185
int engagementOrderNumber
Definition WsfWeaponServer.hpp:184
unsigned short * uncertaintiyIndices
Definition WsfWeaponServer.hpp:189
float cueVelocity[3]
Definition WsfWeaponServer.hpp:193
float * uncertaintyTable
Definition WsfWeaponServer.hpp:188
short launchFlags[3]
Definition WsfWeaponServer.hpp:199
Copyrights Multiple, All Rights Reserved