12#ifndef WSFWEAPONSERVER_HPP
13#define WSFWEAPONSERVER_HPP
15#include "wsf_weapon_server_export.h"
22#include "DisEntityId.hpp"
23#include "UtAtmosphere.hpp"
24#include "UtCallback.hpp"
25#include "UtCallbackHolder.hpp"
243 size_t aWeaponPlatformIndex,
244 unsigned int& aWeaponTrackNumber,
245 unsigned int& aControllerTrackNumber);
265 void Update(
double aSimTime);
281 WsfTrack* CreateATargetPoint(
double aSimTime,
WsfPlatform* aPlatformPtr,
double aAtRangeNM = 40.0);
285 WsfTrack* CreateATargetPoint(
double aSimTime,
WsfPlatform* aPlatformPtr,
double aPosNM,
double aPosEM,
double aPosDM);
287 unsigned int DecimalToOctal(
unsigned int aDecimalValue);
290 void SendToOtherWeaponServer(
double aSimTime,
294 bool GetWeaponServerNumbers(
const size_t weaponIndex,
unsigned int& weaponTnumber,
unsigned int& controllerTnumber);
296 void PlatformAdded(
double aTime,
WsfPlatform* aPlatformPtr);
297 void PlatformDeleted(
double aTime,
WsfPlatform* aPlatformPtr);
298 void PlatformInitialized(
double aTime,
WsfPlatform* aPlatformPtr);
304 void InitiateCallbacks();
309 UniqueWeaponKey(DisEntityId aShooter,
unsigned int aControllerNum,
unsigned int aWeaponNum)
375 bool DebugSetData()
const {
return mDebugSetData; }
377 bool GetDisEntityId(
const std::string& aStr, DisEntityId& aDisEntityId);
380 bool GetLARData(LARInputType aLARInput, LAROutputType& aLAROutput);
383 void HandleSetDataPDU(WsfDisInterface* aInterfacePtr,
const WsfDisSetData& aPdu);
385 void SendLARData(
const WsfDisSetData& aPdu, LAROutputType aLARData);
387 void SetTheVariableData(DisUint32 aDatumId, DisUint16 aDatum, DisDatumSpec& aDataToSend);
389 void SetTheVariableData(DisUint32 aDatumId, DisUint32 aDatum, DisDatumSpec& aDataToSend);
391 void SetTheVariableData(DisUint32 aDatumId, DisFloat64 aDatum, DisDatumSpec& aDataToSend);
396 class TCPUpdateEvent :
public WsfEvent
399 EventDisposition Execute()
override;
402 WsfWeaponServer* mWeaponServerPtr;
405 bool mWeaponServerRequest;
406 bool mWeaponDisidOverride;
407 bool mWeaponIdOverride;
408 bool mUseWpnIdInPDUs;
410 bool mWarningStringSet;
413 PakTCP_Server* mServer;
414 std::vector<GenTCP_IO*> mConnections;
415 GenTCP_IO* mCurrentConnection;
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;
422 DisEntityId mCurrentShooterId;
423 DisEntityId mCurrentWeaponId;
424 unsigned int mCurrentControllerTrackNumber;
425 unsigned int mCurrentWeaponTrackNumber;
426 double mCurrentFrequency;
430 GenTCP_IO* mOutgoingClientConnection;
431 unsigned int mOutgoingWeaponTrackNumbers;
433 UtCallbackHolder mCallbacks;
434 WsfDisInterface* mDisInterfacePtr;
435 WsfSimulation* mSimulationPtr;
436 WsfPlatform* mWeaponPlatformPtr;
aObjectPtr Update(simTime)
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfDisInterface.hpp:83
Definition WsfDisSetData.hpp:24
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
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: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