WSF
WsfSA_Processor.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 2020 Infoscitex, a DCS 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 WSFSA_PROCESSOR_HPP
13#define WSFSA_PROCESSOR_HPP
14
15#include <map>
16#include <set>
17#include <stack>
18#include <string>
19#include <vector>
20
21class UtInput;
22class WsfAirMover;
23class WsfBrawlerFuel;
24class WsfBrawlerMover;
26class WsfFuel;
27class WsfLocalTrack;
28class WsfP6DOF_Mover;
29
30#include "WsfTrackList.hpp"
31
32namespace wsf
33{
34namespace six_dof
35{
36class Mover;
37}
38} // namespace wsf
39
40class WsfPlatform;
41class WsfSA_Assess;
43class WsfSA_Perceive;
44class WsfSA_Predict;
45class WsfTrackManager;
47
48#include "wsf_air_combat_export.h"
49
50#include "UtCallbackHolder.hpp"
51#include "WsfEvent.hpp"
55
56// The WsfSA_Processor provides a collection of capabilities for situation awareness,
57// including perception, assessment, and prediction modules.
58
59class WSF_AIR_COMBAT_EXPORT WsfSA_Processor : public WsfScriptProcessor
60{
61public:
67
69 {
70 bool isValid = false;
71 size_t platformIndex = 0;
72 float rangeMax = 0.0;
73 float rangeNe = 0.0;
74 float rangeMin = 0.0;
75 float rangeCurrent = 0.0;
76 float rangeClosureRate = 0.0;
77 float timeToIntercept = 0.0;
78 float timeToActive = 0.0;
79 float targetKTAS = 0.0;
80 float targetAspect = 0.0;
81 float targetAz = 0.0;
82 float targetEl = 0.0;
83 };
84
86 {
87 // Assets
88 std::vector<WsfSA_EntityPerception*> mPerceivedAssets;
89 std::vector<WsfSA_EntityPerception*> mPerceivedAircraftAssets;
90 std::vector<WsfSA_EntityPerception*> mPerceivedMissileAssets;
91
93 std::map<size_t, int> mImportantAssets;
94 std::map<WsfStringId, int> mImportantAssetTypes;
95 std::map<size_t, int> mUnimportantAssets;
96 std::map<WsfStringId, int> mUnimportantAssetTypes;
97 bool mPerceiveSelfStatus{false};
98 std::map<size_t, WsfSA_EntityPerception*> mReceivedAssetStatus;
102 0};
104
105 // Bogies and Bandits
106 std::vector<WsfSA_EntityPerception*> mPerceivedBogies;
107 std::vector<WsfSA_EntityPerception*> mPerceivedAircraftBogies;
108 std::vector<WsfSA_EntityPerception*> mPerceivedMissileBogies;
109 std::vector<WsfSA_EntityPerception*> mPerceivedBandits;
110 std::vector<WsfSA_EntityPerception*> mPerceivedAircraftBandits;
111 std::vector<WsfSA_EntityPerception*> mPerceivedMissileBandits;
112
113 std::map<size_t, int> mImportantThreats;
114 std::map<WsfStringId, int> mImportantThreatTypes;
115 std::map<size_t, int> mUnimportantThreats;
116 std::map<WsfStringId, int> mUnimportantThreatTypes;
118
119 std::list<WsfSA_Group*> mCurrentlyPerceivedGroups;
120
121 // Custom Script Support
128 UtScript* mPruningScriptPtr{nullptr};
129
130 UtScriptClass* mSA_EntityPerceptionClassPtr{nullptr};
131 UtScriptClass* mSA_GroupClassPtr{nullptr};
132 UtScriptClass* mSA_PerceivedItemClassPtr{nullptr};
133 UtScriptClass* mTrackClassPtr{nullptr};
134
135 // Cognitive Parameters
136 std::vector<double> mExtraCognitiveDelaysAssets;
138 std::vector<double> mExtraCognitiveDelaysThreats;
144 double mAssetCoastTime{0.0};
145 double mBanditCoastTime{0.0};
146 double mBogeyCoastTime{0.0};
147
148 // Weapons Data
151 std::vector<WsfExplicitWeapon*> mWeaponList;
152 bool mShootCueActive{false};
153 bool mShootCueBlinking{false};
155 bool mMasterArm{false};
156
157 // Warnings and Cautions
161 false};
162
163 // Expendable Countermeasures (CM)
165 bool mUseSimpleCM{false};
166 size_t mNumSimpleChaff{0};
167 size_t mNumSimpleFlare{0};
168 size_t mNumSimpleDecoy{0};
169 };
170
171 // This enumeration identifies the various SA processor updates and is used as an argument
172 // in methods and as an index to the mUpdateMgmtData vector. Note that cUPDATE_TYPE_COUNT
173 // is the number of UpdateType entries, but is outside the enumeration so that each UpdateType
174 // is a valid vector index.
192 static const size_t cUPDATE_TYPE_COUNT{14}; // number of entries in WsfSA_Processor::UpdateType enum
193
195 static const std::vector<UpdateType> GetCognitiveUpdateGroup()
196 {
198 }
199
201 static const std::vector<UpdateType> GetPlatformUpdateGroup()
202 {
204 }
205
207 static const std::vector<UpdateType> GetUniversalUpdateGroup()
208 {
209 return std::vector<UpdateType>{cSTATUS,
213 cNAV_DATA,
220 }
221
222 WsfSA_Processor(const WsfScenario& aScenario);
224 ~WsfSA_Processor() override;
225 WsfSA_Processor* Clone() const override { return new WsfSA_Processor(*this); }
226
231 static WsfSA_Processor* CreateSA_Processor(double aSimTime, WsfPlatform& aPlatform);
232
236 static WsfSA_Processor* GetSA_Processor(const WsfPlatform& aPlatform);
237
241 bool ProcessInput(UtInput& aInput) override;
242
246 bool Initialize(double aSimTime) override;
247
251 bool Initialize2(double aSimTime) override;
252
256 void Update(double aSimTime) override;
257
262 void HandleSA_ProcessorUpdates(double aSimTime);
263
265 WsfSA_Perceive* Perceive() const { return mPerceivePtr.get(); }
266
268 WsfSA_Assess* Assess() const { return mAssessPtr.get(); }
269
271 WsfSA_Predict* Predict() const { return mPredictPtr.get(); }
272
274 const WsfSA_Processor::PerceiveData* GetData() const { return &mData; }
275
279 WsfP6DOF_Mover* GetP6DofMover() { return mP6DofMover; }
280
282 wsf::six_dof::Mover* GetSixDOF_Mover() { return mSixDOF_Mover; }
283
285 WsfBrawlerMover* GetBrawlerMover() { return mBrawlerMover; }
286
288 WsfBrawlerFuel* GetBrawlerFuel() { return mBrawlerFuel; }
289
291 WsfAirMover* GetAirMover() { return mAirMover; }
292
294 WsfFuel* GetAirMoverFuel() { return mAirMoverFuel; }
295
299 double GetUpdateInterval(UpdateType aUpdateType) const { return mUpdateMgmtData[aUpdateType].activeInterval; }
300
304 double GetStartupInterval(UpdateType aUpdateType) const { return mUpdateMgmtData[aUpdateType].startupInterval; }
305
310 bool SetUpdateInterval(UpdateType aUpdateType, double aUpdateInterval);
311
315 void ResetUpdateInterval(UpdateType aUpdateType);
316
320 double GetLastUpdateTime(UpdateType aUpdateType) const { return mUpdateMgmtData[aUpdateType].lastUpdateTime; }
321
326 bool SetLastUpdateTime(UpdateType aUpdateType, double aSimTime);
327
331 double GetNextUpdateTime(UpdateType aUpdateType) { return mUpdateMgmtData[aUpdateType].nextUpdateTime; }
332
337 bool SetNextUpdateTime(UpdateType aUpdateType, double aSimTime);
338
342 std::string GetUpdateTypeString(const UpdateType aUpdateType);
343
345 double GetAssetDataPurgeLifetime() const { return mAssetDataPurgeLifetime; }
346
350 bool SetAssetDataPurgeLifetime(double aPurgeLifetime);
351
353 void ResetAssetDataPurgeLifetime() { mAssetDataPurgeLifetime = mStartupAssetDataPurgeLifetime; }
354
359 static double RoundToBaseRateMultiple(double aNumToRound, double aMultiple);
360
362 double GetVisualPerceptionDelay() { return mVisualPerceptionDelay; }
363
365 double GetDisplayPerceptionDelay() { return mDisplayPerceptionDelay; }
366
370 bool SetVisualPerceptionDelay(double aDelayTime);
371
375 bool SetDisplayPerceptionDelay(double aDelayTime);
380 WsfTrackProcessor* GetTrackProcessor(const std::string& aProcessorName);
381
383 std::vector<WsfTrackProcessor*> GetTrackProcessors() { return mTrackProcessorList; }
384
388 bool EntityIsInAssetGroup(const WsfSA_EntityPerception* aEntity) const;
389
393 bool EntityIsInAssetGroup(size_t aEntityIndex) const;
394
400 static const std::vector<WsfSA_EntityPerception*>& GetPlatformPerceivedAssets(const WsfPlatform& aPlatform,
401 double aSimTime);
402
408 static const std::vector<WsfSA_EntityPerception*>& GetPlatformPerceivedBogies(const WsfPlatform& aPlatform,
409 double aSimTime);
410
416 static const std::vector<WsfSA_EntityPerception*>& GetPlatformPerceivedBandits(const WsfPlatform& aPlatform,
417 double aSimTime);
418
420 const char* GetScriptClassName() const override { return "WsfSA_Processor"; }
421
428 UtScriptClass* CreateScriptClass(const std::string& aClassName, UtScriptTypes* aScriptTypesPtr);
429
434 void TrackManagerChanged(double aSimTime, WsfTrackManager* aNewManagerPtr);
435
440 bool ProcessMessage(double aSimTime, const WsfMessage& aMessage) override;
441
446 void SendMessage(double aSimTime, const WsfSA_EntityMessage& aStatusMessage);
447
452 void LocalTrackDropped(double aSimTime, const WsfLocalTrack* aLocalTrackPtr);
453
455 bool HasExternalLinks() const { return mExternalLinks.HasLinks(); }
456
462 static void CheckForFrequencyUnits(double& aValue, UtInput& aInput);
463
465
470 void PlatformAdded(double aSimTime, WsfPlatform* aPlatform) override;
471
475 void PlatformDeleted(WsfPlatform* aPlatform) override;
476
478
480 std::string GetSelectedWeapon() const;
481
483 const WsfExplicitWeapon* SelectedWeapon() const;
484
486 int QuantityOfSelectedWeapon() const;
487
491 bool SetSelectedWeapon(std::string aWeaponName);
492
494 const std::vector<WsfExplicitWeapon*> GetWeaponList() const;
495
497 int GetInitialWeaponsQuantity() { return mInitialWeaponsQuantity; }
498
502 void SetMasterArm(bool aArmed);
503
505 bool GetMasterArm() const;
506
508 bool MasterWarningActive() const;
509
511 bool MasterCautionActive() const;
512
514 bool WeaponBayDoorsAreOpen() const;
515
517 bool SupportingWeapon() const;
518
520 bool ShootCueActive() const;
521
523 bool ShootCueBlinking() const;
524
526 bool JammingDetected() const;
527
529
531 bool EngagedTargetValid() const;
532
534 SA_EngagedTarget GetEngagedTarget() const;
535
537 void SetEngagedTarget(SA_EngagedTarget aTarget);
538
540
542 int QuantityOfChaff() const;
543
545 int QuantityOfFlares() const;
546
548 int QuantityOfDecoys() const;
549
551 bool DispenseChaff(double aSimTime);
552
554 bool DispenseFlare(double aSimTime);
555
557 bool DispenseDecoy(double aSimTime);
558
560
562 static bool PlatformContainsSA_Processor(WsfPlatform* aPlatform);
563
565 static const WsfSA_Processor* GetPlatformSA_Processor(const WsfPlatform* aPlatform);
566
568 const std::vector<size_t> GetFilteredPlatformIdList() const { return mFilteredPlatformIdList; }
569
571 bool IsEnemySide(const std::string& aSide) const;
572
574 bool IsFriendlySide(const std::string& aSide) const;
575
577 bool IsNeutralSide(const std::string& aSide) const;
578
580 bool IsEnemyType(const std::string& aType) const;
581
583 bool IsFriendlyType(const std::string& aType) const;
584
586 bool IsNeutralType(const std::string& aType) const;
587
589 bool IsMissileType(const std::string& aType) const;
590
593 const WsfTrackProcessor* GetMWS_Processor() const;
594
598 bool PlatformInTrackListMWS(const WsfPlatform* aPlatform) const;
599
601 bool UseIFF() const { return mUseIFF; }
602
604 bool UseSimpleIdByType() const { return mUseSimpleIdByType; }
605
607 double MaxRangeForPerceivedAssets() const { return mMaxRangeForPerceivedAssets; }
608
610 double MaxRangeForPerceivedBogiesAndBandits() const { return mMaxRangeForPerceivedBogiesAndBandits; }
611
613 bool UseMaxRangeFilterForPerceivedAssets() const { return mUseMaxRangeFilterForPerceivedAssets; }
614
616 bool UseMaxRangeFilterForPerceivedBogiesAndBandits() const { return mUseMaxRangeFilterForPerceivedBogiesAndBandits; }
617
619 double MaxRangeForEngagementData() const { return mMaxRangeForEngagementData; }
620
622 bool UseMaxRangeForEngagementData() const { return mUseMaxRangeForEngagementData; }
623
625 double AssumedRangeForAngleOnlyTargets() const { return mAssumedRangeForAngleOnlyTargets; }
626
628 std::uint16_t FlightId() { return mFlightId; }
629
631 std::string IdFlag() { return mIdFlag; }
632
634 void SetFlightId(std::uint16_t aFlightId) { mFlightId = aFlightId; }
635
637 void SetIdFlag(const std::string& aIdFlag) { mIdFlag = aIdFlag; }
638
641 const std::string& ESM_TrackProcessor() const { return mESM_TrackProcessor; }
642
645 const std::string& MWS_TrackProcessor() const { return mMWS_TrackProcessor; }
646
649 const std::string& RadarTrackProcessor() const { return mRadarTrackProcessor; }
650
653 const std::string& IRST_TrackProcessor() const { return mIRST_TrackProcessor; }
654
657 const std::string& DAS_TrackProcessor() const { return mDAS_TrackProcessor; }
658
661 const std::string& FLIR_TrackProcessor() const { return mFLIR_TrackProcessor; }
662
665 const std::string& EyesTrackProcessor() const { return mEyesTrackProcessor; }
666
669 std::string PerceptionMasterTrackProcessor() const { return mPerceptionMasterTrackProcessorStr; }
670
672 bool UsingPerceptionMasterTrackProcessor() const { return mUsingPerceptionMasterTrackProcessor; }
673
676 WsfTrackProcessor* GetPerceptionMasterTrackProcessor() const { return mPerceptionMasterTrackProcessorPtr; }
677
680 WsfLocalTrackList* GetPerceptionMasterTrackProcessorTrackList() const;
681
682 // Flight Kinematics Data
684 {
685 double lat_deg{0.0};
686 double lon_deg{0.0};
687 float kcas{0.0f};
688 float ktas{0.0f};
689 float mach{0.0f};
690 float altBaro_ft{0.0f};
691 float altRadar_ft{0.0f};
692 float vertSpd_fpm{0.0f};
693 float alpha_deg{0.0f};
694 float beta_deg{0.0f};
695 float gLoad{0.0f};
696 float gAvail{0.0f};
697 float heading_deg{0.0f};
698 float pitch_deg{0.0f};
699 float roll_deg{0.0f};
700 float gX{0.0f};
701 float gY{0.0f};
702 std::string pilotType{""};
703 bool afterburnerOn{false};
704 bool contrailing{false};
705 bool stallWarning{false};
706 bool alphaValid{false};
707 bool betaValid{false};
708 bool kcasValid{false};
709 bool nxValid{false};
710 bool nyValid{false};
711 bool nzValid{false};
712 bool gAvailValid{false};
713 };
714
716 const SA_AircraftKinematics& GetAircraftKinematics() const { return mAircraftKinematicsData; }
717
719 void SetAircraftKinematics(const SA_AircraftKinematics& aFlightData) { mAircraftKinematicsData = aFlightData; }
720
721 // Fuel Data
723 {
724 float fuelInternal_lbs{0.0f};
725 float fuelExternal_lbs{0.0f};
726 float fuelCapInt_lbs{0.0f};
727 float fuelCapExt_lbs{0.0f};
728 float grossWgt_lbs{0.0f};
729 float joker_lbs{0.0f};
730 float bingo_lbs{0.0f};
731 float fuelFlow_pph{0.0f};
732 float normalizedFuelQty{0.0f};
733 uint8_t numExtTanks{0};
734 bool dropTanksPresent{false};
735 bool fuelValid{false};
736 };
737
739 const SA_FuelSystemData& GetFuelSystemData() const { return mFuelSystemData; }
740
742 void SetFuelSystemData(const SA_FuelSystemData& aData) { mFuelSystemData = aData; }
743
744 // Nav Data
746 {
747 float lat_deg{0.0f};
748 float lon_deg{0.0f};
749 };
750
752 {
753 bool dataValid{false};
754 uint8_t numWaypoints{0};
755 uint8_t currentWaypoint{0};
756 float headingBug_deg{0.0f};
759 std::vector<SA_NavigationLatLon> waypoints;
760 };
761
763 const SA_NavigationDataSummary& GetNavigationDataSummary() const { return mNavigationDataSummary; }
764
766 void SetNavigationDataSummary(const SA_NavigationDataSummary& aData) { mNavigationDataSummary = aData; }
767
768 // Flight Controls Data
770 {
771 float stickRgtInput{0.0f};
772 float stickBackInput{0.0f};
773 float rudderRgtInput{0.0f};
774 float speedBrakeInput{0.0f};
775 float throttleInput{0.0f};
778 float flapRgtNormalized{0.0f};
779 float flapLftNormalized{0.0f};
784 float rudderNormalized{0.0f};
786 float thrustNormalized{0.0f};
787 float landingGear{0.0f};
788 bool throttleValid{false};
789 bool aileronsValid{false};
790 bool flapsValid{false};
791 bool twinRuddersValid{false};
792 bool singleRudderValid{false};
793 };
794
796 const SA_FlightControlsDataSummary& GetFlightControlsDataSummary() const { return mFlightControlsDataSummary; }
797
799 void SetFlightControlsDataSummary(const SA_FlightControlsDataSummary& aData) { mFlightControlsDataSummary = aData; }
800
802 {
803 std::string weaponName{""};
804 uint16_t quantity{0};
805 };
806
808 {
809 unsigned int targetIndex{0};
810 float rangeMax_nm{0.0f};
811 float rangeNe_nm{0.0f};
812 float rangeMin_nm{0.0f};
813 float rangeCurrent_nm{0.0f};
816 float timeToActive_sec{0.0f};
817 float targetKTAS{0.0f};
818 float targetAspect_deg{0.0f};
819 float targetAz_deg{0.0f};
820 float targetEl_deg{0.0f};
821 };
822
824 {
825 unsigned int platformIndex{0};
826 std::vector<SA_WeaponNameQtyPair> weaponList{};
827 std::string selectedWeapon{""};
828 uint16_t numSelectedWeapon{0};
829 uint16_t initialNumWeapons{0};
830 std::vector<SA_WeaponEngagedTarget> engagedTargetList{};
831 uint8_t numChaff{0};
832 uint8_t numFlares{0};
833 uint8_t numDecoys{0};
834
836 bool supportingWeapon{false};
837 bool masterWarning{false};
838 bool masterCaution{false};
839 bool shootCueActive{false};
840 bool shootCueBlink{false};
841 bool masterArmActive{false};
842 bool jammingDetected{false};
843 };
844
846 const SA_WeaponsDataSummary GetWeaponsDataSummary() const { return mWeaponsDataSummary; }
847
849 void SetWeaponsDataSummary(const SA_WeaponsDataSummary& aData) { mWeaponsDataSummary = aData; }
850
859
860 // Track Data
862 {
863 unsigned int targetPlatformIndex{0};
864 double lat_deg{0.0};
865 double lon_deg{0.0};
866 float altitude_ft{0.0f};
867 float bearing_deg{0.0f};
868 float elevation_deg{0.0f};
869 float range_nm{0.0f};
870 float rangeRate_kts{0.0f};
871 float targetSpeed_kts{0.0f};
872 float targetHdg_deg{0.0f};
873 float targetAspect_deg{0.0f};
874 std::string idString{""};
875 std::string tgtPlatformName{""};
876 std::string tgtTypeName{""};
878 bool latLonValid{false};
879 bool altitudeValid{false};
880 bool bearingValid{false};
881 bool elevationValid{false};
882 bool rangeValid{false};
883 bool rangeRateValid{false};
884 bool targetSpeedValid{false};
885 bool targetHdgValid{false};
886 bool targetAspectValid{false};
887 bool idIffValid{false};
888 bool idAuxValid{false};
889 bool idSideValid{false};
890 bool idTypeValid{false};
891 bool isMissile{false};
892 };
893
894 // Track manager Data
896 {
897 std::string name;
898 bool isMasterProcessor = false;
899 std::vector<SA_TrackEntryData> trackList;
900 };
901
903 const std::vector<SA_TrackManagerData>& GetTrackManagerList() const { return mTrackManagerDataList; }
904
906 void SetTrackManagerList(const std::vector<SA_TrackManagerData>& aData) { mTrackManagerDataList = aData; }
907
911 double TryUpdateFlightKinematics(double aSimTime);
912
916 double TryUpdateFuel(double aSimTime);
917
921 double TryUpdateNav(double aSimTime);
922
926 double TryUpdateFlightControls(double aSimTime);
927
931 double TryUpdateWeapons(double aSimTime);
932
936 double TryUpdateTracks(double aSimTime);
937
942 double TryUpdateBehaviorCalculation(double aSimTime);
943
947 void UpdateFlightKinematics(double aSimTime);
948
952 void UpdateFuel(double aSimTime);
953
957 void UpdateNav(double aSimTime);
958
962 void UpdateFlightControls(double aSimTime);
963
967 void UpdateWeapons(double aSimTime);
968
972 void UpdateTracks(double aSimTime);
973
977 void UpdateFlightKinematicsData(double aSimTime);
978
982 void UpdateFuelData(double aSimTime);
983
987 void UpdateNavData(double aSimTime);
988
992 void UpdateFlightControlsData(double aSimTime);
993
997 void UpdateWeaponsData(double aSimTime);
998
1002 void UpdateTrackData(double aSimTime);
1003
1007 void UpdateBehaviorCalculation(double aSimTime);
1008
1010 bool AfterburnerOn() const { return mAircraftKinematicsData.afterburnerOn; }
1011
1013 bool IsContrailing() const { return mAircraftKinematicsData.contrailing; }
1014
1016 void CalculateObservables();
1017
1019 void CalculateEmissions();
1020
1021 // These functions support "RF emissions" related calculations
1022
1024 bool RadarEmitting() const { return mRadarEmitting; }
1025
1027 bool JammerEmitting() const { return mJammerEmitting; }
1028
1030 bool OtherSystemsEmitting() const { return mOtherSystemsEmitting; }
1031
1033 bool FuelStateBingoReached() const;
1034
1036 bool FuelStateJokerReached() const;
1037
1039 double FuelStateNormalized() const;
1040
1042 double TimeToJoker() const;
1043
1045 double TimeToBingo() const;
1046
1048 double TimeToEmpty() const;
1049
1050protected:
1051 WsfSA_Processor(const WsfSA_Processor& aSrc);
1052
1059 void CallScript(double aSimTime, const std::string& aScriptName);
1060
1067 double CallScriptReturnDouble(double aSimTime, const std::string& aScriptName);
1068
1072 bool ScriptExists(const std::string& aScriptName);
1073
1075 void DebugTestOutput(double aSimTime);
1076
1077private:
1078 UtCallbackHolder mCallbacks;
1079
1080 // The platform carrying this SA Processor
1081 WsfPlatform* mPlatform{nullptr};
1082
1083 // Possible mover (and fuel) objects
1084 bool mMoverPresent{false};
1085 WsfP6DOF_Mover* mP6DofMover{nullptr};
1086 wsf::six_dof::Mover* mSixDOF_Mover{nullptr};
1087 WsfBrawlerMover* mBrawlerMover{nullptr};
1088 WsfBrawlerFuel* mBrawlerFuel{nullptr};
1089 WsfAirMover* mAirMover{nullptr};
1090 WsfFuel* mAirMoverFuel{nullptr};
1091
1092 // Master track processor (track manager) and track processors
1093 WsfTrackManager* mMasterTrackProcessor{nullptr};
1094 std::vector<WsfTrackProcessor*> mTrackProcessorList;
1095
1096 // Track Data - Includes data for each track processor on the platform
1097 std::vector<SA_TrackManagerData> mTrackManagerDataList;
1098 bool mFilterAssetsFromTracks{true};
1099
1100 // Weapons Data -- Includes the number/types of weapons, countermeasures, and warnings/flags
1101 SA_WeaponsDataSummary mWeaponsDataSummary;
1102 int mInitialWeaponsQuantity{0};
1103
1104 // Modules - Perceive, Assess, and Predict
1105 std::unique_ptr<WsfSA_Perceive> mPerceivePtr;
1106 std::unique_ptr<WsfSA_Assess> mAssessPtr;
1107 std::unique_ptr<WsfSA_Predict> mPredictPtr;
1108
1109 // Enemy/friendly sides/types
1110 std::vector<std::string> mEnemySidesList;
1111 std::vector<std::string> mFriendlySidesList;
1112 std::vector<std::string> mNeutralSidesList;
1113 std::vector<std::string> mEnemyTypesList;
1114 std::vector<std::string> mFriendlyTypesList;
1115 std::vector<std::string> mNeutralTypesList;
1116 std::vector<std::string> mMissileTypesList;
1117
1118 // Identification
1119 bool mUseIFF{false};
1120 bool mUseSimpleIdByType{false};
1121
1122 // Range settings
1123 double mMaxRangeForPerceivedAssets{0.0};
1124 double mMaxRangeForPerceivedBogiesAndBandits{
1125 0.0};
1126 bool mUseMaxRangeFilterForPerceivedAssets{false};
1127 bool mUseMaxRangeFilterForPerceivedBogiesAndBandits{
1128 false};
1129 double mMaxRangeForEngagementData{0.0};
1130 bool mUseMaxRangeForEngagementData{false};
1131 double mAssumedRangeForAngleOnlyTargets{0.0};
1132
1135 std::vector<size_t> mFilteredPlatformIdList;
1136
1137 // Filters for monitored platforms, used for engagement assessment
1138 bool mFilterRequiresSameSide{false};
1139 bool mFilterRequiresNotSameSide{false};
1140 bool mFilterRequiresAirDomain{false};
1141 bool mFilterRequiresNotAirDomain{false};
1142 bool mFilterRequiresLandOrSurfaceDomain{false};
1143 bool mFilterRequiresNotSubsurfaceDomain{false};
1144 bool mFilterRequiresNotSpaceDomain{false};
1145 bool mFilterRequiresSA_Processor{false};
1146
1147 // Missile identification filters
1148 bool mMissileSpeedAnyAlt{false};
1149 bool mMissileAltAnySpeed{false};
1150 bool mMissileSpeedWithAlt{false};
1151 bool mMissileAltWithSpeed{false};
1152 bool mMissileNoseAngle{false};
1153 bool mMissileTimeToIntercept{false};
1154 bool mMissileDistance{false};
1155
1156 double mMissileSpeedAnyAltValue{0.0};
1157 double mMissileAltAnySpeedValue{0.0};
1158 double mMissileSpeedWithAltValue{0.0};
1159 double mMissileAltWithSpeedValue{0.0};
1160 double mMissileNoseAngleValue{0.0};
1161 double mMissileTimeToInterceptValue{0.0};
1162 double mMissileDistanceValue{0.0};
1163
1164 // Flight ID, provides common means of identifying "flights" (typically two or four aircraft). Each flight should use
1165 // a unique number.
1166 std::uint16_t mFlightId{0};
1167 std::string mIdFlag{""};
1168
1169 // Flight, fuel, navigation, and controls data
1170 double mBingoFuel_lbs{0.0};
1171 double mJokerFuel_lbs{0.0};
1172 SA_AircraftKinematics mAircraftKinematicsData;
1173 SA_FuelSystemData mFuelSystemData;
1174 SA_NavigationDataSummary mNavigationDataSummary;
1175 SA_FlightControlsDataSummary mFlightControlsDataSummary;
1176
1177 // Optional Track Processor Names
1178 std::string mESM_TrackProcessor{""};
1179 std::string mMWS_TrackProcessor{""};
1180 std::string mRadarTrackProcessor{""};
1181 std::string mIRST_TrackProcessor{""};
1182 std::string mDAS_TrackProcessor{""};
1183 std::string mFLIR_TrackProcessor{""};
1184 std::string mEyesTrackProcessor{""};
1185 std::string mPerceptionMasterTrackProcessorStr{""};
1186 WsfTrackProcessor* mPerceptionMasterTrackProcessorPtr{nullptr};
1187 bool mUsingPerceptionMasterTrackProcessor{
1188 false};
1189
1190 // RF Emissions
1191 bool mRadarEmitting{false};
1192 bool mJammerEmitting{false};
1193 bool mOtherSystemsEmitting{false};
1194
1195 double mAssetDataPurgeLifetime{0};
1196 double mStartupAssetDataPurgeLifetime{0};
1197 double mDisplayPerceptionDelay{0.0};
1198 double mVisualPerceptionDelay{0.0};
1199
1200 // This structure holds the collection of data members that are used to manage a given type of SA processor update.
1201 // The vector that follows is used to manage this data for all the SA processor update types.
1202 struct UpdateMgmtRecord
1203 {
1204 double startupInterval{0.0}; // update interval established at startup (multiple of mUpdateInterval)
1205 double activeInterval{0.0}; // update interval that is currently active (multiple of mUpdateInterval)
1206 double lastUpdateTime{0.0}; // last simulation time at which this update was performed
1207 double nextUpdateTime{0.0}; // next simulation time at which this update is requested
1208 bool manualModeLock{false}; // true = disallow automated/adaptive changes to this update rate
1209 };
1210
1211 std::vector<UpdateMgmtRecord> mUpdateMgmtData; // used to manage data for all SA processor update types
1212 size_t mEventCount{0}; // total number of update events
1213 PerceiveData mData; // perceived data container used by multiple SAP classes
1214 bool mUpdatedScriptContext{false}; // set to true if the script context was updated within HandleSA_ProcessorUpdates
1215 bool mUseDebugOutput{false}; // set to true to output debug information
1216 std::string mDebugPlatformName{"Talon_1_1"}; // set this to the name of the platform used in debugging
1217};
1218
1219#endif
WsfTrackListT< WsfLocalTrack > WsfLocalTrackList
Definition WsfTrackList.hpp:89
Definition WsfAirMover.hpp:32
Definition WsfBrawlerFuel.hpp:20
Definition WsfBrawlerMover.hpp:31
Contains the 'categories' to which an object belongs.
Definition WsfCategoryList.hpp:34
A specialization of WsfWeapon for weapons modeled as separate platforms.
Definition WsfExplicitWeapon.hpp:30
Definition WsfFuel.hpp:30
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
Definition WsfP6DOF_Mover.hpp:51
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfPlatformPart.cpp:343
virtual void PlatformAdded(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfPlatformPart.cpp:333
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
void SetUpdateInterval(double aUpdateInterval) override
Definition WsfProcessor.cpp:224
This is the assess module of the SA Processor.
Definition WsfSA_Assess.hpp:30
Definition WsfSA_EntityMessage.hpp:28
Definition WsfSA_EntityPerception.hpp:37
This is the perceive module of the SA Processor.
Definition WsfSA_Perceive.hpp:31
This is the predict module of the SA Processor.
Definition WsfSA_Predict.hpp:28
Definition WsfSA_Processor.hpp:60
const WsfSA_Processor::PerceiveData * GetData() const
Return a const reference to the perceive data.
Definition WsfSA_Processor.hpp:274
bool JammerEmitting() const
This returns true if any jammer is emitting.
Definition WsfSA_Processor.hpp:1027
EntityPerceptionType
Definition WsfSA_Processor.hpp:63
@ STATUS_MESSAGES
Definition WsfSA_Processor.hpp:65
@ TRUTH
Definition WsfSA_Processor.hpp:64
double GetNextUpdateTime(UpdateType aUpdateType)
Set the next update time (sec) for the requested data type.
Definition WsfSA_Processor.hpp:331
const std::string & MWS_TrackProcessor() const
This function returns the name of the optional missile warning system (MWS) track processor.
Definition WsfSA_Processor.hpp:645
WsfSA_Processor & operator=(const WsfSA_Processor &)=delete
WsfBrawlerFuel * GetBrawlerFuel()
Get the BrawlerFuel for the platform.
Definition WsfSA_Processor.hpp:288
const std::vector< size_t > GetFilteredPlatformIdList() const
This function returns a list of filtered platform ids for platforms that will be evaluated.
Definition WsfSA_Processor.hpp:568
bool RadarEmitting() const
This returns true if any radar is emitting.
Definition WsfSA_Processor.hpp:1024
std::string IdFlag()
This function returns the id flag string.
Definition WsfSA_Processor.hpp:631
const char * GetScriptClassName() const override
Return the name of this script class.
Definition WsfSA_Processor.hpp:420
const SA_FlightControlsDataSummary & GetFlightControlsDataSummary() const
This function returns the aircraft flight controls data.
Definition WsfSA_Processor.hpp:796
void SetTrackManagerList(const std::vector< SA_TrackManagerData > &aData)
This function sets the track data.
Definition WsfSA_Processor.hpp:906
const SA_NavigationDataSummary & GetNavigationDataSummary() const
This function returns the aircraft nav data.
Definition WsfSA_Processor.hpp:763
const std::string & ESM_TrackProcessor() const
This function returns the name of the optional ESM/RWR track processor.
Definition WsfSA_Processor.hpp:641
WsfBrawlerMover * GetBrawlerMover()
Get the Brawler mover for the platform.
Definition WsfSA_Processor.hpp:285
bool UseMaxRangeFilterForPerceivedBogiesAndBandits() const
This function returns true if the max range filter should be applied for bogies and bandits.
Definition WsfSA_Processor.hpp:616
void SetFlightId(std::uint16_t aFlightId)
This function sets the flight id.
Definition WsfSA_Processor.hpp:634
double AssumedRangeForAngleOnlyTargets() const
This function returns the assumed range of angle-only tracks.
Definition WsfSA_Processor.hpp:625
void ResetAssetDataPurgeLifetime()
Reset the purge lifetime limit (sec) for asset data.
Definition WsfSA_Processor.hpp:353
UpdateType
Definition WsfSA_Processor.hpp:176
@ cSTATUS
Definition WsfSA_Processor.hpp:177
@ cFLIGHT_DATA
Definition WsfSA_Processor.hpp:179
@ cPERCEIVED_ITEM_DATA
Definition WsfSA_Processor.hpp:186
@ cPRIORITIZED_ITEM_CALCULATION
Definition WsfSA_Processor.hpp:189
@ cTRACK_DATA
Definition WsfSA_Processor.hpp:184
@ cASSETS_DATA
Definition WsfSA_Processor.hpp:185
@ cENGAGEMENT_DATA
Definition WsfSA_Processor.hpp:178
@ cPERCEIVED_ITEM_CALCULATION
Definition WsfSA_Processor.hpp:188
@ cCONTROLS_DATA
Definition WsfSA_Processor.hpp:182
@ cWEAPONS_DATA
Definition WsfSA_Processor.hpp:183
@ cPRIORITIZED_ITEM_DATA
Definition WsfSA_Processor.hpp:187
@ cNAV_DATA
Definition WsfSA_Processor.hpp:181
@ cFUEL_DATA
Definition WsfSA_Processor.hpp:180
@ cBEHAVIOR_CALCULATION
Definition WsfSA_Processor.hpp:190
std::uint16_t FlightId()
This function returns the flight id.
Definition WsfSA_Processor.hpp:628
double GetStartupInterval(UpdateType aUpdateType) const
Get the startup interval (sec) parsed at startup for the requested data type.
Definition WsfSA_Processor.hpp:304
static const std::vector< UpdateType > GetCognitiveUpdateGroup()
Get the UpdateTypes that are associated with the cognitive_update_interval group.
Definition WsfSA_Processor.hpp:195
int GetInitialWeaponsQuantity()
Returns the initial number of weapons.
Definition WsfSA_Processor.hpp:497
WsfSA_Assess * Assess() const
Return a pointer to the WsfSA_Assess module.
Definition WsfSA_Processor.hpp:268
WsfSA_Predict * Predict() const
Return a pointer to the WsfSA_Predict module.
Definition WsfSA_Processor.hpp:271
const SA_FuelSystemData & GetFuelSystemData() const
This function returns the aircraft fuel data.
Definition WsfSA_Processor.hpp:739
const std::string & RadarTrackProcessor() const
This function returns the name of the optional radar track processor.
Definition WsfSA_Processor.hpp:649
bool AfterburnerOn() const
Returns true if afterburner is operating.
Definition WsfSA_Processor.hpp:1010
bool IsContrailing() const
Returns true if producing contrails.
Definition WsfSA_Processor.hpp:1013
double MaxRangeForPerceivedBogiesAndBandits() const
This function returns the max range (meters) for perceived bogies and bandits.
Definition WsfSA_Processor.hpp:610
double GetLastUpdateTime(UpdateType aUpdateType) const
Get the last update time (sec) for the requested data type.
Definition WsfSA_Processor.hpp:320
const SA_AircraftKinematics & GetAircraftKinematics() const
This function returns the aircraft kinematics data.
Definition WsfSA_Processor.hpp:716
const std::string & FLIR_TrackProcessor() const
This function returns the name of the optional FLIR track processor.
Definition WsfSA_Processor.hpp:661
WsfFuel * GetAirMoverFuel()
Get the WsfFuel for the platform.
Definition WsfSA_Processor.hpp:294
WsfP6DOF_Mover * GetP6DofMover()
Get the P6DOF mover for the platform.
Definition WsfSA_Processor.hpp:279
const SA_WeaponsDataSummary GetWeaponsDataSummary() const
This function returns the weapons data.
Definition WsfSA_Processor.hpp:846
static const std::vector< UpdateType > GetUniversalUpdateGroup()
Get the UpdateTypes that are associated with the universal_update_interval group.
Definition WsfSA_Processor.hpp:207
std::string PerceptionMasterTrackProcessor() const
This function returns the name of the optional perception master track processor.
Definition WsfSA_Processor.hpp:669
const std::string & DAS_TrackProcessor() const
This function returns the name of the optional DAS track processor.
Definition WsfSA_Processor.hpp:657
WsfTrackProcessor * GetPerceptionMasterTrackProcessor() const
Get the pointer to the optional perception master track processor (PMTP).
Definition WsfSA_Processor.hpp:676
const std::string & EyesTrackProcessor() const
This function returns the name of the optional eyes sensor track processor.
Definition WsfSA_Processor.hpp:665
double GetDisplayPerceptionDelay()
Returns the current value for display_perception_delay (sec).
Definition WsfSA_Processor.hpp:365
void SetIdFlag(const std::string &aIdFlag)
This function sets the id flag string.
Definition WsfSA_Processor.hpp:637
double GetAssetDataPurgeLifetime() const
Get the purge lifetime limit (sec) for asset data.
Definition WsfSA_Processor.hpp:345
bool UseMaxRangeForEngagementData() const
This function returns true if the max range filter should be applied for engagements.
Definition WsfSA_Processor.hpp:622
WsfSA_Processor * Clone() const override
Definition WsfSA_Processor.hpp:225
SA_Identification
Definition WsfSA_Processor.hpp:852
@ ID_UNKNOWN
Definition WsfSA_Processor.hpp:853
@ ID_FRIENDLY
Definition WsfSA_Processor.hpp:854
@ ID_NEUTRAL
Definition WsfSA_Processor.hpp:855
@ ID_BANDIT
Definition WsfSA_Processor.hpp:857
@ ID_BOGIE
Definition WsfSA_Processor.hpp:856
bool UseIFF() const
This function returns true if IFF should be used for identification.
Definition WsfSA_Processor.hpp:601
wsf::six_dof::Mover * GetSixDOF_Mover()
Get the SixDOF mover for the platform.
Definition WsfSA_Processor.hpp:282
void SetFlightControlsDataSummary(const SA_FlightControlsDataSummary &aData)
This function sets the aircraft flight controls data.
Definition WsfSA_Processor.hpp:799
bool OtherSystemsEmitting() const
This returns true if any other systems are emitting.
Definition WsfSA_Processor.hpp:1030
WsfAirMover * GetAirMover()
Get the WsfAirMover for the platform.
Definition WsfSA_Processor.hpp:291
void SetAircraftKinematics(const SA_AircraftKinematics &aFlightData)
This function sets the aircraft kinematics data.
Definition WsfSA_Processor.hpp:719
bool HasExternalLinks() const
True if the processor has external links (comms), false otherwise.
Definition WsfSA_Processor.hpp:455
const std::string & IRST_TrackProcessor() const
This function returns the name of the optional IRST track processor.
Definition WsfSA_Processor.hpp:653
static const size_t cUPDATE_TYPE_COUNT
Definition WsfSA_Processor.hpp:192
void SetNavigationDataSummary(const SA_NavigationDataSummary &aData)
This function sets the aircraft nav data.
Definition WsfSA_Processor.hpp:766
bool UsingPerceptionMasterTrackProcessor() const
This function returns true if the optional perception master track processor is being used.
Definition WsfSA_Processor.hpp:672
bool UseMaxRangeFilterForPerceivedAssets() const
This function returns true if the max range filter should be applied for assets.
Definition WsfSA_Processor.hpp:613
double GetUpdateInterval(UpdateType aUpdateType) const
Get the update interval (sec) for the requested data type.
Definition WsfSA_Processor.hpp:299
WsfSA_Processor(const WsfScenario &aScenario)
Definition WsfSA_Processor.cpp:62
const std::vector< SA_TrackManagerData > & GetTrackManagerList() const
This function returns the track data for all of the track processors/managers.
Definition WsfSA_Processor.hpp:903
std::vector< WsfTrackProcessor * > GetTrackProcessors()
Returns mTrackProcessorList that contains the pointers to the different track processors.
Definition WsfSA_Processor.hpp:383
WsfSA_Perceive * Perceive() const
Return a pointer to the WsfSA_Perceive module.
Definition WsfSA_Processor.hpp:265
void SetWeaponsDataSummary(const SA_WeaponsDataSummary &aData)
This function sets the weapons data.
Definition WsfSA_Processor.hpp:849
bool UseSimpleIdByType() const
This function returns true if the simple identification-by-type approach should be used.
Definition WsfSA_Processor.hpp:604
double GetVisualPerceptionDelay()
Returns the current value for visual_perception_delay (sec).
Definition WsfSA_Processor.hpp:362
void SetFuelSystemData(const SA_FuelSystemData &aData)
This function sets the aircraft fuel data.
Definition WsfSA_Processor.hpp:742
static const std::vector< UpdateType > GetPlatformUpdateGroup()
Get the UpdateTypes that are associated with the platform_update_interval group.
Definition WsfSA_Processor.hpp:201
double MaxRangeForPerceivedAssets() const
This function returns the max range (meters) for perceived assets.
Definition WsfSA_Processor.hpp:607
double MaxRangeForEngagementData() const
This function returns the max range (meters) for engagement data.
Definition WsfSA_Processor.hpp:619
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
bool Initialize2(double aSimTime) override
Definition WsfScriptProcessor.cpp:142
void Update(double aSimTime) override
Definition WsfScriptProcessor.cpp:281
wsf::ExternalLinks mExternalLinks
The external recipients.
Definition WsfScriptProcessor.hpp:112
WsfScriptProcessor(const WsfScenario &aScenario)
Definition WsfScriptProcessor.cpp:30
bool Initialize(double aSimTime) override
Definition WsfScriptProcessor.cpp:104
bool ProcessInput(UtInput &aInput) override
Definition WsfScriptProcessor.cpp:186
void SendMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfScriptProcessor.cpp:344
bool ProcessMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfScriptProcessor.cpp:300
Definition WsfTrackManager.hpp:62
Definition WsfTrackProcessor.hpp:47
This is a base class for detailed air movers. This umbrella can cover RB6 or PM6 models.
Definition WsfSixDOF_Mover.hpp:58
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfSA_Processor.hpp:86
bool mFilterAssetsFromBogies
True if assets should be filtered from bogie list.
Definition WsfSA_Processor.hpp:117
std::map< WsfStringId, int > mImportantAssetTypes
Map of important asset types.
Definition WsfSA_Processor.hpp:94
std::map< size_t, int > mUnimportantThreats
Should NOT be included in perception (track's target platform index = 1).
Definition WsfSA_Processor.hpp:115
std::map< WsfStringId, int > mUnimportantThreatTypes
Map of unimportant threat types.
Definition WsfSA_Processor.hpp:116
int mMaxThreatLoadInitial
Max number of threats that can be perceived as initialized by user.
Definition WsfSA_Processor.hpp:143
std::vector< double > mExtraCognitiveDelaysThreats
List of delays to add to the next update time when updating threat perceptions.
Definition WsfSA_Processor.hpp:138
std::map< size_t, int > mUnimportantAssets
Should NOT be included in perception (asset's platform index = 1).
Definition WsfSA_Processor.hpp:95
bool mUseSimpleCM
Flag indicating if simple CM is used.
Definition WsfSA_Processor.hpp:165
WsfSA_Processor::SA_EngagedTarget mEngagedTarget
Current engaged target.
Definition WsfSA_Processor.hpp:149
bool mJammingDetected
Flag indicating if jamming is detected (true=jamming present, false=no jamming detected).
Definition WsfSA_Processor.hpp:160
size_t mNumSimpleFlare
Quantity of simple flares remaining.
Definition WsfSA_Processor.hpp:167
std::vector< WsfSA_EntityPerception * > mPerceivedAircraftBogies
List of currently perceived aircraft bogies.
Definition WsfSA_Processor.hpp:107
double mAssetCoastTime
The amount of time (in seconds) that an asset is allowed to coast before removal.
Definition WsfSA_Processor.hpp:144
WsfExplicitWeapon * mChaffDispenser
Pointer to the current chaff dispenser.
Definition WsfSA_Processor.hpp:164
unsigned int mAssetTruthPerceptionMask
Asset truth perception mask (WsfComm:: cCOMMANDER | cPEERS | cSUBORDINATES).
Definition WsfSA_Processor.hpp:101
std::vector< WsfSA_EntityPerception * > mPerceivedAircraftAssets
List of currently perceived aircraft assets.
Definition WsfSA_Processor.hpp:89
bool mReportingOthersStatus
True if reporting asset knowledge, false otherwise.
Definition WsfSA_Processor.hpp:99
int mMaxThreatLoad
Max number of threats that can be perceived (negative value means no limit).
Definition WsfSA_Processor.hpp:142
bool mShootCueActive
Flag indicating if shoot cue is active (true=active, false=off).
Definition WsfSA_Processor.hpp:152
std::vector< WsfSA_EntityPerception * > mPerceivedMissileBandits
List of currently perceived missile bandits.
Definition WsfSA_Processor.hpp:111
std::map< WsfStringId, int > mUnimportantAssetTypes
Map of unimportant asset types.
Definition WsfSA_Processor.hpp:96
std::vector< WsfSA_EntityPerception * > mPerceivedAircraftBandits
List of currently perceived aircraft bandits.
Definition WsfSA_Processor.hpp:110
std::vector< WsfSA_EntityPerception * > mPerceivedMissileAssets
List of currently perceived missile assets.
Definition WsfSA_Processor.hpp:90
WsfCategoryList mIgnoredAssetCategories
Asset categories which we should ignore creating perceptions for.
Definition WsfSA_Processor.hpp:103
bool mReportingSelfStatus
True if reporting self status, false otherwise.
Definition WsfSA_Processor.hpp:100
std::map< size_t, int > mImportantAssets
Should be included in perception (asset's platform index = 1).
Definition WsfSA_Processor.hpp:93
int mMaxAssetLoadInitial
Max number of assets that can be perceived as initialized by user.
Definition WsfSA_Processor.hpp:141
bool mMasterArm
Flag indicating master arm state (true=armed, false=safe).
Definition WsfSA_Processor.hpp:155
bool mWeaponBayDoorsAreOpen
Flag indicating if weapon bay doors are open (true=open, false=closed).
Definition WsfSA_Processor.hpp:154
std::vector< WsfSA_EntityPerception * > mPerceivedMissileBogies
List of currently perceived missile bogies.
Definition WsfSA_Processor.hpp:108
UtScript * mPruningScriptPtr
Pointer to the script being used to prune excess PIs.
Definition WsfSA_Processor.hpp:128
EntityPerceptionType mAssetPerception
Type of asset perception being used (TRUTH or STATUS_MESSAGES).
Definition WsfSA_Processor.hpp:92
std::map< size_t, int > mImportantThreats
Should be included in perception (track's target platform index = 1).
Definition WsfSA_Processor.hpp:113
UtScriptClass * mSA_GroupClassPtr
Script class for WsfSA_Group.
Definition WsfSA_Processor.hpp:131
std::vector< WsfSA_EntityPerception * > mPerceivedAssets
List of currently perceived assets.
Definition WsfSA_Processor.hpp:88
size_t mNumSimpleChaff
Quantity of simple chaff remaining.
Definition WsfSA_Processor.hpp:166
UtScriptClass * mSA_EntityPerceptionClassPtr
Script class for WsfSA_EntityPerception.
Definition WsfSA_Processor.hpp:130
bool mPerceiveSelfStatus
True if perceiving self, false otherwise.
Definition WsfSA_Processor.hpp:97
bool mShootCueBlinking
Flag indicating if shoot cue is blinking (true=blinking, false=not blinking).
Definition WsfSA_Processor.hpp:153
std::map< WsfStringId, int > mImportantThreatTypes
Map of important threat types.
Definition WsfSA_Processor.hpp:114
UtScript * mUnfocusedGroupConsiderationScoringScriptPtr
Pointer to the script being used to score unfocused groups.
Definition WsfSA_Processor.hpp:126
int mMaxAssetLoad
Max number of assets that can be perceived (negative value means no limit).
Definition WsfSA_Processor.hpp:140
std::map< size_t, WsfSA_EntityPerception * > mReceivedAssetStatus
Map of asset status messages (platform index = message).
Definition WsfSA_Processor.hpp:98
bool mMasterWarningActive
Flag indicating master warning state (true=active, false=off).
Definition WsfSA_Processor.hpp:158
UtScript * mMissileConsiderationScoringScriptPtr
Pointer to the script being used to score missiles.
Definition WsfSA_Processor.hpp:125
UtScriptClass * mTrackClassPtr
Script class for WsfTrack.
Definition WsfSA_Processor.hpp:133
std::vector< WsfSA_EntityPerception * > mPerceivedBandits
List of currently perceived bandits.
Definition WsfSA_Processor.hpp:109
UtScriptClass * mSA_PerceivedItemClassPtr
Script class for WsfSA_PerceivedItem.
Definition WsfSA_Processor.hpp:132
UtScript * mAssetConsiderationScoringScriptPtr
Pointer to the script being used to score assets.
Definition WsfSA_Processor.hpp:122
std::vector< WsfExplicitWeapon * > mWeaponList
List of weapons.
Definition WsfSA_Processor.hpp:151
std::list< WsfSA_Group * > mCurrentlyPerceivedGroups
Perceived groups (these persist).
Definition WsfSA_Processor.hpp:119
bool mMasterCautionActive
Flag indicating master caution state (true=active, false=off).
Definition WsfSA_Processor.hpp:159
double mBanditCoastTime
The amount of time (in seconds) that a bandit is allowed to coast before removal.
Definition WsfSA_Processor.hpp:145
size_t mNumSimpleDecoy
Quantity of simple decoys remaining.
Definition WsfSA_Processor.hpp:168
UtScript * mBogieBanditConsiderationScoringScriptPtr
Pointer to the script being used to score bogies and bandits.
Definition WsfSA_Processor.hpp:123
std::vector< double > mExtraCognitiveDelaysAssets
List of delays to add to the next update time when updating asset perceptions.
Definition WsfSA_Processor.hpp:136
double mBogeyCoastTime
The amount of time (in seconds) that a bogey is allowed to coast before removal.
Definition WsfSA_Processor.hpp:146
std::vector< WsfSA_EntityPerception * > mPerceivedBogies
List of currently perceived bogies.
Definition WsfSA_Processor.hpp:106
WsfExplicitWeapon * mSelectedWeapon
Pointer to the current selected weapon.
Definition WsfSA_Processor.hpp:150
Definition WsfSA_Processor.hpp:684
bool nzValid
Definition WsfSA_Processor.hpp:711
float gLoad
Definition WsfSA_Processor.hpp:695
float altBaro_ft
Definition WsfSA_Processor.hpp:690
float gAvail
Definition WsfSA_Processor.hpp:696
float vertSpd_fpm
Definition WsfSA_Processor.hpp:692
bool stallWarning
Definition WsfSA_Processor.hpp:705
float pitch_deg
Definition WsfSA_Processor.hpp:698
bool nxValid
Definition WsfSA_Processor.hpp:709
bool afterburnerOn
Definition WsfSA_Processor.hpp:703
bool gAvailValid
Definition WsfSA_Processor.hpp:712
float roll_deg
Definition WsfSA_Processor.hpp:699
float gX
Definition WsfSA_Processor.hpp:700
bool alphaValid
Definition WsfSA_Processor.hpp:706
bool kcasValid
Definition WsfSA_Processor.hpp:708
float beta_deg
Definition WsfSA_Processor.hpp:694
float altRadar_ft
Definition WsfSA_Processor.hpp:691
float ktas
Definition WsfSA_Processor.hpp:688
bool betaValid
Definition WsfSA_Processor.hpp:707
float gY
Definition WsfSA_Processor.hpp:701
bool nyValid
Definition WsfSA_Processor.hpp:710
float kcas
Definition WsfSA_Processor.hpp:687
double lon_deg
Definition WsfSA_Processor.hpp:686
bool contrailing
Definition WsfSA_Processor.hpp:704
double lat_deg
Definition WsfSA_Processor.hpp:685
float heading_deg
Definition WsfSA_Processor.hpp:697
float mach
Definition WsfSA_Processor.hpp:689
std::string pilotType
Definition WsfSA_Processor.hpp:702
float alpha_deg
Definition WsfSA_Processor.hpp:693
Definition WsfSA_Processor.hpp:69
size_t platformIndex
Definition WsfSA_Processor.hpp:71
float timeToIntercept
Definition WsfSA_Processor.hpp:77
float targetKTAS
Definition WsfSA_Processor.hpp:79
bool isValid
Definition WsfSA_Processor.hpp:70
float targetAz
Definition WsfSA_Processor.hpp:81
float rangeMax
Definition WsfSA_Processor.hpp:72
float targetEl
Definition WsfSA_Processor.hpp:82
float timeToActive
Definition WsfSA_Processor.hpp:78
float targetAspect
Definition WsfSA_Processor.hpp:80
float rangeNe
Definition WsfSA_Processor.hpp:73
float rangeMin
Definition WsfSA_Processor.hpp:74
float rangeClosureRate
Definition WsfSA_Processor.hpp:76
float rangeCurrent
Definition WsfSA_Processor.hpp:75
Definition WsfSA_Processor.hpp:770
float speedBrakeNormalized
Definition WsfSA_Processor.hpp:785
float thrustNormalized
Definition WsfSA_Processor.hpp:786
float aileronLftNormalized
Definition WsfSA_Processor.hpp:777
float aileronRgtNormalized
Definition WsfSA_Processor.hpp:776
bool aileronsValid
Definition WsfSA_Processor.hpp:789
bool flapsValid
Definition WsfSA_Processor.hpp:790
float rudderRgtNormalized
Definition WsfSA_Processor.hpp:782
bool twinRuddersValid
Definition WsfSA_Processor.hpp:791
bool throttleValid
Definition WsfSA_Processor.hpp:788
float throttleInput
Definition WsfSA_Processor.hpp:775
float flapRgtNormalized
Definition WsfSA_Processor.hpp:778
float rudderRgtInput
Definition WsfSA_Processor.hpp:773
float speedBrakeInput
Definition WsfSA_Processor.hpp:774
float stickBackInput
Definition WsfSA_Processor.hpp:772
float rudderNormalized
Definition WsfSA_Processor.hpp:784
float stickRgtInput
Definition WsfSA_Processor.hpp:771
bool singleRudderValid
Definition WsfSA_Processor.hpp:792
float flapLftNormalized
Definition WsfSA_Processor.hpp:779
float rudderLftNormalized
Definition WsfSA_Processor.hpp:783
float stabilizerLftNormalized
Definition WsfSA_Processor.hpp:781
float stabilizerRgtNormalized
Definition WsfSA_Processor.hpp:780
float landingGear
Definition WsfSA_Processor.hpp:787
Definition WsfSA_Processor.hpp:723
float fuelInternal_lbs
Definition WsfSA_Processor.hpp:724
float bingo_lbs
Definition WsfSA_Processor.hpp:730
float fuelCapExt_lbs
Definition WsfSA_Processor.hpp:727
bool fuelValid
Definition WsfSA_Processor.hpp:735
float normalizedFuelQty
Definition WsfSA_Processor.hpp:732
float grossWgt_lbs
Definition WsfSA_Processor.hpp:728
float fuelExternal_lbs
Definition WsfSA_Processor.hpp:725
float joker_lbs
Definition WsfSA_Processor.hpp:729
float fuelCapInt_lbs
Definition WsfSA_Processor.hpp:726
uint8_t numExtTanks
Definition WsfSA_Processor.hpp:733
float fuelFlow_pph
Definition WsfSA_Processor.hpp:731
bool dropTanksPresent
Definition WsfSA_Processor.hpp:734
Definition WsfSA_Processor.hpp:752
bool dataValid
Definition WsfSA_Processor.hpp:753
float distanceToWaypoint_nm
Definition WsfSA_Processor.hpp:757
uint8_t numWaypoints
Definition WsfSA_Processor.hpp:754
uint8_t currentWaypoint
Definition WsfSA_Processor.hpp:755
float timeToWaypoint_sec
Definition WsfSA_Processor.hpp:758
std::vector< SA_NavigationLatLon > waypoints
Definition WsfSA_Processor.hpp:759
float headingBug_deg
Definition WsfSA_Processor.hpp:756
Definition WsfSA_Processor.hpp:746
float lat_deg
Definition WsfSA_Processor.hpp:747
float lon_deg
Definition WsfSA_Processor.hpp:748
Definition WsfSA_Processor.hpp:862
bool latLonValid
Definition WsfSA_Processor.hpp:878
bool bearingValid
Definition WsfSA_Processor.hpp:880
std::string tgtTypeName
Definition WsfSA_Processor.hpp:876
float elevation_deg
Definition WsfSA_Processor.hpp:868
float bearing_deg
Definition WsfSA_Processor.hpp:867
double lon_deg
Definition WsfSA_Processor.hpp:865
float targetAspect_deg
Definition WsfSA_Processor.hpp:873
bool idAuxValid
Definition WsfSA_Processor.hpp:888
bool isMissile
Definition WsfSA_Processor.hpp:891
float range_nm
Definition WsfSA_Processor.hpp:869
bool targetSpeedValid
Definition WsfSA_Processor.hpp:884
bool elevationValid
Definition WsfSA_Processor.hpp:881
bool idIffValid
Definition WsfSA_Processor.hpp:887
float targetHdg_deg
Definition WsfSA_Processor.hpp:872
bool idSideValid
Definition WsfSA_Processor.hpp:889
bool targetAspectValid
Definition WsfSA_Processor.hpp:886
bool rangeValid
Definition WsfSA_Processor.hpp:882
std::string idString
Definition WsfSA_Processor.hpp:874
bool idTypeValid
Definition WsfSA_Processor.hpp:890
double lat_deg
Definition WsfSA_Processor.hpp:864
unsigned int targetPlatformIndex
Definition WsfSA_Processor.hpp:863
float altitude_ft
Definition WsfSA_Processor.hpp:866
bool rangeRateValid
Definition WsfSA_Processor.hpp:883
bool altitudeValid
Definition WsfSA_Processor.hpp:879
float targetSpeed_kts
Definition WsfSA_Processor.hpp:871
std::string tgtPlatformName
Definition WsfSA_Processor.hpp:875
bool targetHdgValid
Definition WsfSA_Processor.hpp:885
SA_Identification identification
Definition WsfSA_Processor.hpp:877
float rangeRate_kts
Definition WsfSA_Processor.hpp:870
Definition WsfSA_Processor.hpp:896
bool isMasterProcessor
Definition WsfSA_Processor.hpp:898
std::string name
Definition WsfSA_Processor.hpp:897
std::vector< SA_TrackEntryData > trackList
Definition WsfSA_Processor.hpp:899
Definition WsfSA_Processor.hpp:808
float targetKTAS
Definition WsfSA_Processor.hpp:817
float rangeMin_nm
Definition WsfSA_Processor.hpp:812
float rangeCurrent_nm
Definition WsfSA_Processor.hpp:813
float timeToActive_sec
Definition WsfSA_Processor.hpp:816
float rangeClosureRate_kts
Definition WsfSA_Processor.hpp:814
float rangeNe_nm
Definition WsfSA_Processor.hpp:811
float rangeMax_nm
Definition WsfSA_Processor.hpp:810
unsigned int targetIndex
Definition WsfSA_Processor.hpp:809
float targetAspect_deg
Definition WsfSA_Processor.hpp:818
float timeToIntercept_sec
Definition WsfSA_Processor.hpp:815
float targetAz_deg
Definition WsfSA_Processor.hpp:819
float targetEl_deg
Definition WsfSA_Processor.hpp:820
Definition WsfSA_Processor.hpp:802
uint16_t quantity
Definition WsfSA_Processor.hpp:804
std::string weaponName
Definition WsfSA_Processor.hpp:803
Definition WsfSA_Processor.hpp:824
bool supportingWeapon
Definition WsfSA_Processor.hpp:836
bool masterCaution
Definition WsfSA_Processor.hpp:838
uint8_t numChaff
Definition WsfSA_Processor.hpp:831
uint8_t numFlares
Definition WsfSA_Processor.hpp:832
bool shootCueBlink
Definition WsfSA_Processor.hpp:840
uint16_t initialNumWeapons
Definition WsfSA_Processor.hpp:829
unsigned int platformIndex
Definition WsfSA_Processor.hpp:825
std::vector< SA_WeaponEngagedTarget > engagedTargetList
Definition WsfSA_Processor.hpp:830
bool masterArmActive
Definition WsfSA_Processor.hpp:841
bool masterWarning
Definition WsfSA_Processor.hpp:837
std::string selectedWeapon
Definition WsfSA_Processor.hpp:827
std::vector< SA_WeaponNameQtyPair > weaponList
Definition WsfSA_Processor.hpp:826
uint8_t numDecoys
Definition WsfSA_Processor.hpp:833
bool jammingDetected
Definition WsfSA_Processor.hpp:842
bool shootCueActive
Definition WsfSA_Processor.hpp:839
uint16_t numSelectedWeapon
Definition WsfSA_Processor.hpp:828
bool weaponBayDoorsOpen
Definition WsfSA_Processor.hpp:835
Copyrights Multiple, All Rights Reserved